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 GitLab Shell Runner Kugadzirira docker-compose.yml Kugadzirira Makefile Kugadzirira .gitlab-ci.yml mugumisiro
Shure
-
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.
- 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.
- Kunyangwe isu tiine yedu QA mumhanyi, tingaite sei chokwadi chekuti masevhisi akatangwa kuburikidza nedocker-compose haapesane?
- Maitiro ekuunganidza matanda eakaedzwa masevhisi?
- Nzira yekuchenesa sei mumhanyi?
Ndine yangu GitLab mumhanyi wemapurojekiti angu uye ndakasangana nemibvunzo iyi panguva yekusimudzira
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 GB kuitira 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 pamumhanyisudo 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
kubokadocker
sudo groupadd docker sudo usermod -aG docker gitlab-runner
Register gitlab-runner.-
Vhura kuti zvigadziriswe
/etc/gitlab-runner/config.toml
uye wedzeraconcurrent=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.
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 richavaservice-local
- kana
CI_JOB_ID
inotsanangurwa mumamiriro akasiyana-siyana (semuenzaniso 123),
ipapo zita rebasa richavaservice-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.
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
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.
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.
mugumisiro
Kutangisa mabasa mana muGitLab CI
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
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
Asi isu takawedzera kutangwa kwebasa zvinoenderana nehurongwa, uye hapana anotirambidza kurimhanyisa nemawoko.
Enda kune yedu purojekiti -> CI/CD -> Zvirongwa uye mhanyisa basa Clean runner
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.
Source: www.habr.com