GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Kab lus no yuav muaj kev txaus siab rau ob tus neeg sim thiab cov neeg tsim tawm, tab sis yog tsim los rau cov kws tshaj lij automation uas tau ntsib teeb meem ntawm kev teeb tsa GitLab CI / CD rau kev sib koom ua ke hauv cov xwm txheej ntawm cov peev txheej tsis txaus thiab / lossis tsis muaj lub thawv ntim khoom. platform. Kuv yuav qhia koj yuav ua li cas teeb tsa kev xa tawm ntawm qhov chaw sim siv docker sau ntawm ib qho GitLab plhaub khiav thiab yog li thaum siv ntau qhov chaw, cov kev pabcuam pib tsis cuam tshuam rau ib leeg.


Txheem

Yam yuavtsum tau kawm uantej

  1. Hauv kuv qhov kev coj ua, nws feem ntau tshwm sim tias kev sib koom ua ke tau "kho" ntawm cov haujlwm. Thiab feem ntau qhov teeb meem thawj zaug thiab tseem ceeb tshaj plaws yog CI pipeline, uas nyob rau hauv kev sib koom ua ke kev sim tau tsim kev pabcuam yog ua nyob rau hauv ib puag ncig dev / theem. Qhov no ua rau muaj teeb meem ntau heev:

    • Vim muaj qhov tsis xws luag hauv ib qho kev pabcuam tshwj xeeb thaum kuaj kev sib koom ua ke, qhov ntsuas hluav taws xob yuav raug puas tsuaj los ntawm cov ntaub ntawv tawg. Muaj cov xwm txheej thaum xa daim ntawv thov nrog JSON hom ntawv tawg ua rau cov kev pabcuam, uas ua rau lub chaw muag khoom tsis ua haujlwm.
    • Slowdown ntawm lub xeem Circuit Court raws li cov ntaub ntawv xeem nce. Kuv xav tias nws tsis muaj txiaj ntsig los piav qhia piv txwv nrog kev ntxuav / dov rov qab cov ntaub ntawv. Hauv kuv qhov kev coj ua, kuv tsis tau ntsib ib qhov project uas cov txheej txheem no mus tau zoo.
    • Kev pheej hmoo ntawm kev cuam tshuam kev ua haujlwm ntawm qhov ntsuas hluav taws xob thaum ntsuas qhov kev teeb tsa dav dav. Piv txwv li, user/group/password/application policy.
    • Cov ntaub ntawv ntsuam xyuas los ntawm cov kev xeem automated ua rau lub neej nyuaj rau cov neeg ntsuas phau ntawv.

    Ib txhia yuav hais tias autotests zoo yuav tsum ntxuav cov ntaub ntawv tom qab lawv tus kheej. Kuv muaj kev sib cav tawm tsam:

    • Dynamic stands yog yooj yim heev rau siv.
    • Tsis yog txhua yam khoom tuaj yeem raug tshem tawm ntawm qhov system ntawm API. Piv txwv li, kev hu kom rho tawm ib yam khoom tsis raug siv vim nws tsis sib haum xeeb kev lag luam.
    • Thaum tsim ib qho khoom siv los ntawm API, ntau qhov metadata tuaj yeem tsim tau, uas yog teeb meem rau kev rho tawm.
    • Yog tias cov kev ntsuam xyuas muaj kev vam khom ntawm lawv tus kheej, ces cov txheej txheem ntawm kev ntxuav cov ntaub ntawv tom qab kev xeem khiav dhau los ua mob taub hau.
    • Ntxiv (thiab, hauv kuv lub tswv yim, tsis raug cai) hu rau API.
    • Thiab qhov kev sib cav tseem ceeb: thaum kuaj cov ntaub ntawv pib raug tshem tawm ncaj qha los ntawm cov ntaub ntawv. Qhov no yog tig mus rau hauv PK / FK circus tiag tiag! Peb hnov ​​​​los ntawm cov neeg tsim khoom: "Kuv nyuam qhuav ntxiv / tshem tawm / hloov npe kos npe, vim li cas 100500 kev sib koom ua ke tau ntes tau?"

    Hauv kuv lub tswv yim, qhov kev daws teeb meem zoo tshaj plaws yog ib puag ncig dynamic.

  2. Ntau tus neeg siv docker-compose los khiav qhov chaw sim, tab sis ob peb tus neeg siv docker-compose thaum ua kev sib koom ua ke hauv CI / CD. Thiab ntawm no kuv tsis suav rau hauv kubernetes, swarm thiab lwm lub thawv orchestration platforms. Tsis yog txhua lub tuam txhab muaj lawv. Nws yuav zoo yog tias docker-compose.yml yog universal.
  3. Txawm hais tias peb muaj peb tus kheej QA khiav, peb yuav ua li cas kom paub tseeb tias cov kev pabcuam tau pib ntawm docker-compose tsis cuam tshuam rau ib leeg?
  4. Yuav ua li cas sau cov cav ntawm cov kev pabcuam kuaj?
  5. Yuav ua li cas ntxuav tus khiav?

Kuv muaj kuv tus kheej GitLab khiav rau kuv cov haujlwm thiab kuv tau ntsib cov lus nug no thaum lub sijhawm txhim kho Java client rau TestRail. Ntau precisely, thaum khiav cov kev xeem integration. Hauv qab no peb yuav daws cov teeb meem no siv cov piv txwv ntawm qhov project no.

Rau cov ntsiab lus

GitLab Plhaub Runner

Rau tus khiav, kuv xav kom Linux virtual tshuab nrog 4 vCPU, 4 GB RAM, 50 GB HDD.
Muaj ntau cov ntaub ntawv ntawm kev teeb tsa gitlab-khiav hauv Is Taws Nem, yog li luv luv:

  • Nkag mus rau lub tshuab ntawm SSH
  • Yog tias koj muaj tsawg dua 8 GB RAM, ces kuv pom zoo ua swap 10 GBkom tus neeg tua neeg OOM tsis tuaj thiab tua peb cov dej num vim tsis muaj RAM. Qhov no tuaj yeem tshwm sim thaum ntau tshaj 5 txoj haujlwm raug tso tawm ib txhij. Cov dej num yuav nce qeeb dua, tab sis tsis tu ncua.

    Piv txwv nrog OOM killer

    Yog tias koj pom hauv cov ntaub ntawv ua haujlwm bash: line 82: 26474 Killed, ces cia li ua rau tus khiav 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

    Thiab yog tias daim duab zoo li qhov no, ces ntxiv kev sib pauv lossis ntxiv RAM.

  • Nruab gitlab-khiav, docker, docker-compose, ua.
  • Ntxiv tus neeg siv gitlab-runner rau cov pab pawg docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • Sau npe gitlab-khiav.
  • Qhib rau kev kho /etc/gitlab-runner/config.toml thiab ntxiv

    concurrent=20
    [[runners]]
      request_concurrency = 10

    Qhov no yuav tso cai rau koj los ua haujlwm sib luag ntawm ib tus neeg khiav haujlwm. Nyeem ntxiv S, SѓS,.
    Yog tias koj muaj lub tshuab muaj zog dua, piv txwv li 8 vCPU, 16 GB RAM, ces cov lej no tuaj yeem ua tau tsawg kawg 2 zaug loj dua. Tab sis nws tag nrho yog nyob ntawm seb yuav ua li cas rau tus neeg khiav dej num no thiab qhov ntau npaum li cas.

Nws txaus.

Rau cov ntsiab lus

Npaj docker-compose.yml

Lub luag haujlwm tseem ceeb yog universal docker-compose.yml, uas cov neeg tsim khoom / cov neeg sim siv tau ob qho tib si hauv zos thiab hauv CI pipeline.

Ua ntej tshaj plaws, peb tsim cov npe kev pabcuam tshwj xeeb rau CI. Ib qho ntawm qhov sib txawv tshwj xeeb hauv GitLab CI yog qhov sib txawv CI_JOB_ID. Yog koj qhia container_name nrog lub ntsiab lus "service-${CI_JOB_ID:-local}", li cas hauv:

  • yog tias CI_JOB_ID tsis tau txhais nyob rau hauv ib puag ncig variables,
    ces lub npe kev pab yuav yog service-local
  • yog tias CI_JOB_ID txhais nyob rau hauv ib puag ncig variables (piv txwv li 123),
    ces lub npe kev pab yuav yog service-123

Qhov thib ob, peb tsim ib qho kev sib koom ua ke rau cov kev pabcuam pib. Qhov no ua rau peb muaj kev sib cais hauv qib network thaum khiav ntau qhov chaw sim.

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

Qhov tseeb, qhov no yog thawj kauj ruam rau kev vam meej =)

Piv txwv ntawm kuv docker-compose.yml nrog cov lus pom

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

Local khiav piv txwv

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

Tab sis tsis yog txhua yam yooj yim heev nrog kev tso tawm hauv CI.

Rau cov ntsiab lus

Npaj Makefile

Kuv siv Makefile vim nws yooj yim heev rau kev tswj hwm ib puag ncig hauv zos thiab hauv CI. Ntau cov lus hauv online

# У меня в проектах все вспомогательные вещи лежат в директории `.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

Txheeb xyuas

ua 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

ua 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 Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Rau cov ntsiab lus

Npaj .gitlab-ci.yml

Khiav kev xeem kev sib koom ua ke

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

Raws li kev ua haujlwm zoo li no, cov ntawv teev npe hauv cov khoom qub yuav muaj cov kev pabcuam thiab cov ntawv xeem. Uas yog yooj yim heev nyob rau hauv cov ntaub ntawv ntawm kev ua yuam kev. Txhua qhov kev xeem nyob rau hauv parallel sau nws tus kheej cav, tab sis kuv yuav tham txog qhov no nyias.

GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Rau cov ntsiab lus

Ntxuav tus khiav

Txoj haujlwm yuav raug tso tawm tsuas yog raws li lub sijhawm.

stages:
- clean
- build
- test

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

Tom ntej no, mus rau peb qhov project GitLab -> CI / CD -> Teem sijhawm -> Teem caij tshiab thiab ntxiv lub sijhawm tshiab

GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Rau cov ntsiab lus

tshwm sim

Tshaj tawm 4 txoj haujlwm hauv GitLab CI
GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Nyob rau hauv cov cav ntawm cov hauj lwm kawg nrog kev sib koom ua ke peb pom cov thawv los ntawm cov haujlwm sib txawv

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

Cov ntaub ntawv ntxaws ntxiv

$ 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

Txhua yam haujlwm ua tiav tiav

Cov khoom siv tes ua haujlwm muaj cov kev pabcuam thiab cov ntawv xeem
GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Txhua yam zoo li zoo nkauj, tab sis muaj qhov nuance. Cov kav xa dej tuaj yeem raug quab yuam-tshem tawm thaum kev sib koom ua ke kev sim ua haujlwm, nyob rau hauv rooj plaub uas cov thawv ntim yuav tsis raug tso tseg. Qee lub sij hawm koj yuav tsum tau ntxuav tus khiav. Hmoov tsis zoo, txoj haujlwm rau kev txhim kho hauv GitLab CE tseem nyob hauv txoj cai Qhib

Tab sis peb tau ntxiv qhov tshaj tawm ntawm ib txoj haujlwm raws li lub sijhawm, thiab tsis muaj leej twg txwv tsis pub peb khiav nws manually.
Mus rau peb qhov project -> CI / CD -> Teem sijhawm thiab ua haujlwm Clean runner

GitLab Plhaub Runner. Kev sib tw pib ntawm cov kev pabcuam kuaj siv Docker Compose

Tag nrho:

  • Peb muaj ib lub tshuab hluav taws xob.
  • Tsis muaj teeb meem ntawm kev ua haujlwm thiab ib puag ncig.
  • Peb khiav cov dej num nrog kev xeem sib xyaw ua ke.
  • Koj tuaj yeem khiav cov kev xeem sib xyaw hauv zos lossis hauv ib lub thawv.
  • Kev pabcuam thiab cov ntawv xeem raug sau thiab txuas nrog rau txoj haujlwm kav dej.
  • Nws muaj peev xwm los ntxuav tus khiav ntawm cov duab Docker qub.

Lub sijhawm teeb tsa yog ~ 2 teev.
Qhov ntawd yog tag nrho, ua tau. Kuv yuav zoo siab tau txais cov lus qhia.

Rau cov ntsiab lus

Tau qhov twg los: www.hab.com

Ntxiv ib saib