Gitlab kasutamine: erinevus redaktsioonide vahel

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
 
(ei näidata sama kasutaja 21 vahepealset redaktsiooni)
7. rida: 7. rida:
* GitLab Community Edition (CE)
* GitLab Community Edition (CE)
* Enterprise Edition (EE)
* Enterprise Edition (EE)
* migration


===Tööpõhimõte===
===Tööpõhimõte===


Gitlab kasutab sisemiselt selliseid protokolle
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
* gRPC
108. rida: 127. rida:
* https://docs.gitlab.com/runner/register/index.html#docker
* https://docs.gitlab.com/runner/register/index.html#docker
* https://techoverflow.net/2021/01/12/how-to-install-gitlab-runner-using-docker-compose/
* https://techoverflow.net/2021/01/12/how-to-install-gitlab-runner-using-docker-compose/
====Integreerimine Gitlab'i====
TODO
[[Fail:20260613-gitlab-runner-upgrade-01.png|1000px]]
ning
[[Fail:20260613-gitlab-runner-upgrade-02.png|1000px]]
====Uuendamine====
gitlab runner tarkvara asub nt aadressil https://hub.docker.com/r/gitlab/gitlab-runner
<pre>
imre@arendus:/srv/gitlab-runner/dc$ docker compose -f /srv/gitlab-runner/dc/docker-compose-gr.yml stop
</pre>
muuta image nt 18.11.3 -> 18.11.4
<pre>
imre@arendus:/srv/gitlab-runner/dc$ docker compose -f /srv/gitlab-runner/dc/docker-compose-gr.yml pull
imre@arendus:/srv/gitlab-runner/dc$ docker compose -f /srv/gitlab-runner/dc/docker-compose-gr.yml up -d
</pre>


====Kasutamine====
====Kasutamine====
160. rida: 203. rida:
</pre>
</pre>


Lisaks võib olla abi (konteiner sellest seisma ei jää, st gitlab konteiner on peaaegu nagu operatsioonisüsteem)
<pre>
root@gitlab:/# gitlab-ctl status
run: gitaly: (pid 1614) 83685s; run: log: (pid 607) 83835s
run: gitlab-kas: (pid 915) 83820s; run: log: (pid 933) 83819s
run: gitlab-workhorse: (pid 1546) 83687s; run: log: (pid 1195) 83729s
run: logrotate: (pid 27231) 1046s; run: log: (pid 532) 83847s
run: nginx: (pid 1341) 83720s; run: log: (pid 1432) 83717s
run: postgresql: (pid 616) 83831s; run: log: (pid 629) 83830s
run: puma: (pid 1055) 83744s; run: log: (pid 1073) 83741s
run: redis: (pid 535) 83844s; run: log: (pid 567) 83841s
run: registry: (pid 1581) 83686s; run: log: (pid 1254) 83725s
run: sidekiq: (pid 1114) 83738s; run: log: (pid 1129) 83737s
run: sshd: (pid 43) 83860s; run: log: (pid 42) 83860s
root@gitlab:/# gitlab-ctl stop
..
root@gitlab:/# gitlab-ctl start
...
</pre>


kus


* gitaly - git repository
* registry - tõmmiste registry


Kasulikud lisamaterjalid
Kasulikud lisamaterjalid
196. rida: 264. rida:
* uuendamise ajaks on avalik ligipääs webgui liidesele piiratud
* uuendamise ajaks on avalik ligipääs webgui liidesele piiratud
* integratsioonide töö on peatatud - nt runnerite konteinerid on seisatud
* 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====
====upgrade path valimine====
220. rida: 293. rida:


* TODO
* 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
<pre>
image: 'gitlab/gitlab-ce:17.11.7-ce.0'
</pre>
ning öelda
<pre>
$ docker compose pull
$ docker compose up -d
oodata kuni on valmis (võtab nii 15 - 25 minutit)
</pre>
Valmisolekust annab tunnistust, et migratsioonid toimuvad ja on lõpuks ilma vigadeta valmis saanud, nt
Admin -> Monitoring -> Background migrations
[[Fail:20260613-gitlab-upgrade-04.png|900px]]
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
<pre>
imre@arendus:~/20211108/gitlab$ docker exec -ti a556 gitlab-rake gitlab:background_migrations:status | egrep -v "finished|finalized"
Database: main
imre@arendus:~/20211108/gitlab$
</pre>


===Prometheus väljalülitamine===
===Prometheus väljalülitamine===
261. rida: 373. rida:
                     |            |          |        |        | =c/"gitlab-psql"
                     |            |          |        |        | =c/"gitlab-psql"
(4 rows)
(4 rows)
</pre>
===Gitlab container registry===
TODO - https://archives.docs.gitlab.com/18.11/administration/packages/container_registry/
Seadistamine
<pre>
...
services:
  web:
    image: 'gitlab/gitlab-ce:18.11.11-ce.0'
    restart: always
    hostname: 'arendus.moraal.ee'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.moraal.ee'
        # Add any other gitlab.rb configuration here, each on its own line
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
        nginx['listen_port'] = 80
        nginx['listen_https'] = false
        letsencrypt['enable'] = false
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "192.168.1.250"
        gitlab_rails['smtp_port'] = 587
        gitlab_rails['smtp_user_name'] = "git.lab@auul.pri.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'
        registry_external_url 'https://registry.moraal.ee'
        registry_nginx['listen_https'] = false
        registry_nginx['listen_port'] = 5050
    ports:
      - '8880:80'
      - '8883:443'
      - '2224:22'
      - '8850:5050'
...
</pre>
Tulemusena saab kasutada
<pre>
imreoolberg@Imres-MacBook-Air ~ % docker login registry.moraal.ee
Username: imre
Password:
Login Succeeded
imreoolberg@Imres-MacBook-Air ~ % docker logout registry.moraal.ee
Removing login credentials for registry.moraal.ee
</pre>
</pre>


===Kasulikud lisamaterjalid===
===Kasulikud lisamaterjalid===


* TODO
* [[:Gitlab runner kasutamine]]


<pre>
<pre>

Viimane redaktsioon: 18. oktoober 2026, kell 07:27

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

Integreerimine Gitlab'i

TODO

ning

Uuendamine

gitlab runner tarkvara asub nt aadressil https://hub.docker.com/r/gitlab/gitlab-runner

imre@arendus:/srv/gitlab-runner/dc$ docker compose -f /srv/gitlab-runner/dc/docker-compose-gr.yml stop

muuta image nt 18.11.3 -> 18.11.4

imre@arendus:/srv/gitlab-runner/dc$ docker compose -f /srv/gitlab-runner/dc/docker-compose-gr.yml pull
imre@arendus:/srv/gitlab-runner/dc$ docker compose -f /srv/gitlab-runner/dc/docker-compose-gr.yml up -d

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:/# 

Lisaks võib olla abi (konteiner sellest seisma ei jää, st gitlab konteiner on peaaegu nagu operatsioonisüsteem)

root@gitlab:/# gitlab-ctl status
run: gitaly: (pid 1614) 83685s; run: log: (pid 607) 83835s
run: gitlab-kas: (pid 915) 83820s; run: log: (pid 933) 83819s
run: gitlab-workhorse: (pid 1546) 83687s; run: log: (pid 1195) 83729s
run: logrotate: (pid 27231) 1046s; run: log: (pid 532) 83847s
run: nginx: (pid 1341) 83720s; run: log: (pid 1432) 83717s
run: postgresql: (pid 616) 83831s; run: log: (pid 629) 83830s
run: puma: (pid 1055) 83744s; run: log: (pid 1073) 83741s
run: redis: (pid 535) 83844s; run: log: (pid 567) 83841s
run: registry: (pid 1581) 83686s; run: log: (pid 1254) 83725s
run: sidekiq: (pid 1114) 83738s; run: log: (pid 1129) 83737s
run: sshd: (pid 43) 83860s; run: log: (pid 42) 83860s

root@gitlab:/# gitlab-ctl stop
..

root@gitlab:/# gitlab-ctl start
...

kus

  • gitaly - git repository
  • registry - tõmmiste registry

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

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)

Gitlab container registry

TODO - https://archives.docs.gitlab.com/18.11/administration/packages/container_registry/

Seadistamine

...
services:
  web:
    image: 'gitlab/gitlab-ce:18.11.11-ce.0'
    restart: always
    hostname: 'arendus.moraal.ee'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.moraal.ee'
        # Add any other gitlab.rb configuration here, each on its own line
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
        nginx['listen_port'] = 80
        nginx['listen_https'] = false
        letsencrypt['enable'] = false
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "192.168.1.250"
        gitlab_rails['smtp_port'] = 587
        gitlab_rails['smtp_user_name'] = "git.lab@auul.pri.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'
        registry_external_url 'https://registry.moraal.ee'
        registry_nginx['listen_https'] = false
        registry_nginx['listen_port'] = 5050
    ports:
      - '8880:80'
      - '8883:443'
      - '2224:22'
      - '8850:5050'
...

Tulemusena saab kasutada

imreoolberg@Imres-MacBook-Air ~ % docker login registry.moraal.ee
Username: imre
Password:
Login Succeeded
imreoolberg@Imres-MacBook-Air ~ % docker logout registry.moraal.ee
Removing login credentials for registry.moraal.ee

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