GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Bidh an artaigil seo inntinneach don dà chuid luchd-dearbhaidh agus luchd-leasachaidh, ach tha e gu sònraichte airson eòlaichean fèin-ghluasaid aig a bheil duilgheadas le bhith a’ stèidheachadh GitLab CI / CD airson deuchainn amalachaidh ann an suidheachaidhean far nach eil goireasan bun-structair gu leòr agus / no às aonais orchestration container. àrd-ùrlar. Innsidh mi dhut mar a shuidhicheas tu cleachdadh àrainneachdan deuchainn le bhith a ’cleachdadh docker compose air aon ruitheadair slige GitLab agus gus nuair a bhios tu a’ cleachdadh grunn àrainneachdan, nach bi na seirbheisean a chaidh a chuir air bhog a ’cur bacadh air a chèile.


Clàr-innse

Ro-ghoireasan

  1. Anns a’ chleachdadh agam, thachair e gu tric gun deach “làimhseachadh” deuchainn amalachaidh air pròiseactan. Agus gu tric is e a’ chiad dhuilgheadas agus an duilgheadas as cudromaiche an loidhne-phìoban CI, anns a bheil deuchainn aonachaidh ga leasachadh seirbheis(ean) air a dhèanamh ann an àrainneachd dev/ìre. Dh'adhbhraich seo grunn dhuilgheadasan:

    • Mar thoradh air uireasbhaidhean ann an seirbheis sònraichte rè deuchainn amalachaidh, faodaidh an cuairteachadh deuchainn a bhith air a mhilleadh le dàta briste. Bha cùisean ann nuair a chuir iarrtas le cruth JSON briste sìos air an t-seirbheis, a dh’ fhàg an stand gu tur neo-obrachail.
    • Slaodadh a’ chuairt deuchainn mar a bhios an dàta deuchainn a’ dol am meud. Tha mi a’ smaoineachadh nach eil e ciallach eisimpleir a mhìneachadh le bhith a’ glanadh/roiligeadh air ais an stòr-dàta. Anns a 'chleachdadh agam, cha do thachair mi ri pròiseact far an deach am modh-obrach seo gu rèidh.
    • Cunnart gun cuir thu dragh air gnìomhachd a’ chuairt deuchainn nuair a thathar a’ dèanamh deuchainn air suidheachaidhean siostam coitcheann. Mar eisimpleir, cleachdaiche / buidheann / facal-faire / poileasaidh tagraidh.
    • Tha dàta deuchainn bho dheuchainnean fèin-ghluasadach a’ dèanamh beatha duilich dha luchd-dearbhaidh làimhe.

    Canaidh cuid gum bu chòir dha fèin-dheuchainnean math an dàta a ghlanadh às an dèidh fhèin. Tha argamaidean agam an aghaidh:

    • Tha ionadan dinamic gu math goireasach airson an cleachdadh.
    • Chan urrainnear a h-uile nì a thoirt air falbh bhon t-siostam tron ​​​​API. Mar eisimpleir, cha deach gairm airson rud a sguabadh às a chuir an gnìomh leis gu bheil e a’ dol an-aghaidh loidsig gnìomhachais.
    • Nuair a chruthaicheas tu nì tron ​​​​API, faodar tòrr meata-dàta a chruthachadh, rud a tha duilich a dhubhadh às.
    • Ma tha eisimeileachd aig deuchainnean eatorra fhèin, bidh am pròiseas glanadh dàta às deidh deuchainnean a ruith a’ tionndadh gu bhith na cheann goirt.
    • Gairmean a bharrachd (agus, nam bheachd-sa, nach eil reusanta) chun API.
    • Agus am prìomh argamaid: nuair a thòisicheas dàta deuchainn air a ghlanadh gu dìreach bhon stòr-dàta. Tha seo a’ tionndadh gu bhith na fhìor shiorcas PK/FK! Bidh sinn a’ cluinntinn bho luchd-leasachaidh: “Tha mi dìreach air soidhne a chuir ris / a thoirt air falbh / ath-ainmeachadh, carson a chaidh 100500 deuchainn amalachaidh a ghlacadh?”

    Nam bheachd-sa, is e àrainneachd fiùghantach am fuasgladh as fheàrr.

  2. Bidh mòran dhaoine a’ cleachdadh docker-compose gus àrainneachd deuchainn a ruith, ach is e glè bheag de dhaoine a bhios a’ cleachdadh docker-compose nuair a bhios iad a’ dèanamh deuchainn amalachaidh ann an CI/CD. Agus an seo chan eil mi a’ toirt aire do kubernetes, swarm agus àrd-ùrlaran orchestration container. Chan eil iad aig a h-uile companaidh. Bhiodh e math nam biodh docker-compose.yml uile-choitcheann.
  3. Fiù ma tha an ruitheadair QA againn fhèin, ciamar as urrainn dhuinn dèanamh cinnteach nach bi seirbheisean a thèid a chuir air bhog tro docker-compose a’ cur bacadh air a chèile?
  4. Ciamar a chruinnicheas tu logaichean de sheirbheisean deuchainneach?
  5. Ciamar a ghlanadh an runnadair?

Tha an ruitheadair GitLab agam fhìn airson na pròiseactan agam agus choinnich mi ris na ceistean sin rè leasachadh Java cliant airson DeuchainnRail. Nas mionaidiche, nuair a bhios tu a’ ruith deuchainnean amalachaidh. Gu h-ìosal bidh sinn a 'fuasgladh nan cùisean sin a' cleachdadh eisimpleirean bhon phròiseact seo.

Chun an t-susbaint

GitLab Shell Runner

Airson ruitheadair, tha mi a’ moladh inneal brìgheil Linux le 4 vCPU, 4 GB RAM, 50 GB HDD.
Tha tòrr fiosrachaidh ann mu bhith a’ stèidheachadh gitlab-runner air an eadar-lìn, mar sin goirid:

  • Log a-steach don inneal tro SSH
  • Ma tha nas lugha na 8 GB de RAM agad, tha mi a’ moladh Dèan suaip 10 GBgus nach tig am marbhadh OOM agus marbhadh ar gnìomhan air sgàth dìth RAM. Faodaidh seo tachairt nuair a thèid barrachd air 5 gnìomhan a chuir air bhog aig an aon àm. Bidh na gnìomhan a 'dol air adhart nas slaodaiche, ach gu cunbhalach.

    Eisimpleir le OOM killer

    Ma chì thu anns na logaichean gnìomh bash: line 82: 26474 Killed, an uairsin dìreach cuir an gnìomh air an ruitheadair 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

    Agus ma tha an dealbh a’ coimhead rudeigin mar seo, an uairsin cuir suaip ris no cuir RAM ris.

  • Stàlaich gitlab-ruith, docker, docker-compose, dèan.
  • A 'cur cleachdaiche ris gitlab-runner don bhuidheann docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • Clàr gitlab-ruith.
  • Fosgailte airson deasachadh /etc/gitlab-runner/config.toml agus cuir

    concurrent=20
    [[runners]]
      request_concurrency = 10

    Leigidh seo leat gnìomhan co-shìnte a ruith air aon ruitheadair. Leugh tuilleadh an seo.
    Ma tha inneal nas cumhachdaiche agad, mar eisimpleir 8 vCPU, 16 GB RAM, faodar na h-àireamhan sin a dhèanamh co-dhiù 2 uair nas motha. Ach tha e uile an urra ri dè dìreach a thèid a chuir air bhog air an ruitheadair seo agus dè an ìre.

Tha sin gu leòr.

Chun an t-susbaint

Ag ullachadh docker-compose.yml

Is e am prìomh obair docker-compose.yml uile-choitcheann, as urrainn do luchd-leasachaidh / luchd-dearbhaidh a chleachdadh an dà chuid gu h-ionadail agus ann an loidhne-phìoban CI.

An toiseach, bidh sinn a’ dèanamh ainmean seirbheis gun samhail airson CI. Is e aon de na caochladairean sònraichte ann an GitLab CI an caochladair CI_JOB_ID. Ma shònraicheas tu container_name le brìgh "service-${CI_JOB_ID:-local}", an uairsin anns a 'chùis:

  • если CI_JOB_ID nach eil air a mhìneachadh ann an caochladairean àrainneachd,
    an uairsin bidh ainm na seirbheis service-local
  • если CI_JOB_ID air a mhìneachadh ann an caochladairean àrainneachd (mar eisimpleir 123),
    an uairsin bidh ainm na seirbheis service-123

San dàrna h-àite, bidh sinn a’ cruthachadh lìonra coitcheann airson seirbheisean a chaidh a chuir air bhog. Bheir seo dhuinn aonaranachd ìre lìonra nuair a bhios sinn a’ ruith ioma àrainneachdan deuchainn.

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

Gu fìrinneach, is e seo a’ chiad cheum gu soirbheachas =)

Eisimpleir den docker-compose.yml agam le beachdan

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

Eisimpleir ruith ionadail

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

Ach chan eil a h-uile dad cho sìmplidh ri cur air bhog ann an CI.

Chun an t-susbaint

Ag ullachadh an Makefile

Bidh mi a’ cleachdadh Makefile oir tha e gu math goireasach an dà chuid airson riaghladh àrainneachd ionadail agus ann an CI. Barrachd bheachdan air-loidhne

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

Thoir sùil air

dèan 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

dèan logaichean docker

$ 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. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Chun an t-susbaint

Ag ullachadh .gitlab-ci.yml

A 'ruith deuchainnean aonachaidh

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

Mar thoradh air a leithid de ghnìomh a ruith, bidh logaichean seirbheis is deuchainn anns an eòlaire logaichean anns na stuthan. A tha gu math goireasach ma tha mearachdan ann. Bidh gach deuchainn aig an aon àm a 'sgrìobhadh a log fhèin, ach bruidhnidh mi mu dheidhinn seo air leth.

GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Chun an t-susbaint

A 'glanadh an rothaiche

Cha tèid an obair a chuir air bhog a-mhàin a rèir clàr-ama.

stages:
- clean
- build
- test

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

An uairsin, rachaibh chun phròiseact GitLab againn -> CI / CD -> Clàran -> Clàr Ùr agus cuir clàr ùr ris

GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Chun an t-susbaint

thoradh air

A’ cur air bhog 4 gnìomhan ann an GitLab CI
GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Ann an logaichean na h-obrach mu dheireadh le deuchainnean amalachaidh chì sinn soithichean bho dhiofar ghnìomhan

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 nas mionaidiche

$ 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

A h-uile gnìomh air a chrìochnachadh gu soirbheachail

Ann an artifacts gnìomh tha logaichean seirbheis is deuchainn
GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Tha coltas gu bheil a h-uile dad brèagha, ach tha nuance ann. Faodar loidhne-phìoban a chuir dheth gu làidir fhad ‘s a tha deuchainnean amalachaidh a’ ruith, agus anns an t-suidheachadh sin cha tèid stad a chuir air soithichean a ruith. Bho àm gu àm feumaidh tu an ruitheadair a ghlanadh. Gu mì-fhortanach, tha an obair airson leasachadh ann an GitLab CE fhathast ann an inbhe Open

Ach tha sinn air gnìomh a chuir air bhog a rèir clàr-ama, agus chan eil duine a’ toirmeasg dhuinn a ruith le làimh.
Rach don phròiseact againn -> CI / CD -> Clàran agus ruith an gnìomh Clean runner

GitLab Shell Runner. Cur air bhog farpaiseach de sheirbheisean deuchainn a’ cleachdadh Docker Compose

Iomlan:

  • Tha aon ruitheadair shligean againn.
  • Chan eil còmhstri sam bith eadar gnìomhan agus an àrainneachd.
  • Bidh sinn a’ ruith ghnìomhan le deuchainnean amalachaidh aig an aon àm.
  • Faodaidh tu deuchainnean amalachaidh a ruith gu h-ionadail no ann an soitheach.
  • Bidh clàran seirbheis is deuchainn air an cruinneachadh agus air an ceangal ri gnìomh na loidhne-phìoban.
  • Tha e comasach an ruitheadair a ghlanadh bho seann ìomhaighean Docker.

Is e an ùine rèiteachaidh ~ 2 uair.
Tha sin uile, gu dearbh. Bidh mi toilichte fios air ais fhaighinn.

Chun an t-susbaint

Source: www.habr.com

Cuir beachd ann