GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Ichi chinyorwa chichave chekufarira kune vese vanoedza uye vanogadzira, asi chakagadzirirwa kunyanya kune otomatiki nyanzvi dzinotarisana nedambudziko rekumisikidza GitLab CI/CD yekusanganisa kuyedzwa mumamiriro ezvinhu asina kukwana zviwanikwa zvezvivakwa uye / kana kusavapo kwemudziyo. orchestration platform. Ini ndichakuudza nzira yekumisikidza kutumirwa kwenzvimbo dzekuyedza uchishandisa docker nyora pane imwechete GitLab shell runner uye kuti kana uchiendesa akati wandei nharaunda, masevhisi akatangwa asapindirane.


Zviri mukati

Shure

  1. Mukuita kwangu, zvaiwanzoitika kuti kuyedzwa kwekubatanidza "kwairapwa" pamapurojekiti. Uye kazhinji dambudziko rekutanga uye rakanyanya kukosha ndeye CI pombi, umo yekubatanidza kuyedza kuvandudzwa sevhisi (s) inoitwa munzvimbo ye dev/stage. Izvi zvakakonzera matambudziko mazhinji:

    • Nekuda kwekukanganisa mune imwe sevhisi panguva yekubatanidza kuyedzwa, bvunzo redunhu rinogona kukuvadzwa neyakatyoka data. Paive nezviitiko apo kutumira chikumbiro neyakatyoka JSON fomati yakakanganisa sevhisi, izvo zvakaita kuti chimire kusashanda zvachose.
    • Kunonoka kwedunhu rekuyedza sezvo data rekuyedza richiwedzera. Ini ndinofunga hazvina musoro kutsanangura muenzaniso nekuchenesa / kudzosera kumashure dhatabhesi. Mukuita kwangu, handina kumbosangana neprojekti iyo nzira iyi yakafamba zvakanaka.
    • Ngozi yekukanganisa kushanda kweyeyedzo wedunhu paunenge uchiyedza general system marongero. Semuenzaniso, mushandisi/boka/password/application policy.
    • Yedza data kubva kuzviyedzo zveotomatiki zvinoita kuti hupenyu huome kune vanoedza nemaoko.

    Vamwe vanozotaura kuti ma autotesti akanaka anofanira kuchenesa iyo data mushure mavo. Ndine nharo dzekupikisa:

    • Dynamic stands zviri nyore kushandisa.
    • Haisi chinhu chose chinogona kubviswa kubva kuhurongwa kuburikidza neAPI. Semuyenzaniso, kufona kwekudzima chinhu hakuna kuitwa nekuti kunopesana nepfungwa dzebhizinesi.
    • Paunenge uchigadzira chinhu kuburikidza neAPI, huwandu hukuru hwemetadata hunogona kugadzirwa, izvo zvinonetsa kudzima.
    • Kana bvunzo dziine kutsamira pakati pavo, saka maitiro ekuchenesa data mushure mekumhanya bvunzo inoshanduka kuita musoro.
    • Kuwedzera (uye, mumaonero angu, kwete kururamiswa) kufona kuAPI.
    • Uye iyo nharo huru: kana bvunzo data inotanga kucheneswa zvakananga kubva kudhatabhesi. Uku kushanduka kuita PK/FK circus chaiyo! Isu tinonzwa kubva kune vanogadzira: "Ndichangowedzera / kubvisa / kutumidza chiratidzo, nei 100500 bvunzo dzekubatanidza dzakabatwa?"

    Mukuona kwangu, mhinduro yakanyanya kunaka inzvimbo ine simba.

  2. Vanhu vazhinji vanoshandisa docker-compose kumhanya nharaunda yekuyedza, asi vashoma vanhu vanoshandisa docker-compose pavanenge vachiita yekubatanidza bvunzo muCI/CD. Uye pano handisi kufunga nezve kubernetes, swarm uye mamwe midziyo orchestration mapuratifomu. Haisi kambani yese inazvo. Zvingave zvakanaka kana docker-compose.yml yaive yepasirese.
  3. Kunyangwe isu tiine yedu QA mumhanyi, tingaite sei chokwadi chekuti masevhisi akatangwa kuburikidza nedocker-compose haapesane?
  4. Maitiro ekuunganidza matanda eakaedzwa masevhisi?
  5. Nzira yekuchenesa sei mumhanyi?

Ndine yangu GitLab mumhanyi wemapurojekiti angu uye ndakasangana nemibvunzo iyi panguva yekusimudzira Java client nokuti TestRail. Kunyanya, kana uchimhanyisa bvunzo dzekubatanidza. Pazasi isu tichagadzirisa nyaya idzi tichishandisa mienzaniso kubva muchirongwa ichi.

Kune zvirimo

GitLab Shell Runner

Kune mumhanyi, ini ndinokurudzira Linux virtual muchina ne 4 vCPU, 4 GB RAM, 50 GB HDD.
Pane ruzivo rwakawanda rwekumisikidza gitlab-runner paInternet, saka muchidimbu:

  • Pinda kumuchina kuburikidza neSSH
  • Kana iwe uine isingasviki 8 GB RAM, saka ini ndinokurudzira shandura 10 GBkuitira kuti mhondi yeOOM isauye kuzouraya mabasa edu nekuda kwekushaya RAM. Izvi zvinogona kuitika kana anopfuura mabasa mashanu akatangwa panguva imwe chete. Mabasa acho achafambira mberi zvishoma nezvishoma, asi zvishoma nezvishoma.

    Muenzaniso neOOM mhondi

    Kana iwe ukaona mumatanda ebasa bash: line 82: 26474 Killed, wobva wangouraya pamumhanyi 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

    Uye kana mufananidzo uchitaridzika seizvi, wobva wawedzera chinja kana wedzera RAM.

  • Install gitlab-runner, docker, docker-compose, gadzira.
  • Kuwedzera mushandisi gitlab-runner kuboka docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • Register gitlab-runner.
  • Vhura kuti zvigadziriswe /etc/gitlab-runner/config.toml uye wedzera

    concurrent=20
    [[runners]]
      request_concurrency = 10

    Izvi zvinokutendera kuti uite mabasa anoenderana pane mumwe mumhanyi. Verenga zvimwe pano.
    Kana uine muchina une simba rakawanda, semuenzaniso 8 vCPU, 16 GB RAM, saka nhamba idzi dzinogona kuitwa kanenge kaviri. Asi zvese zvinoenderana nekuti chii chaizvo chichavhurwa pamumhanyi uyu uye muhuwandu hupi.

Zvakwana.

Kune zvirimo

Kugadzirira docker-compose.yml

Basa guru ndere universal docker-compose.yml, iyo vagadziri/vanoedza vanogona kushandisa zvese munharaunda uye muCI pombi.

Chekutanga pane zvese, tinoita akasarudzika mazita ebasa reCI. Imwe yeakasarudzika akasiyana muGitLab CI ndiyo inoshanduka CI_JOB_ID. Kana ukatsanangura container_name zvine zvazvinoreva "service-${CI_JOB_ID:-local}", zvino muchiitiko:

  • kana CI_JOB_ID isina kutsanangurwa muzvakasiyana siyana,
    ipapo zita rebasa richava service-local
  • kana CI_JOB_ID inotsanangurwa mumamiriro akasiyana-siyana (semuenzaniso 123),
    ipapo zita rebasa richava service-123

Chechipiri, isu tinogadzira network yakajairika yemasevhisi akatangwa. Izvi zvinotipa network-level yekuzviparadzanisa nevamwe kana tichimhanyisa akawanda bvunzo nharaunda.

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

Chaizvoizvo, iyi inhanho yekutanga yekubudirira =)

Muenzaniso weangu docker-compose.yml nemhinduro

version: "3"

# Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ web (php) ΠΈ fmt Π½ΡƒΠΆΠ½ΠΎ, 
# Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ исполняСмый ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.
# Π’ нашСм случаС, это дирСктория /var/www/testrail
volumes:
  static-content:

# Π˜Π·ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π½Π° сСтСвом ΡƒΡ€ΠΎΠ²Π½Π΅
networks:
  default:
    external:
      name: testrail-network-${CI_JOB_ID:-local}

services:
  db:
    image: mysql:5.7.22
    # ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ container_name содСрТит ${CI_JOB_ID:-local}
    container_name: "testrail-mysql-${CI_JOB_ID:-local}"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: mydb
      MYSQL_ROOT_PASSWORD: 1234
      SKIP_GRANT_TABLES: 1
      SKIP_NETWORKING: 1
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
    - default

  migration:
    image: registry.gitlab.com/touchbit/image/testrail/migration:latest
    container_name: "testrail-migration-${CI_JOB_ID:-local}"
    links:
    - db
    depends_on:
    - db
    networks:
    - default

  fpm:
    image: registry.gitlab.com/touchbit/image/testrail/fpm:latest
    container_name: "testrail-fpm-${CI_JOB_ID:-local}"
    volumes:
    - static-content:/var/www/testrail
    links:
    - db
    networks:
    - default

  web:
    image: registry.gitlab.com/touchbit/image/testrail/web:latest
    container_name: "testrail-web-${CI_JOB_ID:-local}"
    # Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ TR_HTTP_PORT ΠΈΠ»ΠΈ TR_HTTPS_PORTS Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹,
    # Ρ‚ΠΎ сСрвис поднимаСтся Π½Π° 80 ΠΈ 443 ΠΏΠΎΡ€Ρ‚Ρƒ соотвСтствСнно.
    ports:
      - ${TR_HTTP_PORT:-80}:80
      - ${TR_HTTPS_PORT:-443}:443
    volumes:
      - static-content:/var/www/testrail
    links:
      - db
      - fpm
    networks:
      - default

Local run muenzaniso

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

Asi hazvisi zvese zviri nyore nekutanga muCI.

Kune zvirimo

Kugadzirira Makefile

Ini ndinoshandisa Makefile nekuti iri nyore kwazvo kune ese enzvimbo manejimendi nharaunda uye muCI. Zvimwe online comments

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

Kuongorora

kugadzira 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

gadzira 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 Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Kune zvirimo

Kugadzirira .gitlab-ci.yml

Kumhanyisa miedzo yekubatanidza

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

Nekuda kwekuita basa rakadaro, dhairekitori rematanda mune zvigadzirwa zvichave nesevhisi uye matanda ebvunzo. Izvo zviri nyore kwazvo kana paine zvikanganiso. Muedzo wega wega wakafanana unonyora chinyorwa chayo, asi ini ndichataura nezve izvi zvakasiyana.

GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Kune zvirimo

Kuchenesa mumhanyi

Basa richatangwa chete zvichienderana nehurongwa.

stages:
- clean
- build
- test

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

Tevere, enda kune yedu GitLab purojekiti -> CI/CD -> Zvirongwa -> Nyowani Chirongwa uye wedzera hurongwa hutsva.

GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Kune zvirimo

mugumisiro

Kutangisa mabasa mana muGitLab CI
GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Mune matanda ekupedzisira basa nekubatanidza bvunzo tinoona midziyo kubva kumabasa akasiyana

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

More zvakadzama log

$ 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

Mabasa ese akapera zvinobudirira

Zvigadzirwa zvebasa zvine sevhisi uye matanda ebvunzo
GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Zvose zvinoita sezvakanaka, asi pane nuance. Pipeline inogona kudzimwa-kumanikidzwa apo bvunzo dzekubatanidza dziri kushanda, mune izvo zvinomhanya midziyo haizomiswa. Nguva nenguva unoda kuchenesa mumhanyi. Nehurombo, iro basa rekuvandudza muGitLab CE richiri muchimiro Open

Asi isu takawedzera kutangwa kwebasa zvinoenderana nehurongwa, uye hapana anotirambidza kurimhanyisa nemawoko.
Enda kune yedu purojekiti -> CI/CD -> Zvirongwa uye mhanyisa basa Clean runner

GitLab Shell Runner. Kukwikwidza kuvhurwa kwemasevhisi akaedzwa uchishandisa Docker Compose

Zvose:

  • Tine imwe goko mumhanyi.
  • Hapana kupesana pakati pemabasa uye zvakatipoteredza.
  • Isu tinomhanyisa mabasa nekubatanidza bvunzo mukufanana.
  • Unogona kumhanyisa bvunzo dzekubatanidza kungave munharaunda kana mumudziyo.
  • Sevhisi uye matanda ebvunzo anounganidzwa uye akabatanidzwa kune iyo pombi basa.
  • Izvo zvinokwanisika kuchenesa mumhanyi kubva kune yekare Docker mifananidzo.

Nguva yekuseta i ~ maawa maviri.
Ndizvo zvose, chaizvoizvo. Ndichafara kugamuchira mhinduro.

Kune zvirimo

Source: www.habr.com

Voeg