Gitlab kasutamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

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

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

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

20260613-gitlab-upgrade-03.png

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

20260613-gitlab-upgrade-01.png

kus

  • valida CE või EE
  • valida platform, nt Docker
  • valida start ja end versioonid

seejärel paistab selline vastus

20260613-gitlab-upgrade-02.png

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

20260613-gitlab-upgrade-04.png

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