4.6 KiB
GitLab CI setups
Since not all of us can get access to gitlab freely, because of many reasons, like money or political situation, to train this skill you should install your own local instance of gitlab first. To do so you can use your own lab-server(local or vps), I preferred to use local Ubuntu lab on my PC via VirtualBox.
Recomended resources for GitLab
- 4-8 Gib of RAM
- 2 CPU cores
- 30 Gib free space (I gave to Lab about 45 Gibs)
Instalation
Make sure you have Docker installed on the server !!!
https://docs.docker.com/engine/install/ubuntu/
Make sure you've done port forwarding !!!
Machine -> Network -> Port Forwarding -> + ADD NEW -> Name: Gitlab; Protocol: TCP; Host port: 85; Guest port: 85 -> OK
Install GitLab:
sudo docker run --detach \
--hostname gitlab.local \
--publish 443:443 \
--publish 85:80 \
--publish 2223:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
Check if port 85 is being listened
sudo ss -tulpn | grep :85
Wait for a while till GitLab complete installation
Then get new password
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Copy this password and save - we'll need it very soon
Enter the system
In browser:http://localhost:85login:rootpassword:password you got
Next step is sync
First of all we need to create Personal Access Token AND SAVE IT
Your avatar(click) -> Edit Profile -> (Left sidebar) Access -> Personal access tokens -> Generate token -> Legacy token (more than enough)
I'm gonna use IDE of JetBrains(Win10):
File -> Settings -> Version Control -> GitLab- Server: http://localhost:85
- Token: token you've just got
CI/CD Setups
Since we using self-hosted GitLab instance, let's install GitLab Runner
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# make it executable
sudo chmod +x /usr/local/bin/gitlab-runner
#create user for runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
# set it as service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
Check server ip
hostname -I
Get registration token
- open project
- Settings -> CI/CD -> runners -> New project runner
- copy token
- remember gitlab url(which one you use to open gitlab in browser or use IP)
Register runner
sudo gitlab-runner register
There will be questions
Enter the GitLab instance URL: http://10.0.2.15:85 <-- insert yours IP!
Enter the registration token: [вставь токен]
Enter a description: ubuntu-runner
Enter tags: docker
Enter optional maintenance note:
Registering runner... succeeded
Enter an executor: docker
Enter the default Docker image: docker:latest
Setup config (URGENT)
sudo nano /etc/gitlab-runner/config.toml
Set it like this
concurrent = 1
check_interval = 0
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "ubuntu-runner"
url = "http://10.0.2.15:85" # <-- IP instead of localhost!
token = "glrt-..." # <-- your token - do not touch it!
executor = "docker"
clone_url = "http://10.0.2.15:85" # <-- add this line!
[runners.docker]
image = "docker:latest"
privileged = true # <-- needs for Docker-in-Docker
extra_hosts = ["gitlab.local:10.0.2.15"] # <-- if you use gitlab.local
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
Change 10.0.2.15 to your IP from hostname -I
Restart runner
sudo gitlab-runner restart
sudo gitlab-runner verify
Respond should be:
verifying runner ... is valid runner=...
In runner(Gitlab UI) allow untagged jobs
- Project -> Setting -> CI/CD -> Runners
- Find
ubuntu-runner, click Edit - Set mark in checkbox
- Save changes
Test pipeline
- in project root(IDE) create
.gitlab-ci.yml - Put this code:
hello:
stage: test
image: alpine:latest
script:
- echo "Runner works!"
- echo "GitLab CI is alive!"
Then push
git add .gtlab-ci.yml
git commit -m "test runner"
git push origin main
After that go to Ci/CD -> Pipelines -> check if green pipeline appeared
Check if all works fine
sudo gitlab-runner list
sudo journalctl -u gitlab-runner -f