Gitlab kasutamine
Sissejuhatus
TODO
Mõisted
- GitLab Community Edition (CE)
- Enterprise Edition (EE)
- migration
Tööpõhimõte
Väited
- GitLab tarkvara esineb EE ja CE kujul
- Community Editionis on osa featuure välja lülitatud, aga nö koodibaas on sama
- Versioone avaldatakse väga regulaarselt
- LTS versiooni ei ole
Versiooni numbrit väljendatakse kujul
x.y.z
- x - major
- y - minor
- z - patch
- kõige ennustatavamalt ilmuvad minor versioonid - kord kuus, nt on võimalikuid 18.0.x - 18.11.y versioonid (ja mitte 18.13.z)
- uus minor tsükkel algab alati mai kuus, st 16.0, 17.0, 18.0, 19.0 jne ilmuvad alati mai kuus
- minor tsükkel lõpeb alati aprilli kuus, st 16.11, 17.11, 18.11, 19.11 jne ilmuvad alati aprilli kuus
GitLab kasutab sisemiselt selliseid protokolle
- gRPC
Gitlab on programmeeritud selliste arendusvahendite abil
- ruby
- golang
Gitlab lahenduse moodustavad muuhulgas sellised komponendid
- postgresql
- ssh server
- redis
- gitaly
- gitlab-kas
- puma
- sidekiq
- nginx
Eposti väljumise seadistamine
Docker compose failis sobib kasutada lõiku
või konteineri sees failis lõiku
root@arendus:/# grep smtp_ /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "192.168.1.250" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "gitlab@moraal.ee" gitlab_rails['smtp_password'] = "parool" gitlab_rails['smtp_domain'] = "arendus.moraal.ee" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_pool'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none'
Konteineri sees rakenduse seadistuste kehtestamiseks sobib öelda
root@arendus:/# gitlab-ctl reconfigure
Testimiseks
root@arendus:/# gitlab-rails console
--------------------------------------------------------------------------------
Ruby: ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
GitLab: 14.4.1 (1a23d731c9f) FOSS
GitLab Shell: 13.21.1
PostgreSQL: 12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.1)
irb(main):004:0> Notify.test_email('imre@moraal.ee', 'Message Subject', 'Message Body').deliver_now
Gitlab runner
Gitlab runner https://docs.gitlab.com/runner/install/
Tööpõhimõte
TODO
Paigaldamine
Paigaldamiseks
$ cat docker-compose.yml
version: '3'
services:
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/gitlab-runner/config:/etc/gitlab-runner
restart: unless-stopped
ports:
- '8093:8093'
ning seejärel öeldakse
imre@docker:~/20221110$ docker-compose up -d
Registreerimine Gitlab'iga toimub interaktiivselt
imre@docker:~/20221110$ docker-compose exec gitlab-runner gitlab-runner register
Kasulikud lisamaterjalid
- https://docs.gitlab.com/runner/install/docker.html
- https://docs.gitlab.com/runner/register/index.html#docker
- https://techoverflow.net/2021/01/12/how-to-install-gitlab-runner-using-docker-compose/
Kasutamine
TODO
Gitlab docker compose põhise lahenduse tarkvara uuendamine
Uuendamise protseduur
lõpetada konteineri töötamine
$ docker compose stop
kirjutada docker-compose.yml faili uus image väärtus, vastavalt upgrade-path soovitusele
TODO
käivitada konteiner
$ docker compose up -d
Jälgida progressi üldiste vahenditega, nt top
$ docker compose logs -f
küsida konteneri sees
# docker-compose exec gitlab-runner gitlab-runner regis # gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining' # gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.queued.count'
Vaadata gitlab webgui pealt kontrolliks
TODO
küsida gitlab konteineri sees kontrolliks
imre@arendus:~/20211108/gitlab$ docker exec -ti ff0e01341e bash root@arendus:/# gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining' 0 root@arendus:/# gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.queued.count' 0 root@arendus:/# gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.with_status(:failed).count' 0 root@arendus:/# gitlab-rake gitlab:snippets:list_non_migrated All snippets have been successfully migrated root@arendus:/#
Kasulikud lisamaterjalid
- https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=14.7.0&distro=docker&edition=ce
- https://docs.gitlab.com/15.7/ee/update/background_migrations.html
Gitlab uuendamine
lähtepunkti määratlemine
Logides sisse gitlab rakenduse webgui peale root kasutajaga ning valides paremal all 'Admin' ning
Overview -> Dashboard
paistab nt selline pilt
kus Components all on näha muu hulgas
- gitlab lahenduse versioon - 17.11.7
- gitlab api versioon - v4
- ruby versioon
- rails versioon (ruby põhine veebinduse raamistik (framework)) - 7.0.8.7
- postgresql - 16.8
- redis 7.2.7
ettevalmistused uuendamiseks
Väited
- dockerhostil on failisüsteemis piisavalt ruumi
- uuendamise ajaks on avalik ligipääs webgui liidesele piiratud
- integratsioonide töö on peatatud - nt runnerite konteinerid on seisatud
- enne järgmise uuenduse rakendamist peab eelmine olema edukalt ära rakendatud
Veenduda, et ei ole varasemast midagi pooleli jäänud
TODO
upgrade path valimine
Gitlab lahenduse upgrade peab toimuma nn upgrade-steps täpse läbimise viisil
https://docs.gitlab.com/ -> UseGitLab -> Install -> Upgrade GitLab -> Upgrade paths -> Upgrade Path tool
Aadressil https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/ paistab selline pilt
kus
- valida CE või EE
- valida platform, nt Docker
- valida start ja end versioonid
seejärel paistab selline vastus
kus
- TODO
Uuendamine
Uuenedamiseks tuleb läbida ettevalmistused, käesolev versioon docker gitlab lahendust töötab tavalisel viisil'
$ docker compose start
muuta docker-compose.yml failis image: väärtus upgrade path eeskujul, nt kui enne oli v 17.10.4 siis on uus 17.11.7
image: 'gitlab/gitlab-ce:17.11.7-ce.0'
ning öelda
$ docker compose pull $ docker compose up -d oodata kuni on valmis (võtab nii 15 - 25 minutit)
Valmisolekust annab tunnistust, et migratsioonid toimuvad ja on lõpuks ilma vigadeta valmis saanud, nt
Admin -> Monitoring -> Background migrations
kus
- näha on veel üks toimub, selle lõpu peab ära ootama
Käsureal saab olukorda uurida nt selline väljund vastab, et kõik on edukalt ära rakendatud
imre@arendus:~/20211108/gitlab$ docker exec -ti a556 gitlab-rake gitlab:background_migrations:status | egrep -v "finished|finalized" Database: main imre@arendus:~/20211108/gitlab$
Prometheus väljalülitamine
imre@moraal:~$ diff gitlab.rb-enne gitlab.rb-parast 990c990 < # puma['exporter_enabled'] = false --- > puma['exporter_enabled'] = false 1033c1033 < # sidekiq['metrics_enabled'] = true --- > sidekiq['metrics_enabled'] = false 2040c2040 < # prometheus_monitoring['enable'] = true --- > prometheus_monitoring['enable'] = false
Kasulikud lisamaterjalid
Postgresql baasi uurimine
imre@arendus:~/20211108/gitlab$ docker exec -it ff gitlab-psql
psql (14.17)
Type "help" for help.
gitlabhq_production=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+-------------+----------+---------+---------+---------------------------------
gitlabhq_production | gitlab | UTF8 | C.UTF-8 | C.UTF-8 |
postgres | gitlab-psql | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | gitlab-psql | UTF8 | C.UTF-8 | C.UTF-8 | =c/"gitlab-psql" +
| | | | | "gitlab-psql"=CTc/"gitlab-psql"
template1 | gitlab-psql | UTF8 | C.UTF-8 | C.UTF-8 | "gitlab-psql"=CTc/"gitlab-psql"+
| | | | | =c/"gitlab-psql"
(4 rows)
Kasulikud lisamaterjalid
root@arendus:~# du -sk /srv/gitlab/data/* | sort -nr | head -n 5 102722004 /srv/gitlab/data/prometheus 3811892 /srv/gitlab/data/gitlab-rails 1318720 /srv/gitlab/data/postgresql 303560 /srv/gitlab/data/git-data 148700 /srv/gitlab/data/gitaly