

How To Improve Your Software Documentation by Connecting Gitlab with Mkdocs
source link: https://hackernoon.com/how-to-improve-your-software-documentation-by-connecting-gitlab-with-mkdocs-n82o316c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

How To Improve Your Software Documentation by Connecting Gitlab with Mkdocs
















@hatembentayebhatem ben tayeb
Archlinux User | Devops engineer | Technical writer | Automation enthusiast | IaaC | CaaC | GitOps
Producing documentation may be painful and need a lot of time to write and operate. In this story, i will share with you, my way of generating docs using the devops approach. To make life easier, we will explore the art of automation š.
Letās go folks š
0 reactions
Create a Gitlab repo
This is straightforward, follow these steps:




- Log in to your GitLab
- Click new project
- Give it a name:Ā auto_docs
- Initialize it with aĀ README.mdĀ file
- Make it public or private
Now clone the project by copying the URL and run this command :




$ git clone https://gitlab.com/auto_docs.git
Setting up the environment
Iām using a Linux environment but it is possible to reproduce the same steps on a Windows machine.




In order to follow me, you need a set of tools that must be available on your machine ⦠make sure to to have python3 installed, I have python 3.8 (latest).




Creating a virtual environment
The easiest way to set up a virtual environment is to installĀ virtualenvĀ python package by executingĀ
pip install virtualenv
Ā .



Navigate to your local GitLab repository and create a new virtual environment.




$ cd auto_docs/
$ virtualenv autodocs
$ source autodocs/bin/acivate
Installing Mkdocs Material
Make sure that the virtual environment is active.




Install the mkdocs material with this command :Ā pip install mkdocs-material.




This package needs some dependencies to work .. install them by using a requirement.txt file, copy-paste the dependencies list to filenameĀ requirements.txt




Babel==2.8.0
click==7.1.1
future==0.18.2
gitdb==4.0.4
GitPython==3.1.1
htmlmin==0.1.12
Jinja2==2.11.2
joblib==0.14.1
jsmin==2.2.2
livereload==2.6.1
lunr==0.5.6
Markdown==3.2.1
MarkupSafe==1.1.1
mkdocs==1.1
mkdocs-awesome-pages-plugin==2.2.1
mkdocs-git-revision-date-localized-plugin==0.5.0
mkdocs-material==5.1.1
mkdocs-material-extensions==1.0b1
mkdocs-minify-plugin==0.3.0
nltk==3.5
Pygments==2.6.1
pymdown-extensions==7.0
pytz==2019.3
PyYAML==5.3.1
regex==2020.4.4
six==1.14.0
smmap==3.0.2
tornado==6.0.4
tqdm==4.45.0
Install them all with one command :Ā
pip install -r requirements.txt
Now itās time to create a new mkdocs project š .




Run this command :Ā mkdocs new .Ā and verify that you have this structure :




|--auto_docs
|--- docs
|--- mkdocs.yml
- TheĀ docsĀ folder contains the structure of your documentation, it contains subfolders and markdown files.
- TheĀ mkdocs.ymlĀ file defines the configuration of the generated site.
Let's test the installation by running this command :Ā
mkdocs serve
Ā . The site will be accessible onĀ http://locahost:8000Ā and you should see the initial look of the docs.



Setting up the CI/CD
letās enable le CI/CD to automate the build and the deployment of the docs. Notice that GitLab offers a feature calledĀ gitlab pagesĀ that can serve for free a static resource (HTML, js, CSS). The repo path is converted to an URL to your docs.




Create the CI/CD file
Gitlab uses a YAML file ā it holds the pipeline configuration.




The CI file content:




stages :
- build
pages:
stage: build
image:
name: squidfunk/mkdocs-material
entrypoint:
- ""
script:
- mkdocs build
- mv site public
artifacts:
paths:
- public
only:
- master
tags:
- gitlab-org-docker
This pipeline uses a docker executor with an image that contains mkdocs already installed⦠mkdocs build the project and put the build assets on a folder called site ⦠to be able to use GitLab pages you have to name your job pages and put the site assets into a new folder called public.




For tags: check the runner's section underĀ settings ā CI/CD āRunnersĀ and pick one of the shared runners that have a tagĀ GitLab-org-docker.




All things were done š š šø !




Oh ! just one thing ⦠we forgot the virtual environment files .. they are big and not needed on the pipeline ⦠they are for the local development only. The mkdocs image on the pipeline is already shipped with the necessary packages.




So ⦠create a new file called .gitignore and add these lines:




auto_docs/
requirements.txt
TheĀ auto_docsĀ folder has the same name as the virtual environment .. don't forget š ! you will be punished by pushing +100Mi š and you will wait your whole life to complete the process haha š¢.




Now runĀ git add . && git commit -m "initial commit" a && git push ⦠go to your GitLab repo and clickĀ CI/CD ā pipelines,Ā click on the blue icon and visualize the logs .. once the job succeeded, navigate toĀ settings -> pagesĀ and click the link of your new documentation site (you have to wait for 10m~ to be accessible)




Finally, I hope this was helpful! thanks for reading šŗ š!




Originally published on: https://hatembentayeb.hashnode.dev/deploying-a-dockerized-angular-app-with-github-actions-1




















Archlinux User | Devops engineer | Technical writer | Automation enthusiast | IaaC | CaaC | GitOps
Create your free account to unlock your custom reading experience.
Recommend
-
11
templates for Gitlab CI pipelines ā ci-templates documentationci-templates ci-templates - templates for Gitlab CI pip...
-
1
-
10
Connecting APRS apps to a software TNC over your network A useful feature of Direwolf is that it exposes an AGWPE port on your local network that you can connect to across your local network. I use th...
-
4
How Agile Software Development Can Improve Your Clientās Experience Saurabh Thakur April 20, 2022 Developer Tips, Tricks & Resources Agile methodologies have improved
-
4
Create Easy GraphQL API Documentation with SpectaQL and GitLab Pages Documenting an API is an important step, especially if it will be used by people outside you...
-
5
-
5
IBM Maximo Hands On Labs This is an MkDocs web site to open source the documentation for Maximo Hands On Labs. This will enable multiple contributors to help submit issues and maintain the documentation. Access the published doc he...
-
6
Building Python Project Documentation With MkDocs In this course, youāll learn how to quickly build documentation for a Python package using MkDocs and mkdocstrings
-
4
-
5
Executive Voices 2 mins read Data is the key to accelerate the p...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK