In order to create a CI/CD pipeline with gitlab built-in functionality you should firstly create the appropriate .gitlab-ci.ym
l file. This is the file on which the steps will be described for the pipeline.
This file should be placed on the root structure of the branch and every time a commit is pushed on the remote repository the steps will run. Instructions have been provided from gitlab and can be found here
For this example I chose gitlab runner as the building tool and the deployment method of a docker container.
In order to install gitlab runner as a container perform the below steps:
Download the image.
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
Create a persistent volume
docker volume create gitlab-runner-config
Stop the container if already started from previous step and run it again with the mapped volume
docker run -d --name gitlab-runner --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v gitlab-runner-config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest
You will see the container running
Register gitlab with your runner. You should get the registration token and runner url from your repository settings.
Inspect container and press gitlab-runner register
Start the runner
gitlab-runner start
The runner should have been registered on your gitlab environment
Perform a commit and push changes to your repository
The run task should have started
Check the pipeline and see its status
The job was not succesful and by checking the logs I could verify that DNS resolution could not be enstablished.
In order to fix that you should add an entry for your named gitlab container to your gitlab runner. Unfortunately there are no tools like vim, nano installed on gitlab-runner. However you can bypass this by echoing a value in your /etc/hosts file.
It is also important that your local computer can resolve by fqdn your gitlab deployment. This is necessary because docker should be able to read this entry and perform actions on it.
After those changes you will be able to run your pipeline successfully.