GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Maqaalkani wuxuu noqon doonaa mid xiiso u leh tijaabiyeyaasha iyo horumarinta labadaba, laakiin waxaa loogu talagalay inta badan khabiirada otomatiga ah ee la kulma dhibaatada samaynta GitLab CI/CD ee tijaabinta isdhexgalka ee xaaladaha ilaha kaabayaasha ku filan iyo/ama maqnaanshaha weelka madal orchestration. Waxaan kuu sheegi doonaa sida loo dejiyo geynta deegaanka tijaabada iyadoo la adeegsanayo docker ka kooban hal orodyahan GitLab ah iyo si marka la geeyo dhowr deegaan, adeegyada la bilaabay aysan faragelin midba midka kale.


Tusmo

Shuruudaha

  1. Dhaqankeyga, inta badan waxay dhacday in tijaabada isdhexgalka lagu daaweeyay mashaariicda. Badana dhibka ugu horreeya uguna muhiimsan waa dhuumaha CI, kaas oo tijaabinta isdhexgalka la horumarinayo adeega(yada) waxaa lagu fuliyaa jawi dev/stage. Tani waxay keentay dhibaatooyin dhowr ah:

    • Sababo la xiriira cilladaha adeeg gaar ah inta lagu jiro baaritaanka isdhexgalka, wareegga tijaabada waxaa laga yaabaa in ay waxyeelo gaarto xogta jaban. Waxaa jiray kiisas markii la dirayay codsi leh qaab JSON oo jaban ay burburisay adeega, kaas oo ka dhigay istaagga gabi ahaanba mid aan shaqaynayn.
    • Hoos u dhaca wareegga tijaabada marka xogta imtixaanku korodho. Waxaan u maleynayaa inaysan macno lahayn in lagu qeexo tusaale nadiifinta/dib-u-celinta xogta xogta. Dhaqankayga, lama kulmin mashruuc uu nidaamkani si habsami leh ugu socday.
    • Khatarta carqaladaynta shaqada wareegga tijaabada marka la tijaabinayo goobaha nidaamka guud. Tusaale ahaan, isticmaale/koox/password/ siyaasada codsiga.
    • Xogta tijaabada ah ee laga helay imtixaanada iswada ayaa nolosha ka dhigaya mid ku adag tijaabiyaasha gacanta.

    Qaarkood waxay dhihi doonaan autotes-yada wanaagsan waa inay nadiifiyaan xogta naftooda ka dib. Waxaan leeyahay doodo ka dhan ah:

    • Istaarooyinka firfircoon ayaa aad ugu habboon in la isticmaalo.
    • Shay kasta lagama saari karo nidaamka API-ga. Tusaale ahaan, baaq ah in la tirtiro shay lama hirgelin sababtoo ah waxay ka hor imanaysaa caqligalka ganacsiga.
    • Markaad shay ku abuurayso API-ga, tiro badan oo xog badan ah ayaa la abuuri karaa, taas oo dhibaato ku ah in la tirtiro.
    • Haddii imtixaanadu ay dhexdooda ku tiirsan yihiin, markaa habka nadiifinta xogta ka dib imtixaannada socda waxay isu beddelaan madax xanuun.
    • Wicitaan dheeri ah (iyo, ra'yigeyga, aan qiil loo helin) wicitaannada API.
    • Iyo doodda ugu weyn: marka xogta tijaabada la bilaabo in si toos ah looga nadiifiyo kaydka xogta. Tani waxay isu beddeshaa goob-wareeg PK/FK dhab ah! Waxaan ka maqalnaa horumariyeyaasha: "Waxaan hadda ku daray/saaray/beddelay calaamad, maxaa 100500 imtixaan is-dhexgal ah loo qabtay?"

    Fikradayda, xalka ugu fiican waa jawi firfircoon.

  2. Dad badan ayaa isticmaala docker-compose si ay u socodsiiyaan jawi tijaabo ah, laakiin dad yar ayaa adeegsada docker-compose marka ay samaynayaan tijaabada isdhexgalka CI/CD. Oo halkan anigu kuma xisaabtamayo kubernetes, raxan iyo meelaha kale ee weelka lagu sameeyo. Shirkad kastaa ma haysato iyaga. Way fiicnaan lahayd haddii docker-compose.yml uu ahaa mid caalami ah.
  3. Xataa haddii aan leenahay orodyahankayaga QA-ga, sideen ku hubin karnaa in adeegyada lagu bilaabay docker-compose aysan midba midka kale faragelin?
  4. Sidee loo ururiyaa diiwaannada adeegyada la tijaabiyay?
  5. Sidee loo nadiifiyaa orodyahanka?

Waxaan u leeyahay orodyahan GitLab u gaar ah mashaariicdayda waxaanan la kulmay su'aalahan intii lagu jiray horumarka Macmiilka Java si ay u Tijaabada Tareenka. Si aad u saxan, marka la wado imtixaanada isdhexgalka. Hoos waxaan ku xallin doonaa arrimahan anagoo adeegsanayna tusaalooyin mashruucan.

Ujeedada

GitLab Shell Runner

Orodyahanka, waxaan kula talinayaa mashiinka farsamada gacanta ee Linux oo leh 4 vCPU, 4 GB RAM, 50 GB HDD.
Waxaa jira macluumaad badan oo ku saabsan samaynta gitlab-runner ee internetka, si kooban:

  • Ka soo gal mashiinka adigoo isticmaalaya SSH
  • Haddii aad haysato wax ka yar 8 GB RAM, markaa waxaan ku talinayaa samee isdhaafsi 10 GBsi aanu dilaaga OOM u iman oo aanu u dilin hawlaheenna RAM la'aanta awgeed. Tani waxay dhici kartaa marka in ka badan 5 hawlood la bilaabo isku mar. Shaqadu waxay u socon doonaan si tartiib tartiib ah, laakiin si joogto ah.

    Tusaale la socda dilaaga OOM

    Haddii aad ku aragto diiwaanka hawsha bash: line 82: 26474 Killed, ka dibna kaliya ku fuli orodyahanka sudo dmesg | grep 26474

    [26474]  1002 26474  1061935   123806     339        0             0 java
    Out of memory: Kill process 26474 (java) score 127 or sacrifice child
    Killed process 26474 (java) total-vm:4247740kB, anon-rss:495224kB, file-rss:0kB, shmem-rss:0kB

    Oo haddii sawirku u eg yahay wax sidan oo kale ah, ka dibna ku dar isku beddelasho ama ku dar RAM.

  • Ku rakib gitlab-orodyahan, docker, docker-compose, samee.
  • Ku darida isticmaale gitlab-runner kooxda docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • Is diwaangeli gitlab-orodyahan.
  • U furan tafatirka /etc/gitlab-runner/config.toml kuna dar

    concurrent=20
    [[runners]]
      request_concurrency = 10

    Tani waxay kuu ogolaanaysaa inaad ku socodsiiso hawlaha barbar socda hal orodyahan. Akhri wax dheeraad ah halkan.
    Haddii aad haysato mishiin ka xoog badan, tusaale ahaan 8 vCPU, 16 GB RAM, markaa tirooyinkan waxaa la samayn karaa ugu yaraan 2 jeer ka weyn. Laakiin wax walba waxay ku xiran yihiin waxa dhabta ah ee lagu bilaabi doono orodyahanka iyo inta uu le'eg yahay.

Waa ku filan tahay.

Ujeedada

Diyaarinta docker-compose.yml

Hawsha ugu muhiimsan waa docker-compose.yml universal, kaas oo horumariyayaashu/tijaabiyayaasha ay isticmaali karaan labadaba gudaha iyo dhuumaha CI.

Marka hore, waxaan u samaynaa magacyo adeeg oo gaar ah CI. Mid ka mid ah doorsoomayaasha gaarka ah ee GitLab CI waa doorsoomayaasha CI_JOB_ID. Haddii aad sheegto container_name macne leh "service-${CI_JOB_ID:-local}", ka dibna kiiska:

  • haddii CI_JOB_ID aan lagu qeexin doorsoomayaasha deegaanka,
    markaas magaca adeeggu wuxuu noqonayaa service-local
  • haddii CI_JOB_ID lagu qeexay doorsoomayaasha deegaanka (tusaale 123),
    markaas magaca adeeggu wuxuu noqonayaa service-123

Marka labaad, waxaan abuurnaa shabakad guud oo loogu talagalay adeegyada la bilaabay. Tani waxay ina siinaysaa go'doomin heer-shabakad ah marka aan wadno jawi tijaabo oo badan.

networks:
  default:
    external:
      name: service-network-${CI_JOB_ID:-local}

Dhab ahaantii, tani waa tallaabada ugu horreysa ee guusha =)

Tusaale ahaan docker-compose.yml oo leh faallooyin

version: "3"

# Для корректной работы web (php) и fmt нужно, 
# чтобы контейнеры имели общий исполняемый контент.
# В нашем случае, это директория /var/www/testrail
volumes:
  static-content:

# Изолируем окружение на сетевом уровне
networks:
  default:
    external:
      name: testrail-network-${CI_JOB_ID:-local}

services:
  db:
    image: mysql:5.7.22
    # Каждый container_name содержит ${CI_JOB_ID:-local}
    container_name: "testrail-mysql-${CI_JOB_ID:-local}"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: mydb
      MYSQL_ROOT_PASSWORD: 1234
      SKIP_GRANT_TABLES: 1
      SKIP_NETWORKING: 1
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
    - default

  migration:
    image: registry.gitlab.com/touchbit/image/testrail/migration:latest
    container_name: "testrail-migration-${CI_JOB_ID:-local}"
    links:
    - db
    depends_on:
    - db
    networks:
    - default

  fpm:
    image: registry.gitlab.com/touchbit/image/testrail/fpm:latest
    container_name: "testrail-fpm-${CI_JOB_ID:-local}"
    volumes:
    - static-content:/var/www/testrail
    links:
    - db
    networks:
    - default

  web:
    image: registry.gitlab.com/touchbit/image/testrail/web:latest
    container_name: "testrail-web-${CI_JOB_ID:-local}"
    # Если переменные TR_HTTP_PORT или TR_HTTPS_PORTS не определены,
    # то сервис поднимается на 80 и 443 порту соответственно.
    ports:
      - ${TR_HTTP_PORT:-80}:80
      - ${TR_HTTPS_PORT:-443}:443
    volumes:
      - static-content:/var/www/testrail
    links:
      - db
      - fpm
    networks:
      - default

Tusaalaha orodka maxalliga ah

docker-compose -f docker-compose.yml up -d
Starting   testrail-mysql-local     ... done
Starting   testrail-migration-local ... done
Starting   testrail-fpm-local       ... done
Recreating testrail-web-local       ... done

Laakiin wax walba maahan kuwo fudud marka la bilaabayo CI.

Ujeedada

Diyaarinta Makefile-ka

Waxaan isticmaalaa Makefile sababtoo ah aad bay ugu habboon tahay maareynta deegaanka deegaanka iyo CI labadaba. Faallooyin badan oo online ah

# У меня в проектах все вспомогательные вещи лежат в директории `.indirect`,
# в том числе и `docker-compose.yml`

# Использовать bash с опцией pipefail 
# pipefail - фейлит выполнение пайпа, если команда выполнилась с ошибкой
SHELL=/bin/bash -o pipefail

# Останавливаем контейнеры и удаляем сеть
docker-kill:
    docker-compose -f $${CI_JOB_ID:-.indirect}/docker-compose.yml kill
    docker network rm network-$${CI_JOB_ID:-testrail} || true

# Предварительно выполняем docker-kill 
docker-up: docker-kill
    # Создаем сеть для окружения 
    docker network create network-$${CI_JOB_ID:-testrail}
    # Забираем последние образы из docker-registry
    docker-compose -f $${CI_JOB_ID:-.indirect}/docker-compose.yml pull
    # Запускаем окружение
    # force-recreate - принудительное пересоздание контейнеров
    # renew-anon-volumes - не использовать volumes предыдущих контейнеров
    docker-compose -f $${CI_JOB_ID:-.indirect}/docker-compose.yml up --force-recreate --renew-anon-volumes -d
    # Ну и, на всякий случай, вывести что там у нас в принципе запущено на машинке
    docker ps

# Коллектим логи сервисов
docker-logs:
    mkdir ./logs || true
    docker logs testrail-web-$${CI_JOB_ID:-local}       >& logs/testrail-web.log
    docker logs testrail-fpm-$${CI_JOB_ID:-local}       >& logs/testrail-fpm.log
    docker logs testrail-migration-$${CI_JOB_ID:-local} >& logs/testrail-migration.log
    docker logs testrail-mysql-$${CI_JOB_ID:-local}     >& logs/testrail-mysql.log

# Очистка раннера
docker-clean:
    @echo Останавливаем все testrail-контейнеры
    docker kill $$(docker ps --filter=name=testrail -q) || true
    @echo Очистка докер контейнеров
    docker rm -f $$(docker ps -a -f --filter=name=testrail status=exited -q) || true
    @echo Очистка dangling образов
    docker rmi -f $$(docker images -f "dangling=true" -q) || true
    @echo Очистка testrail образов
    docker rmi -f $$(docker images --filter=reference='registry.gitlab.com/touchbit/image/testrail/*' -q) || true
    @echo Очистка всех неиспользуемых volume
    docker volume rm -f $$(docker volume ls -q) || true
    @echo Очистка всех testrail сетей
    docker network rm $(docker network ls --filter=name=testrail -q) || true
    docker ps

Hubi

samaynta docker-up

$ make docker-up 
docker-compose -f ${CI_JOB_ID:-.indirect}/docker-compose.yml kill
Killing testrail-web-local   ... done
Killing testrail-fpm-local   ... done
Killing testrail-mysql-local ... done
docker network rm network-${CI_JOB_ID:-testrail} || true
network-testrail
docker network create network-${CI_JOB_ID:-testrail}
d2ec063324081c8bbc1b08fd92242c2ea59d70cf4025fab8efcbc5c6360f083f
docker-compose -f ${CI_JOB_ID:-.indirect}/docker-compose.yml pull
Pulling db        ... done
Pulling migration ... done
Pulling fpm       ... done
Pulling web       ... done
docker-compose -f ${CI_JOB_ID:-.indirect}/docker-compose.yml up --force-recreate --renew-anon-volumes -d
Recreating testrail-mysql-local ... done
Recreating testrail-fpm-local       ... done
Recreating testrail-migration-local ... done
Recreating testrail-web-local       ... done
docker ps
CONTAINER ID  PORTS                                     NAMES
a845d3cb0e5a  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp  testrail-web-local
19d8ef001398  9000/tcp                                  testrail-fpm-local
e28840a2369c  3306/tcp, 33060/tcp                       testrail-migration-local
0e7900c23f37  3306/tcp                                  testrail-mysql-local

samee docker-logs

$ make docker-logs
mkdir ./logs || true
mkdir: cannot create directory ‘./logs’: File exists
docker logs testrail-web-${CI_JOB_ID:-local}       >& logs/testrail-web.log
docker logs testrail-fpm-${CI_JOB_ID:-local}       >& logs/testrail-fpm.log
docker logs testrail-migration-${CI_JOB_ID:-local} >& logs/testrail-migration.log
docker logs testrail-mysql-${CI_JOB_ID:-local}     >& logs/testrail-mysql.log

GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Ujeedada

Diyaarinta .gitlab-ci.yml

Imtixaanada isdhexgalka oo socda

Integration:
  stage: test
  tags:
    - my-shell-runner
  before_script:
    # Аутентифицируемся в registry
    - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
    # Генерируем псевдоуникальные TR_HTTP_PORT и TR_HTTPS_PORT
    - export TR_HTTP_PORT=$(shuf -i10000-60000 -n1)
    - export TR_HTTPS_PORT=$(shuf -i10000-60000 -n1)
    # создаем директорию с идентификатором задачи
    - mkdir ${CI_JOB_ID}
    # копируем в созданную директорию наш docker-compose.yml
    # чтобы контекст был разный для каждой задачи
    - cp .indirect/docker-compose.yml ${CI_JOB_ID}/docker-compose.yml
  script:
    # поднимаем наше окружение
    - make docker-up
    # запускаем тесты исполняемым jar (у меня так)
    - java -jar itest.jar --http-port ${TR_HTTP_PORT} --https-port ${TR_HTTPS_PORT}
    # или в контейнере
    - docker run --network=testrail-network-${CI_JOB_ID:-local} --rm itest
  after_script:
    # собираем логи
    - make docker-logs
    # останавливаем окружение
    - make docker-kill
  artifacts:
    # сохраняем логи
    when: always
    paths:
      - logs
    expire_in: 30 days

Natiijadu tahay socodsiinta hawshan oo kale, buugga diiwaanka ee farshaxanku waxa uu ka koobnaan doonaa adeeg iyo diiwaanno tijaabo ah. Kaas oo aad ugu habboon haddii ay dhacdo khaladaad. Imtixaan kasta oo barbar socda wuxuu qorayaa log u gaar ah, laakiin tan waxaan uga hadli doonaa si gaar ah.

GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Ujeedada

Nadiifinta orodyahanka

Hawsha waxaa lagu bilaabi doonaa oo kaliya si waafaqsan jadwal.

stages:
- clean
- build
- test

Clean runner:
  stage: clean
  only:
    - schedules
  tags:
    - my-shell-runner
  script:
    - make docker-clean

Marka xigta, aad mashruucayada GitLab -> CI/CD -> Jadwalka -> Jadwal cusub oo ku dar jadwal cusub

GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Ujeedada

natiijada

Ka bilaabaya 4 hawlood gudaha GitLab CI
GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Diiwaanka hawsha ugu dambeysa ee imtixaanada isdhexgalka waxaan ku aragnaa weelal ka yimid hawlo kala duwan

CONTAINER ID  NAMES
c6b76f9135ed  testrail-web-204645172
01d303262d8e  testrail-fpm-204645172
2cdab1edbf6a  testrail-migration-204645172
826aaf7c0a29  testrail-mysql-204645172
6dbb3fae0322  testrail-web-204645084
3540f8d448ce  testrail-fpm-204645084
70fea72aa10d  testrail-mysql-204645084
d8aa24b2892d  testrail-web-204644881
6d4ccd910fad  testrail-fpm-204644881
685d8023a3ec  testrail-mysql-204644881
1cdfc692003a  testrail-web-204644793
6f26dfb2683e  testrail-fpm-204644793
029e16b26201  testrail-mysql-204644793
c10443222ac6  testrail-web-204567103
04339229397e  testrail-fpm-204567103
6ae0accab28d  testrail-mysql-204567103
b66b60d79e43  testrail-web-204553690
033b1f46afa9  testrail-fpm-204553690
a8879c5ef941  testrail-mysql-204553690
069954ba6010  testrail-web-204553539
ed6b17d911a5  testrail-fpm-204553539
1a1eed057ea0  testrail-mysql-204553539

Log faahfaahsan oo dheeraad ah

$ docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/gitlab-runner/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
$ export TR_HTTP_PORT=$(shuf -i10000-60000 -n1)
$ export TR_HTTPS_PORT=$(shuf -i10000-60000 -n1)
$ mkdir ${CI_JOB_ID}
$ cp .indirect/docker-compose.yml ${CI_JOB_ID}/docker-compose.yml
$ make docker-up
docker-compose -f ${CI_JOB_ID:-.indirect}/docker-compose.yml kill
docker network rm testrail-network-${CI_JOB_ID:-local} || true
Error: No such network: testrail-network-204645172
docker network create testrail-network-${CI_JOB_ID:-local}
0a59552b4464b8ab484de6ae5054f3d5752902910bacb0a7b5eca698766d0331
docker-compose -f ${CI_JOB_ID:-.indirect}/docker-compose.yml pull
Pulling web       ... done
Pulling fpm       ... done
Pulling migration ... done
Pulling db        ... done
docker-compose -f ${CI_JOB_ID:-.indirect}/docker-compose.yml up --force-recreate --renew-anon-volumes -d
Creating volume "204645172_static-content" with default driver
Creating testrail-mysql-204645172 ... 
Creating testrail-mysql-204645172 ... done
Creating testrail-migration-204645172 ... done
Creating testrail-fpm-204645172       ... done
Creating testrail-web-204645172       ... done
docker ps
CONTAINER ID        IMAGE                                                          COMMAND                  CREATED              STATUS              PORTS                                           NAMES
c6b76f9135ed        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   13 seconds ago       Up 1 second         0.0.0.0:51148->80/tcp, 0.0.0.0:25426->443/tcp   testrail-web-204645172
01d303262d8e        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   16 seconds ago       Up 13 seconds       9000/tcp                                        testrail-fpm-204645172
2cdab1edbf6a        registry.gitlab.com/touchbit/image/testrail/migration:latest   "docker-entrypoint.s…"   16 seconds ago       Up 13 seconds       3306/tcp, 33060/tcp                             testrail-migration-204645172
826aaf7c0a29        mysql:5.7.22                                                   "docker-entrypoint.s…"   18 seconds ago       Up 16 seconds       3306/tcp                                        testrail-mysql-204645172
6dbb3fae0322        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   36 seconds ago       Up 22 seconds       0.0.0.0:44202->80/tcp, 0.0.0.0:20151->443/tcp   testrail-web-204645084
3540f8d448ce        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   38 seconds ago       Up 35 seconds       9000/tcp                                        testrail-fpm-204645084
70fea72aa10d        mysql:5.7.22                                                   "docker-entrypoint.s…"   40 seconds ago       Up 37 seconds       3306/tcp                                        testrail-mysql-204645084
d8aa24b2892d        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   About a minute ago   Up 53 seconds       0.0.0.0:31103->80/tcp, 0.0.0.0:43872->443/tcp   testrail-web-204644881
6d4ccd910fad        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   About a minute ago   Up About a minute   9000/tcp                                        testrail-fpm-204644881
685d8023a3ec        mysql:5.7.22                                                   "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                                        testrail-mysql-204644881
1cdfc692003a        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:44752->80/tcp, 0.0.0.0:23540->443/tcp   testrail-web-204644793
6f26dfb2683e        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   About a minute ago   Up About a minute   9000/tcp                                        testrail-fpm-204644793
029e16b26201        mysql:5.7.22                                                   "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                                        testrail-mysql-204644793
c10443222ac6        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   5 hours ago          Up 5 hours          0.0.0.0:57123->80/tcp, 0.0.0.0:31657->443/tcp   testrail-web-204567103
04339229397e        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   5 hours ago          Up 5 hours          9000/tcp                                        testrail-fpm-204567103
6ae0accab28d        mysql:5.7.22                                                   "docker-entrypoint.s…"   5 hours ago          Up 5 hours          3306/tcp                                        testrail-mysql-204567103
b66b60d79e43        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   5 hours ago          Up 5 hours          0.0.0.0:56321->80/tcp, 0.0.0.0:58749->443/tcp   testrail-web-204553690
033b1f46afa9        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   5 hours ago          Up 5 hours          9000/tcp                                        testrail-fpm-204553690
a8879c5ef941        mysql:5.7.22                                                   "docker-entrypoint.s…"   5 hours ago          Up 5 hours          3306/tcp                                        testrail-mysql-204553690
069954ba6010        registry.gitlab.com/touchbit/image/testrail/web:latest         "nginx -g 'daemon of…"   5 hours ago          Up 5 hours          0.0.0.0:32869->80/tcp, 0.0.0.0:16066->443/tcp   testrail-web-204553539
ed6b17d911a5        registry.gitlab.com/touchbit/image/testrail/fpm:latest         "docker-php-entrypoi…"   5 hours ago          Up 5 hours          9000/tcp                                        testrail-fpm-204553539
1a1eed057ea0        mysql:5.7.22                                                   "docker-entrypoint.s…"   5 hours ago          Up 5 hours          3306/tcp                                        testrail-mysql-204553539

Dhammaan hawlihii si guul leh ayey u dhammaadeen

Farshaxanada hawsha waxay ka kooban yihiin adeeg iyo qoraallo tijaabo ah
GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Wax walba waxay u muuqdaan kuwo qurux badan, laakiin waxaa jira nuance. Dhuumaha waa la tirtiri karaa si xoog ah inta ay socdaan tijaabooyinka isdhexgalka, markaas oo weelasha socda aan la joojin doonin. Waqti ka waqti waxaad u baahan tahay inaad nadiifiso orodyahanka. Nasiib darro, hawsha hagaajinta ee GitLab CE wali waxay ku jirtaa xaalad Open

Laakin waxa aanu ku darnay in hawsha la bilaabayo si jadwal ah, mana jirto cid noo diidaysa in aan gacanta ku wadno.
Tag mashruucayaga -> CI/CD -> Jadwalka oo socodsii hawsha Clean runner

GitLab Shell Runner. Bilaabidda tartan ee adeegyada la tijaabiyay iyadoo la adeegsanayo Docker Compose

Wadarta:

  • Waxaan leenahay hal orodyahan qolof ah.
  • Ma jiraan wax khilaaf ah oo u dhexeeya hawlaha iyo deegaanka.
  • Waxaanu wadnaa hawlo leh imtixaanada la qabsiga si barbar socda.
  • Waxaad samayn kartaa imtixaanada la qabsiga gudaha ama weel.
  • Adeegga iyo diiwaannada tijaabada ayaa la ururiyaa oo lagu dhejiyaa hawsha dhuumaha.
  • Waa suurtogal in laga nadiifiyo orodyahanka sawiradii hore ee Docker.

Waqtiga dejinta waa ~ 2 saacadood.
Taasi waa dhan, dhab ahaantii. Waan ku farxi doonaa inaan helo jawaab celin.

Ujeedada

Source: www.habr.com

Add a comment