GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Nkhaniyi ikhala yosangalatsa kwa onse oyesa komanso opanga mapulogalamu, koma idapangidwira makamaka akatswiri opanga makina omwe akukumana ndi vuto lokhazikitsa GitLab CI/CD kuti iyesedwe kuphatikiza pakusokonekera kwazinthu zofunikira komanso / kapena kusowa kwa chidebe. nsanja ya orchestration. Ndikuuzani momwe mungakhazikitsire kuyika kwa malo oyeserera pogwiritsa ntchito docker compose pa chipolopolo chimodzi cha GitLab komanso kuti potumiza malo angapo, ntchito zomwe zakhazikitsidwa sizisokonezana.


Zamkatimu

Zofunikira

  1. M'zochita zanga, nthawi zambiri zinkachitika kuti kuyesa kugwirizanitsa "kunkachitidwa" pamapulojekiti. Ndipo nthawi zambiri vuto loyamba komanso lofunikira kwambiri ndi payipi ya CI, momwe kuyesanso kuphatikizira kukulitsidwa service (s) imachitika mu malo oyambira/masiteji. Izi zidabweretsa zovuta zingapo:

    • Chifukwa cha zolakwika mu ntchito inayake panthawi yoyesa kuphatikiza, dera loyesa likhoza kuonongeka ndi data yosweka. Panali zochitika pamene kutumiza pempho ndi mtundu wosweka wa JSON kunasokoneza ntchito, zomwe zinapangitsa kuti kuyimitsidwa kusagwire ntchito.
    • Kuchedwetsa kwa dera loyesera pamene deta yoyesa ikuwonjezeka. Ndikuganiza kuti sizomveka kufotokoza chitsanzo ndikuyeretsa / kubweza nkhokwe. Muzochita zanga, sindinakumanepo ndi polojekiti yomwe ndondomekoyi inayenda bwino.
    • Chiwopsezo chosokoneza magwiridwe antchito a dera loyesa poyesa makonda a dongosolo lonse. Mwachitsanzo, ndondomeko ya ogwiritsa ntchito/gulu/password/application.
    • Zoyesa zoyeserera zokha zimapangitsa moyo kukhala wovuta kwa oyesa pamanja.

    Ena anganene kuti ma autotes abwino amayenera kuyeretsa deta pambuyo pake. Ndili ndi zotsutsana nazo:

    • Zoyimira zamphamvu ndizosavuta kugwiritsa ntchito.
    • Sizinthu zonse zomwe zingachotsedwe mudongosolo kudzera pa API. Mwachitsanzo, kuyimba kuti mufufuze chinthu sikunachitike chifukwa kumatsutsana ndi malingaliro abizinesi.
    • Mukapanga chinthu kudzera pa API, metadata yambiri imatha kupangidwa, zomwe zimakhala zovuta kuzichotsa.
    • Ngati mayesero ali ndi kudalirana pakati pawo, ndiye kuti njira yoyeretsera deta pambuyo poyesa mayesero imasanduka mutu.
    • Zowonjezera (ndipo, m'malingaliro anga, osayenerera) kuyitana ku API.
    • Ndipo mkangano waukulu: data yoyeserera ikayamba kuchotsedwa mwachindunji kuchokera ku database. Izi zasintha kukhala circus yeniyeni ya PK/FK! Timamva kuchokera kwa opanga: "Ndangowonjezera / kuchotsa / kutchulanso chizindikiro, chifukwa chiyani mayeso ophatikiza 100500 adagwidwa?"

    Malingaliro anga, njira yabwino kwambiri yothetsera vutoli ndi malo osinthika.

  2. Anthu ambiri amagwiritsa ntchito docker-compose poyesa malo oyeserera, koma anthu ochepa amagwiritsa ntchito docker-compose poyesa kuphatikiza mu CI/CD. Ndipo apa sindikuganizira za kubernetes, gulu lankhondo ndi nsanja zina zoyimba. Si makampani onse omwe ali nawo. Zingakhale zabwino ngati docker-compose.yml ingakhale yapadziko lonse lapansi.
  3. Ngakhale titakhala ndi othamanga athu a QA, tingatsimikizire bwanji kuti ntchito zomwe zakhazikitsidwa kudzera pa docker-compose sizisokonezana?
  4. Kodi mungasonkhanitse bwanji zipika za ntchito zoyesedwa?
  5. Kodi kuyeretsa wothamanga?

Ndili ndi wothamanga wanga wa GitLab pamapulojekiti anga ndipo ndidakumana ndi mafunsowa panthawi yachitukuko Java kasitomala chifukwa Zithunzi za TestRail. Ndendende, poyesa kuyesa kophatikiza. M'munsimu tidzathetsa nkhaniyi pogwiritsa ntchito zitsanzo za polojekitiyi.

Zolemba

GitLab Shell Wothamanga

Kwa wothamanga, ndikupangira makina enieni a Linux okhala ndi 4 vCPU, 4 GB RAM, 50 GB HDD.
Pali zambiri pakukhazikitsa gitlab-runner pa intaneti, mwachidule:

  • Lowani kumakina kudzera pa SSH
  • Ngati muli ndi RAM yochepera 8 GB, ndiye ndikupangira kusintha 10 GBkuti wakupha wa OOM asabwere kudzapha ntchito zathu chifukwa chosowa RAM. Izi zitha kuchitika ngati ntchito zopitilira 5 zakhazikitsidwa nthawi imodzi. Zochitazo zidzapita patsogolo pang'onopang'ono, koma pang'onopang'ono.

    Chitsanzo ndi wakupha OOM

    Ngati muwona muzolemba za ntchito bash: line 82: 26474 Killed, ndiye ingogwirani pa wothamanga 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

    Ndipo ngati chithunzicho chikuwoneka chonchi, ndiye onjezani kusinthana kapena kuwonjezera RAM.

  • Sakani gitlab-wothamanga, docker, kuyimbira, pangani.
  • Kuwonjezera wosuta gitlab-runner kwa gulu docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • Register gitlab-wothamanga.
  • Tsegulani kuti musinthe /etc/gitlab-runner/config.toml ndi kuwonjezera

    concurrent=20
    [[runners]]
      request_concurrency = 10

    Izi zikuthandizani kuti mugwire ntchito zofanana pa wothamanga m'modzi. Werengani zambiri apa.
    Ngati muli ndi makina amphamvu kwambiri, mwachitsanzo 8 vCPU, 16 GB RAM, ndiye kuti manambalawa akhoza kupangidwa osachepera 2 nthawi zazikulu. Koma zonse zimatengera zomwe zidzayambitsidwe pa wothamanga uyu komanso kuchuluka kwake.

Ndi zokwanira.

Zolemba

Kukonzekera docker-compose.yml

Ntchito yayikulu ndi universal docker-compose.yml, yomwe opanga/oyesa angagwiritse ntchito ponseponse komanso paipi ya CI.

Choyamba, timapanga mayina apadera a CI. Chimodzi mwazosiyana za GitLab CI ndikusintha CI_JOB_ID. Ngati mufotokoza container_name ndi tanthauzo "service-${CI_JOB_ID:-local}", ndiye kuti:

  • ngati CI_JOB_ID sichikufotokozedwa mumitundu yosiyanasiyana ya chilengedwe,
    ndiye dzina lautumiki lidzakhala service-local
  • ngati CI_JOB_ID kufotokozedwa m'malo osiyanasiyana (mwachitsanzo 123),
    ndiye dzina lautumiki lidzakhala service-123

Kachiwiri, timapanga netiweki wamba ya mautumiki oyambika. Izi zimatipatsa kudzipatula pamlingo wa netiweki tikamayesa malo angapo.

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

Kwenikweni, ili ndiye gawo loyamba lochita bwino =)

Chitsanzo changa docker-compose.yml ndi ndemanga

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

Kuthamanga kwanuko chitsanzo

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

Koma sizinthu zonse zomwe ndizosavuta ndikuyambitsa mu CI.

Zolemba

Kukonzekera Makefile

Ndimagwiritsa ntchito Makefile chifukwa ndiyosavuta kuwongolera chilengedwe komanso ku CI. Ndemanga zambiri pa intaneti

# Π£ мСня Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… всС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `.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

Chongani

kupanga 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

kupanga zipika za 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 Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Zolemba

Kukonzekera .gitlab-ci.yml

Kuyesa mayeso ophatikiza

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

Chifukwa cha ntchito yotereyi, chikwatu cha zipika muzopangidwazo chimakhala ndi zipika zautumiki ndi zoyeserera. Zomwe zimakhala zabwino kwambiri pakagwa zolakwika. Mayeso aliwonse mofanana amalemba chipika chake, koma ndilankhula za izi mosiyana.

GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Zolemba

Kuyeretsa wothamanga

Ntchitoyi idzayambika kokha malinga ndi ndondomeko.

stages:
- clean
- build
- test

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

Kenako, pitani ku projekiti yathu ya GitLab -> CI/CD -> Makonda -> Dongosolo Latsopano ndikuwonjezera ndandanda yatsopano.

GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Zolemba

chifukwa

Kuyambitsa ntchito 4 mu GitLab CI
GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Mu zipika za ntchito yomaliza ndi mayeso ophatikiza timawona zotengera kuchokera ku ntchito zosiyanasiyana

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

Zambiri zolemba

$ 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

Ntchito zonse zidamalizidwa bwino

Zinthu zopangidwa ndi ntchito zimakhala ndi ntchito komanso zolemba zoyeserera
GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Chilichonse chikuwoneka ngati chokongola, koma pali mawonekedwe ake. Mapaipi amatha kuyimitsidwa mokakamiza pomwe mayeso ophatikiza akugwira ntchito, pomwe zotengera zomwe zikuyenda siziyimitsidwa. Nthawi ndi nthawi muyenera kuyeretsa wothamanga. Tsoka ilo, ntchito yokonza mu GitLab CE idakalipobe Open

Koma tawonjezera kukhazikitsidwa kwa ntchito molingana ndi ndandanda, ndipo palibe amene amatiletsa kuiyendetsa pamanja.
Pitani ku polojekiti yathu -> CI / CD -> Mandandanda ndikuyendetsa ntchitoyi Clean runner

GitLab Shell Wothamanga. Kukhazikitsa kwapikisano kwa ntchito zoyesedwa pogwiritsa ntchito Docker Compose

Chiwerengero:

  • Tili ndi chipolopolo chimodzi.
  • Palibe mikangano pakati pa ntchito ndi chilengedwe.
  • Timagwira ntchito limodzi ndi mayeso ophatikizana.
  • Mutha kuyesa kuyesa kophatikiza kwanuko kapena mu chidebe.
  • Zipika zautumiki ndi zoyesa zimasonkhanitsidwa ndikuphatikizidwa ku ntchito yamapaipi.
  • Ndizotheka kuyeretsa wothamanga pazithunzi zakale za Docker.

Nthawi yokhazikitsa ndi ~2 hours.
Ndizo zonse, kwenikweni. Ndikhala wokondwa kulandira mayankho.

Zolemba

Source: www.habr.com

Kuwonjezera ndemanga