د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

دا مقاله به د ازموینو او پراختیا کونکو دواړو لپاره علاقه ولري ، مګر په عمده ډول د اتومات متخصصینو لپاره دی چې د ناکافي زیربنایی سرچینو او / یا د کانټینر نشتوالي کې د ادغام ازموینې لپاره د GitLab CI/CD تنظیم کولو ستونزې سره مخ دي. د اورکسټریشن پلیټ فارم. زه به تاسو ته ووایم چې څنګه په یو واحد GitLab شیل رنر کې د ډاکر کمپوز په کارولو سره د ازموینې چاپیریالونو ګمارل تنظیم کړئ او دا چې کله د ډیری چاپیریالونو ځای په ځای کول ، پیل شوي خدمات یو بل سره مداخله نه کوي.


منځپانګې

اړتیاوې

  1. زما په عمل کې، دا ډیری وختونه پیښ شوي چې د ادغام ازموینې په پروژو کې "درملنه" شوې. او ډیری وختونه لومړی او خورا مهم ستونزه د CI پایپ لاین دی ، په کوم کې چې د ادغام ازموینه وده کوي خدمتونه په dev/stage چاپیریال کې ترسره کیږي. دا یو څو ستونزې رامینځته کوي:

    • د ادغام ازموینې پرمهال په ځانګړي خدمت کې د نیمګړتیاو له امله ، د ازموینې سرکټ ممکن د مات شوي ډیټا لخوا زیانمن شي. داسې قضیې شتون درلود کله چې د مات شوي JSON ب formatې سره د غوښتنې لیږلو خدمت تخریب کړ ، کوم چې سټینډ په بشپړ ډول غیر فعال کړی.
    • د ټیسټ سرکټ ورو کول لکه څنګه چې د ازموینې ډیټا ډیریږي. زما په اند دا هیڅ معنی نلري چې د ډیټابیس پاکولو / بیرته راګرځولو سره د مثال تشریح کول. زما په عمل کې، ما د یوې پروژې سره مخ نه دی کړی چیرې چې دا کړنلاره په اسانۍ سره روانه وي.
    • د عمومي سیسټم تنظیماتو ازموینې پرمهال د ازموینې سرکټ فعالیت ګډوډ کولو خطر شتون لري. د مثال په توګه، د کارن/ډله/پاسورډ/د غوښتنلیک پالیسي.
    • د اتوماتیک ازموینو څخه د ازموینې ډیټا د لاسي ټیسټ کونکو لپاره ژوند ستونزمن کوي.

    ځینې ​​به ووایي چې ښه آټوټیسټ باید د ځان څخه وروسته ډاټا پاک کړي. زه پر ضد دلیل لرم:

    • متحرک سټینډونه د کارولو لپاره خورا اسانه دي.
    • هر څیز د API له لارې له سیسټم څخه نشي ایستل کیدی. د مثال په توګه، د یو شی د حذف کولو غوښتنه نه وه پلي شوې ځکه چې دا د سوداګرۍ منطق سره مخالفت کوي.
    • کله چې د API له لارې یو شی رامینځته کړئ ، د میټاډاټا لوی مقدار رامینځته کیدی شي ، کوم چې حذف کول ستونزمن دي.
    • که چیرې ازموینې په خپل مینځ کې انحصار ولري ، نو بیا د ازموینو چلولو وروسته د معلوماتو پاکولو پروسه په سر درد بدلیږي.
    • اضافي (او، زما په نظر، نه توجیه شوي) API ته زنګ وهي.
    • او اصلي دلیل: کله چې د ازموینې ډاټا په مستقیم ډول د ډیټابیس څخه پاکول پیل شي. دا په ریښتیني PK/FK سرکس بدلیږي! موږ د پراختیا کونکو څخه اورو: "ما یوازې یوه نښه اضافه کړه / لیرې کړه / نوم یې بدل کړ، ولې د 100500 ادغام ازموینې ونیول شوې؟"

    زما په اند، ترټولو غوره حل یو متحرک چاپیریال دی.

  2. ډیری خلک د ازموینې چاپیریال چلولو لپاره ډاکر - کمپوز کاروي ، مګر لږ خلک په CI/CD کې د ادغام ازموینې ترسره کولو پر مهال ډاکر - کمپوز کاروي. او دلته زه kubernetes، swarm او نورو کانټینر آرکیسټریشن پلیټ فارمونه په پام کې نه نیسم. هر شرکت دوی نلري. دا به ښه وي که docker-compose.yml نړیوال و.
  3. حتی که موږ خپل د QA رنر ولرو، موږ څنګه کولی شو ډاډ ترلاسه کړو چې د ډاکر - کمپوز له لارې پیل شوي خدمتونه د یو بل سره مداخله نه کوي؟
  4. څنګه د ازمول شویو خدماتو لاګ راټول کړئ؟
  5. رنر څنګه پاک کړو؟

زه د خپلو پروژو لپاره زما د ګیټ لیب چلونکی لرم او زه د پراختیا پرمهال له دې پوښتنو سره مخ شوم جاوا مراجعه لپاره ټیسټ ریل. په دقیق ډول، کله چې د ادغام ازموینې پرمخ وړئ. لاندې به موږ د دې پروژې د مثالونو په کارولو سره دا مسلې حل کړو.

مینځپانګې ته

د GitLab شیل رنر

د منډې وهونکي لپاره ، زه د 4 vCPU ، 4 GB رام ، 50 GB HDD سره د لینکس مجازی ماشین وړاندیز کوم.
په انټرنیټ کې د gitlab-runner د تنظیم کولو په اړه ډیر معلومات شتون لري، نو په لنډ ډول:

  • ماشین ته د SSH له لارې ننوتل
  • که تاسو د 8 GB څخه کم رام لرئ، نو زه وړاندیز کوم 10 GB بدل کړئد دې لپاره چې د OOM وژونکی راشي او د رام نشتوالي له امله زموږ دندې وژني. دا پیښ کیدی شي کله چې له 5 څخه ډیر دندې په ورته وخت کې پیل شي. کارونه به ډیر ورو، مګر په ثابت ډول پرمخ ځي.

    د OOM قاتل سره مثال

    که تاسو د کاري لاګونو کې وګورئ bash: line 82: 26474 Killed، بیا یوازې په رنر اجرا کړئ 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

    او که انځور داسې ښکاري، نو بیا یا بدل کړئ یا رام اضافه کړئ.

  • ولګوه gitlab-رنر, ډاکر, ډاکر - بڼه، جوړ کړئ.
  • یو کارن اضافه کول gitlab-runner ډلې ته docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • راجستر gitlab-رنر.
  • د ترمیم لپاره خلاص کړئ /etc/gitlab-runner/config.toml او اضافه کړئ

    concurrent=20
    [[runners]]
      request_concurrency = 10

    دا به تاسو ته اجازه درکړي چې په یو رنر کې موازي دندې پرمخ بوځي. نور یی ولوله دلته.
    که تاسو ډیر پیاوړی ماشین لرئ، د بیلګې په توګه 8 vCPU، 16 GB RAM، نو دا شمیرې لږترلږه 2 ځله لوی کیدی شي. مګر دا ټول پدې پورې اړه لري چې واقعیا به پدې رنر کې څه شی او په کوم مقدار کې پیل شي.

بس دی.

مینځپانګې ته

د docker-compose.yml چمتو کول

اصلي دنده یو نړیوال ډاکر-compose.yml دی، کوم چې پراختیا کونکي / ازموونکي کولی شي دواړه په محلي او CI پایپ لاین کې وکاروي.

لومړی، موږ د CI لپاره ځانګړي خدمت نومونه جوړوو. په GitLab CI کې یو له ځانګړي متغیرونو څخه متغیر دی CI_JOB_ID. که تاسو مشخص کړئ container_name د معنی سره "service-${CI_JOB_ID:-local}"، بیا په قضیه کې:

  • که CI_JOB_ID د چاپیریال په تغیراتو کې نه تعریف شوی،
    بیا به د خدمت نوم وي service-local
  • که CI_JOB_ID د چاپیریال متغیرونو کې تعریف شوی (د مثال په توګه 123)،
    بیا به د خدمت نوم وي service-123

دوهم، موږ د پیل شوي خدماتو لپاره یو عام شبکه جوړوو. دا موږ ته د شبکې په کچه انزوا راکوي کله چې د ډیری ازموینې چاپیریال چلوي.

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

په حقیقت کې، دا د بریالیتوب لومړی ګام دی =)

د تبصرو سره زما د docker-compose.yml مثال

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

د محلي چلولو مثال

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

مګر هرڅه په CI کې پیل کولو سره دومره ساده ندي.

مینځپانګې ته

د میک فایل چمتو کول

زه میکفایل کاروم ځکه چې دا د ځایی چاپیریال مدیریت او CI کې دواړه خورا اسانه دي. نور آنلاین نظرونه

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

چک کول

ډاکر اپ جوړ کړئ

$ 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

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 شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

مینځپانګې ته

چمتو کول .gitlab-ci.yml

د ادغام ازموینې چلول

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

د داسې یوې دندې د چلولو په پایله کې، په آثارو کې د لاګ لارښود به خدمت او د ازموینې لاګونه ولري. کوم چې د غلطیو په صورت کې خورا اسانه دی. هر ازموینه په موازي ډول خپل لاګ لیکي، مګر زه به په جلا توګه په دې اړه خبرې وکړم.

د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

مینځپانګې ته

د رنر پاکول

دنده به یوازې د مهال ویش سره سم پیل شي.

stages:
- clean
- build
- test

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

بیا، زموږ د GitLab پروژې ته لاړ شئ -> CI/CD -> مهال ویش -> نوی مهالویش او نوی مهالویش اضافه کړئ

د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

مینځپانګې ته

نتيجه

په GitLab CI کې د 4 دندې پیل کول
د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

د ادغام ازموینې سره د وروستي دندې په لاګونو کې موږ د مختلف دندو کانټینرونه ګورو

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

نور تفصيلي لاګ

$ 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

ټولې دندې په بریالیتوب سره بشپړې شوې

د کاري آثارو خدمتونه او د ازموینې لاګونه شامل دي
د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

هر څه ښکلي ښکاري، خو یو نزاکت شتون لري. پایپ لاین په زور سره لغوه کیدی شي پداسې حال کې چې د ادغام ازموینې روانې وي ، په دې حالت کې د کانټینرونو چلول به ودرول شي. وخت په وخت تاسو اړتیا لرئ رنر پاک کړئ. له بده مرغه، په GitLab CE کې د پرمختګ لپاره کار لاهم په حالت کې دی د پرانیستې

مګر موږ د مهالویش سره سم د دندې پیل کول اضافه کړي دي ، او هیڅوک موږ نه منع کوي چې دا په لاسي ډول پرمخ بوځي.
زموږ پروژې ته لاړ شئ -> CI/CD -> مهالویش او دنده پرمخ وړئ Clean runner

د GitLab شیل رنر. د ډاکر کمپوز په کارولو سره د ازمول شوي خدماتو سیالي پیل کول

ټول:

  • موږ یو شیل رنر لرو.
  • د دندو او چاپیریال تر منځ هیڅ ډول شخړې شتون نلري.
  • موږ په موازي ډول د ادغام ازموینې سره دندې پرمخ وړو.
  • تاسو کولی شئ د ادغام ازموینې په محلي یا په کانټینر کې ترسره کړئ.
  • د خدماتو او ازموینې لاګونه راټول شوي او د پایپ لاین دندې سره وصل شوي.
  • دا ممکنه ده چې رنر د زاړه ډاکر عکسونو څخه پاک کړئ.

د تنظیم کولو وخت ~ 2 ساعته دی.
دا ټول دي، په حقیقت کې. زه به خوښ شم چې فیډبیک ترلاسه کړم.

مینځپانګې ته

سرچینه: www.habr.com

Add a comment