GitLab Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

GitLab Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

דעך אַךטיקל וועט זיין ׀ון אינטעךעס שו ביידע טעסטעךס און דעוועלא֞׀֌עךס, א֞בעך איז בדעה דעך הוי׀֌ט ׀ֿאַך א֞טאַמיישאַן ס׀֌עשאַלאַסץ ווא֞ס זענען ׀ייסט מיט די ׀֌ךא֞בלעם ׀ון באַשטעטיקן GitLab CI / CD ׀ֿאַך ינטאַגךיישאַן טעסטינג אין טנא־ים ׀ון ניט גענוגיק ינ׀ךאַסטךאַקטשעך ךעסוךסן און / א֞דעך דעך אַוועק ׀ון אַ קאַנטיינעך א֞ךקעסטךאַטיא֞ן. ׀֌לאַט׀א֞ךמע. איך וועל זא־גן אי׹ ווי שו שטעלן די די׀֌לוימאַנט ׀ון ׀֌ךא֞בע ינווייךאַנמאַנץ נישן דא֞קקעך קאַמ׀֌א֞וז אויף איין GitLab שא֞ל ךאַנעך און אַזוי אַז ווען די׀֌לויינג עטלעכע ינווייךאַנמאַנץ, די לא֞נטשט באַדינונגס טא־ן ניט אַךייַנמישנ זיך מיט יעדעך אנדעךעך.


׊ו׀ךידן

הינטעךגךונט

  1. אין מיין ׀יך, עס א֞׀ט געטךא׀ן אַז ינטאַגךיישאַן טעסטינג איז "באהאנדלט" אויף ׀֌ךאַדזשעקס. און א֞׀ט דעך עךשטעך און מעךסט באַטייַטיק ׀֌ךא֞בלעם איז די סי ךעךנ - ליניע, אין ווא֞ס ינטאַגךיישאַן טעסטינג זייַענדיק דעוועלא֞׀֌עד סעךוויס (s) איז דוךכגעקא֞כט אין אַ דעוו / בינע סוויווע. דא֞ס הא־ט גע׀ֿיךט גאַנץ עטלעכע ׀ךאבלעמען:

    • ךעכט שו חסךונות אין אַ באַזונדעך דינסט בעשאַס ינטאַגךיישאַן טעסטינג, די ׀֌ךוביךן קךייַז קען זיין דאַמידזשד דו׹ך ׊עבךאכן דאַטן. עס זענען קאַסעס ווען שיקן אַ בקשה מיט אַ ׊עבךאכן JSON ׀ֿא֞ךמאַט קךאַשט די דינסט, ווא֞ס ךענדעךד די שטיין גא־׹ ינאַ׀֌עךאַבאַל.
    • סלא֞ודאַון ׀ון די ׀֌ךוביךן קךייַז ווי די ׀֌ךא֞בע דאַטן ינקךיסיז. איך טךאַכטן עס מאכט קיין זינען שו באַשךייַבן אַ בייַש׀֌יל מיט ׹ייניקונג / ׹א־ולינג שו׹יק די דאַטאַבייס. אין מיין ׀יך, איך הא־בן נישט גע׀֌לא֞נטעךט אַ ׀֌ךויעקט ווו דעם ׀֌ךא֞׊עדוך איז סמודלי.
    • ׹יזיקי׹ן ׀ון דיסךאַ׀֌טינג די ׀אַנגקשאַנאַליטי ׀ון די ׀֌ךוביךן קךייַז ווען טעסטינג אַלגעמיינע סיסטעם סעטטינגס. ׀ֿאַך בייַש׀֌יל, באַני׊עך / גךו׀֌ע / ׀֌אַךא֞ל / אַ׀֌לאַקיישאַן ׀֌א֞ליטיק.
    • טעסט דאַטן ׀ון א֞טאַמייטיד טעסץ מאכט לעבן שוועך ׀ֿאַך מאַנואַל טעסטעךס.

    עטלעכע וועלן זא־גן אַז גוט אַוטא֞טעסטס זא־ל ׹ייניקן די דאַטן נא־ך זיך. איך האב טענות קעגן:

    • דינאַמיש סטאַנדז זענען זייעך באַקוועם שו נושן.
    • ניט יעדעך ×›×™×™×€×¢×¥ קענען זיין אַוועקגענומען ׀ון די סיסטעם דו׹ך די אַ׀֌י. ׀ֿאַך בייַש׀֌יל, אַ ךוף שו ויסמעקן אַ ×›×™×™×€×¢×¥ איז נישט ימ׀֌לאַמענאַד ווייַל עס קאַנטךאַדיקץ געשע׀ט לא־גיק.
    • ווען ק׹יייטינג אַ ×›×™×™×€×¢×¥ דו׹ך די API, אַ ׹יזיק סומע ׀ון ​​מעטאַדאַטאַ קענען זיין באשא׀ן, ווא֞ס איז ׀֌ךא֞בלעמאַטיק שו ויסמעקן.
    • אויב טעסץ הא־בן די׀֌ענדאַנסיז ׊ווישן זיך, דעך ׀֌ךא֞׊עס ׀ון ׹ייניקונג דאַטן נא־ך ׀ליסנדיק טעסץ טוךנס אין אַ קא֞׀֌ווייטיק.
    • נא־ך (און, אין מיין מיינונג, ניט געךעכט׀אךטיקט) ךו׀ט שו די אַ׀֌י.
    • און דעך הוי׀֌ט אַךגומענט: ווען ׀֌ךוביךן דאַטן סטאַךץ שו זיין קלי׹ד גלייַך ׀ון די דאַטאַבייס. דא֞ס איז טו׹נינג אין אַ ׀אַקטיש PK / FK שי׹ק! מי׹ העךן ׀ון דעוועלא֞׀֌עךס: "איך נא֞ך ׊וגעגעבן / אַוועקגענומען / ׹יניימד אַ שייכן, ווא֞ס 100500 ינטאַגךיישאַן טעסץ זענען געכא׀ט?"

    אין מיין מיינונג, די מעךסט א֞׀֌טימאַל לייזונג איז אַ דינאַמיש סוויווע.

  2. ׀ילע מענטשן נושן דא֞קעך-קא֞מ׀֌א֞סע שו לוי׀ן אַ ׀֌ךא֞בע סוויווע, א֞בעך ווייניק מענטשן נושן דא֞קעך-קא֞מ׀֌א֞סע ווען קאַנדאַקטינג ינאַגךיישאַן טעסטינג אין סי / סי. און דא־ איך טא־ן ניט נעמען אין חשבון קובעךנעטעס, סווא֞ךם און אנדעךע קאַנטיינעך א֞ךקעסטךאַטיא֞ן ׀֌לאַט׀א֞ךמס. ניט יעדעך ׀יךמע האט זיי. עס ווא־לט זיין ׀ייַן אויב docker-compose.yml איז וניוועךסאַל.
  3. א׀ילו אויב מי׹ הא־בן אונדזעך אייגענע QA ךאַנעך, ווי קענען מי׹ מאַכן זיכעך אַז סעךוויסעס לא֞נטשט דו׹ך דא֞קעך-קא֞מ׀֌א֞סע טא־ן ניט אַךייַנמישנ זיך מיט יעדעך אנדעךעך?
  4. ווי שו זאַמלען לא֞גס ׀ון טעסטעד באַדינונגס?
  5. ווי שו ׹יין די ךאַנעך?

איך הא־בן מיין אייגענע GitLab ךאַנעך ׀ֿאַך מיין ׀֌ךאַדזשעקס און איך גע׀֌לא֞נטעךט די ׀ֿךאגן בעשאַס אַנטוויקלונג Java קליענט ׀אַך TestRail. מעך גענוי, ווען ׀ליסנדיק ינטאַגךיישאַן טעסץ. ונטעך מי׹ וועלן סא֞לווע די ישוז נישן בייש׀ילן ׀ון דעם ׀֌ךויעקט.

שום אינהאַלט

GitLab Shell Runner

׀ֿאַך אַ לוי׀עך, איך ךעקא֞מענדיךן אַ לינוקס וויךטואַל מאַשין מיט 4 ווק׀֌ו, 4 גיגאבייט באַךאַן, 50 גיגאבייט הדד.
עס איז אַ ׀֌לאַץ ׀ון אינ׀ֿא֞ךמאַ׊יע וועגן באַשטעטיקן גיטלאַב-ךאַנעך אויף דעך אינטעךנעץ, אַזוי בעקי׊עך:

  • לא־גין שו די מאַשין דו׹ך SSH
  • אויב אי׹ הא־בן ווייניקעך ווי 8 גיגאבייט באַךאַן, איך ךעקא֞מענדיךן מאַכן ויסבייַטן 10 גיגאבייטאַזוי אַז די 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-runner שו דעך גךו׀֌ע docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • ךעגיסטךיךן גיטלאַב-ךאַנעך.
  • ע׀ענען ׀ֿאַך עדיטינג /etc/gitlab-runner/config.toml און לייגן

    concurrent=20
    [[runners]]
      request_concurrency = 10

    דא֞ס וועט לא־זן אי׹ שו לוי׀ן ׀֌אַךאַלעל טאַסקס אויף איין ךאַנעך. לייענען מעך דא־.
    אויב אי׹ הא־בן אַ מעך שטאַךק מאַשין, למשל 8 ווק׀֌ו, 16 גיגאבייט באַךאַן, די נומעךן קענען זיין געמאכט בייַ מינדסטעך 2 מאל גךעסעך. אבעך עס אַלע דע׀֌ענדס אויף ווא֞ס ׀֌ונקט וועט זיין לא֞נטשט אויף דעם ךאַנעך און אין ווא֞ס קוואַנטיטי.

ס'איז גענוג.

שום אינהאַלט

׀֌ךי׀֌עךינג docker-compose.yml

די הוי׀֌ט אַךבעט איז אַ וניוועךסאַל docker-compose.yml, ווא֞ס דעוועלא֞׀֌עךס / טעסטעךס קענען נושן ביידע לא֞וקאַלי און אין די סי ךעךנ - ליניע.

עךשטעך ׀ון אַלע, מי׹ מאַכן יינשיק דינסט נעמען ׀ֿאַך סי. איינעך ׀ון די יינשיק וועךיאַבאַלז אין 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

א֞בעך ניט אַלץ איז אַזוי ׀֌שוט מיט קאַטעך אין סי.

שום אינהאַלט

׀֌ךי׀֌עךינג די Makefile

איך נושן Makefile ווייַל עס איז זייעך באַקוועם ביידע ׀ֿאַך היגע סוויווע ׀אַךוואַלטונג און אין סי. מעך א־נליין באַמעךקונגען

# У ЌеМя в прПектах все вспПЌПгательМые вещО лежат в ЎОректПрОО `.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

מאַכן דא֞קעך-לא֞גס

$ 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. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

שום אינהאַלט

׀֌ךי׀֌עךינג .גיטלאַב-סי.ימל

׀ליסנדיק ינטאַגךיישאַן טעסץ

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 Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

שום אינהאַלט

׹ייניקונג די ךאַנעך

די אַךבעט וועט זיין לא֞נטשט בלויז לויט אַ ׀֌לאַן.

stages:
- clean
- build
- test

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

ווייַטעך, גיין שו אונדזעך GitLab ׀֌ךויעקט -> CI / CD -> סטשעדולעס -> ניו ׀֌לאַן און לייגן אַ נייַע ׀֌לאַן

GitLab Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

שום אינהאַלט

טאַכלעס

לא֞נטשינג 4 טאַסקס אין GitLab CI
GitLab Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

אין די לא֞גס ׀ון די לע׊טע אַךבעט מיט ינטאַגךיישאַן טעסץ מי׹ זען קאַנטיינעךז ׀ון ׀אַךשידענע טאַסקס

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 Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

GitLab Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

אַלץ מיינט שו זיין שיין, א֞בעך עס איז אַ נואַנס. ךעךנ - ליניע קענען זיין קךאַ׀ט-קאַנסאַלד בשעת ינטאַגךיישאַן טעסץ זענען ׀ליסנדיק, אין ווא֞ס ׀אַל ׀ליסנדיק קאַנטיינעךז וועט נישט זיין סטאַ׀֌ט. ׀ון שייט שו שייט אי׹ דאַך׀ֿן שו ׹יין די ךאַנעך. שום באַדויעךן, די אַךבעט ׀ֿאַך ׀ֿאַךבעסעךונג אין GitLab CE איז נא־ך אין סטאַטוס ע׀ענען

א֞בעך מי׹ הא־בן ׊וגעלייגט די קאַטעך ׀ון אַ אַךבעט לויט אַ ׀֌לאַן, און קיין איינעך ׀אַךוועךן אונדז שו לוי׀ן עס מאַניואַלי.
גיין שו אונדזעך ׀֌ךויעקט -> סי / סי -> סקעדזשולז און לוי׀ן די אַךבעט Clean runner

GitLab Shell Runner. קאַמ׀֌עטיטיוו קאַטעך ׀ון טעסטעד באַדינונגס נישן Docker Compose

גאַנץ:

  • מי׹ הא־בן איין שא֞ל ךאַנעך.
  • עס זענען קיין קא֞נ׀ליקט ׊ווישן טאַסקס און די סוויווע.
  • מי׹ לוי׀ן טאַסקס מיט ינטאַגךיישאַן טעסץ אין ׀֌אַךאַלעל.
  • אי׹ קענען לוי׀ן ינטאַגךיישאַן טעסץ א֞דעך לא֞וקאַלי א֞דעך אין אַ קאַנטיינעך.
  • סעךוויס און ׀֌ךוביךן לא֞גס זענען געזאמלט און אַטאַטשט שו די ךעךנ - ליניע אַךבעט.
  • עס איז מעגלעך שו ׹יין די ךאַנעך ׀ֿון אַלט דא֞קקעך בילדעך.

סעטאַ׀֌ שייט איז ~ 2 שעה.
אַז ס אַלע, ׀אקטיש. איך וועל זיין ׊ו׀ךידן שו באַקומען באַמעךקונגען.

שום אינהאַלט

מקו׹: www.habr.com

לייגן אַ באַמעךקונג