Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Šis raksts būs interesants gan testētājiem, gan izstrādātājiem, taču tas galvenokārt ir paredzēts automatizētājiem, kuri saskārušies ar problēmu konfigurēt GitLab CI/CD integrācijas testēšanai apstākļos, kad trūkst infrastruktūras resursu un/vai nav konteineru orķestrācijas platformas. Es pastāstīšu, kā konfigurēt testējamo vidējo izvietošanu, izmantojot docker compose vienā GitLab shell runner, lai vairākas vides izvietošanas laikā palaistie pakalpojumi netraucētu viens otram.


Satelīte

Priekšnosacījumi

  1. Manā praksē bieži nācies "ārstēt" integrācijas testēšanu projektos. Un bieži vien pirmā un vissvarīgākā problēma ir CI pipeline, kurā integrācijas testēšana izstrādātā pakalpojuma(-u) notiek dev/stage vidē. Tas radīja daudz problēmu:

    • Dēļ defektiem kādā no pakalpojumiem integrācijas testēšanas procesā testēšanas apvidus var tikt sabojāts ar bojātiem datiem. Bijusi situācijas, kad pieprasījuma nosūtīšana ar bojātu JSON formātu apstādina pakalpojumu, kas pilnībā izslēdz stendu.
    • Testēšanas apvidus palēnināšanās, pieaugot testēšanas datu daudzumam. Domāju, nav jēgas aprakstīt piemēru par datu bāzes tīrīšanu/vēršanos atpakaļ. Savā praksē neesmu saskāries ar projektu, kur šī procedūra būtu noritējusi gludi.
    • Riska nepieciešamība izjaukt testēšanas apvidus darbību kopīgās sistēmas iestatījumu testēšanas laikā. Piemēram, lietotājs/grupa/parole/lietojumprogrammas politika.
    • Testēšanas dati no automātiskajiem testiem traucē roku testētājiem.

    Kāds var teikt, ka labiem automātiskajiem testiem pēc sevis jānotīra dati. Man ir pretargumenti:

    • Dinamiski stendi ir ļoti ērti lietošanā.
    • Ne katru objektu var izdzēst no sistēmas, izmantojot API. Piemēram, objekta dzēšanas izsaukums nav īstenots, jo tas pretrunā biznesa loģikai.
    • Izveidojot objektu, izmantojot API, var radīt milzīgu metadatu apjomu, kas ir problemātiski izdzēšami.
    • Ja testiem ir savstarpēja atkarība, tad datu tīrīšana pēc testu izpildes pārvēršas par galvas sāpēm.
    • Papildu (un, manuprāt, nepamatoti) izsaukumi uz API.
    • Un galvenais arguments: kad testa dati sāk tīrīt tieši no DB. Tas pārvēršas par īstu PK/FK cirku! No izstrādātājiem dzird: "Es tikai pievienoju/izdzēsu/pārveidoju tabulu, kāpēc 100500 integrācijas testi izgāzās?"

    Manuprāt, optimālākais risinājums ir dinamisks apvidus.

  2. Daudzi izmanto docker-compose testēšanas apvidus uzsākšanai, bet maz katrs izmanto docker-compose integrācijas testēšanai CI/CD. Un šeit es neņemšu vērā kubernetes, swarm un citas konteinera orķestrēšanas platformas. Ne katrā uzņēmumā tās pastāv. Būtu labi, ja docker-compose.yml būtu universāls.
  3. Ja mums pat ir savs QA runner, kā panākt, lai pakalpojumi, ko uzsāk docker-compose, netraucētu viens otram?
  4. Kā vākt testēto pakalpojumu žurnālus?
  5. Kā notīrīt runner?

Man ir savs GitLab runner saviem projektiem, un ar šiem jautājumiem es sastapos izstrādes procesā Java klients lai TestRail. Precīzāk, uzsākot integrācijas testus. Tālāk mēs risināsim šos jautājumus ar piemēriem no šī projekta.

Uz saturu

GitLab Shell Runner

Runneram rekomendēju Linux virtuālo mašīnu ar 4 vCPU, 4 GB RAM, 50 GB HDD.
Interneta plašumos ir ļoti daudz informācijas par gitlab-runner konfigurēšanu, tāpēc īsi:

  • Ieejam uz mašīnas pa SSH
  • Ja jums ir mazāk par 8 GB RAM, tad iesaku izveidot swap 10 GB, lai nedarbotos OOM killer un nenogalinātu mūsu uzdevumus RAM trūkuma dēļ. Tas var notikt, kad vienlaikus tiek uzsākti vairāk nekā 5 uzdevumi. Uzdevumi tiks izpildīti lēnāk, bet stabilāk.

    Piemērs ar OOM killer

    Ja jūsu uzdevumu žurnālos redzēsiet bash: line 82: 26474 Killed, tad vienkārši izpildiet runnerī sudo dmesg | grep 26474

    [26474]  1002 26474  1061935   123806     339        0             0 java
    No atmiņas: nogalināt procesu 26474 (java) score 127 vai upurēt bērnu
    Nogalināts process 26474 (java) total-vm:4247740kB, anon-rss:495224kB, file-rss:0kB, shmem-rss:0kB

    Un, ja aina izskatās aptuveni tā, tad vai nu pievienojiet swap, vai palieliniet RAM.

  • Uzstādam gitlab-runner, docker, docker-compose, make.
  • Pievienojam lietotāju gitlab-runner grupai docker
    sudo groupadd docker
    sudo usermod -aG docker gitlab-runner
  • Reģistrējam gitlab-runner.
  • Atveram rediģēšanai /etc/gitlab-runner/config.toml un pievienojam

    concurrent=20
    [[runners]]
      request_concurrency = 10

    Tas ļaus uzsākt paralēlos uzdevumus vienā runnerī. Sīkāk lasiet šeit.
    Ja jums ir jaudīgāka mašīna, piemēram, 8 vCPU, 16 GB RAM, tad šīs figūras var palielināt vismaz divas reizes. Bet viss atkarīgs no tā, kas tieši tiks uzsākts šajā runnerī un kādā daudzumā.

Tas ir pietiekami.

Uz saturu

docker-compose.yml sagatavošana

Galvenais uzdevums ir universāls docker-compose.yml, ko izstrādātāji/testētāji var izmantot gan lokāli, gan CI pipeline.

Pirmkārt, mēs izveidojam unikālus pakalpojumu nosaukumus CI. Viens no unikālajiem mainīgajiem GitLab CI ir mainīgais CI_JOB_ID. Ja norādīsim container_name ar vērtību "service-${CI_JOB_ID:-local}", tad gadījumā, ja:

  • ja CI_JOB_ID nav definēts vidējos mainīgajos,
    pakalpojuma nosaukums būs service-local
  • ja CI_JOB_ID ir definēts vidējos mainīgajos (piemēram, 123),
    pakalpojuma nosaukums būs service-123

Otrkārt, mēs izveidojam kopīgu tīklu palaistajiem pakalpojumiem. Tas nodrošina mums izolāciju tīkla līmenī, palaidot vairākas testēšanas vides.

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

Tas ir pirmais solis uz panākumiem =)

Mans docker-compose.yml piemērs ar komentāriem

version: "3"

# Lai pareizi darbotos web (php) un fmt, 
# konteineriem jābūt kopīgām izpildāmām saturu.
# Mūsu gadījumā tas ir direktorija /var/www/testrail
volumes:
  static-content:

# Izolējam vidi tīkla līmenī
networks:
  default:
    external:
      name: testrail-network-${CI_JOB_ID:-local}

services:
  db:
    image: mysql:5.7.22
    # Katram container_name satur ${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}"
    # Ja mainīgie TR_HTTP_PORT vai TR_HTTPS_PORTS nav definēti,
    # pakalpojums tiks uzsākts uz 80 un 443 porta attiecīgi.
    ports:
      - ${TR_HTTP_PORT:-80}:80
      - ${TR_HTTPS_PORT:-443}:443
    volumes:
      - static-content:/var/www/testrail
    links:
      - db
      - fpm
    networks:
      - default

Lokālā palaišana piemērs

docker-compose -f docker-compose.yml up -d
Sākot   testrail-mysql-local     ... izdarīts
Sākot   testrail-migration-local ... izdarīts
Sākot   testrail-fpm-local       ... izdarīts
Atjaunojot testrail-web-local       ... izdarīts

Bet ne viss ir tik vienkārši ar palaišanu CI.

Uz saturu

Makefile sagatavošana

Es izmantoju Makefile, jo tas ir ļoti ērti gan lokālai vides pārvaldībai, gan CI. Tālāk ir iekšējie komentāri

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

Pārbaudām

make 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

make 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

Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Uz saturu

.gitlab-ci.yml sagatavošana

Integrācijas testu palaišana

Integrācija:
  posms: tests
  tags:
    - my-shell-runner
  before_script:
    # Autentificējamies reģistrā
    - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
    # Ģenerējam pseidounikālos TR_HTTP_PORT un TR_HTTPS_PORT
    - export TR_HTTP_PORT=$(shuf -i10000-60000 -n1)
    - export TR_HTTPS_PORT=$(shuf -i10000-60000 -n1)
    # izveidojam direktoriju ar uzdevuma identifikatoru
    - mkdir ${CI_JOB_ID}
    # kopējam izveidotajā direktorijā mūsu docker-compose.yml
    # lai konteksts katram uzdevumam būtu atšķirīgs
    - cp .indirect/docker-compose.yml ${CI_JOB_ID}/docker-compose.yml
  script:
    # palaižam mūsu vidi
    - make docker-up
    # palaidam testus kā izpildāmu jar (man tā ir)
    - java -jar itest.jar --http-port ${TR_HTTP_PORT} --https-port ${TR_HTTPS_PORT}
    # vai konteinerā
    - docker run --network=testrail-network-${CI_JOB_ID:-local} --rm itest
  after_script:
    # vācam žurnālus
    - make docker-logs
    # apturējam vidi
    - make docker-kill
  artifacts:
    # saglabājam žurnālus
    when: always
    paths:
      - logs
    expire_in: 30 days

Uzdevuma palaišanas rezultātā artefakts direktorijā logs saturēs pakalpojumu un testu žurnālus. Tas ir ļoti ērti, ja rodas kļūdas. Man katrs tests paralēli raksta savu žurnālu, bet par to es pastāstīšu atsevišķi.

Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Uz saturu

Runner tīrīšana

Uzdevums tiks palaists tikai pēc grafika.

posmi:
- attīrīšana
- būvniecība
- tests

Tīrīšanas izpildītājs:
  posms: attīrīšana
  tikai:
    - grafiki
  tags:
    - my-shell-runner
  script:
    - make docker-clean

Tālāk ejam uz mūsu GitLab projektu -> CI/CD -> Grafiki -> Jauns grafiks un pievienojam jaunu grafiku

Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Uz saturu

Rezultāts

Palaist 4 uzdevumus GitLab CI
Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Integrācijas testu pēdējās uzdevumu žurnālos redzam konteinerus no dažādiem uzdevumiem

KONTEINERA ID  NOSAUKUMI
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

Detalizētāks žurnāls

$ docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
BRĪDINĀJUMS! Lietojot --password caur CLI, ir nesakārtoti. Lietojiet --password-stdin.
BRĪDINĀJUMS! Jūsu parole tiks saglabāta nešifrētā veidā \/home\/gitlab-runner\/.docker\/config.json.
Konfigurējiet akreditācijas palīdzību, lai novērstu šo brīdinājumu. Skatiet
https:\/\/docs.docker.com\/engine\/reference\/commandline\/login\/#credentials-store
Pierakstīšanās veiksmīga
$ 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
Kļūda: Šāds tīkls neeksistē: testrail-network-204645172
docker network create testrail-network-${CI_JOB_ID:-local}
0a59552b4464b8ab484de6ae5054f3d5752902910bacb0a7b5eca698766d0331
docker-compose -f ${CI_JOB_ID:-.indirect}\/docker-compose.yml pull
Vilciena tīmeklis       ... pabeigts
Vilciena fpm       ... pabeigts
Vilciena migrācija ... pabeigts
Vilciena db        ... pabeigts
docker-compose -f ${CI_JOB_ID:-.indirect}\/docker-compose.yml up --force-recreate --renew-anon-volumes -d
Veidojot apjomu "204645172_static-content" ar noklusējuma draiveri
Veidojot testrail-mysql-204645172 ... 
Veidojot testrail-mysql-204645172 ... pabeigts
Veidojot testrail-migrācija-204645172 ... pabeigts
Veidojot testrail-fpm-204645172       ... pabeigts
Veidojot testrail-web-204645172       ... pabeigts
docker ps
KONTEINERA ID        ATTĒLS                                                          KOMANDA                  VEIDOT              STATUSS              PORTI                                           NOSAUKUMS
c6b76f9135ed        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   13 sekundes atpakaļ       Darbojas 1 sekundi         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 sekundes atpakaļ       Darbojas 13 sekundes       9000\/tcp                                        testrail-fpm-204645172
2cdab1edbf6a        registry.gitlab.com\/touchbit\/image\/testrail\/migration:latest   "docker-entrypoint.s…"   16 sekundes atpakaļ       Darbojas 13 sekundes       3306\/tcp, 33060\/tcp                             testrail-migration-204645172
826aaf7c0a29        mysql:5.7.22                                                   "docker-entrypoint.s…"   18 sekundes atpakaļ       Darbojas 16 sekundes       3306\/tcp                                        testrail-mysql-204645172
6dbb3fae0322        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   36 sekundes atpakaļ       Darbojas 22 sekundes       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 sekundes atpakaļ       Darbojas 35 sekundes       9000\/tcp                                        testrail-fpm-204645084
70fea72aa10d        mysql:5.7.22                                                   "docker-entrypoint.s…"   40 sekundes atpakaļ       Darbojas 37 sekundes       3306\/tcp                                        testrail-mysql-204645084
d8aa24b2892d        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   Aptuveni pirms minūtes   Darbojas 53 sekundes       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…"   Aptuveni pirms minūtes   Darbojas Aptuveni minūti   9000\/tcp                                        testrail-fpm-204644881
685d8023a3ec        mysql:5.7.22                                                   "docker-entrypoint.s…"   Aptuveni pirms minūtes   Darbojas Aptuveni minūti   3306\/tcp                                        testrail-mysql-204644881
1cdfc692003a        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   Aptuveni pirms minūtes   Darbojas Aptuveni minūti   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…"   Aptuveni pirms minūtes   Darbojas Aptuveni minūti   9000\/tcp                                        testrail-fpm-204644793
029e16b26201        mysql:5.7.22                                                   "docker-entrypoint.s…"   Aptuveni pirms minūtes   Darbojas Aptuveni minūti   3306\/tcp                                        testrail-mysql-204644793
c10443222ac6        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   Pirms 5 stundām          Darbojas 5 stundas          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…"   Pirms 5 stundām          Darbojas 5 stundas          9000\/tcp                                        testrail-fpm-204567103
6ae0accab28d        mysql:5.7.22                                                   "docker-entrypoint.s…"   Pirms 5 stundām          Darbojas 5 stundas          3306\/tcp                                        testrail-mysql-204567103
b66b60d79e43        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   Pirms 5 stundām          Darbojas 5 stundas          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…"   Pirms 5 stundām          Darbojas 5 stundas          9000\/tcp                                        testrail-fpm-204553690
a8879c5ef941        mysql:5.7.22                                                   "docker-entrypoint.s…"   Pirms 5 stundām          Darbojas 5 stundas          3306\/tcp                                        testrail-mysql-204553690
069954ba6010        registry.gitlab.com\/touchbit\/image\/testrail\/web:latest         "nginx -g 'daemon of…"   Pirms 5 stundām          Darbojas 5 stundās          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…"   Pirms 5 stundām          Darbojas 5 stundās          9000\/tcp                                        testrail-fpm-204553539
1a1eed057ea0        mysql:5.7.22                                                   "docker-entrypoint.s…"   Pirms 5 stundām          Darbojas 5 stundās          3306\/tcp                                        testrail-mysql-204553539

Visas uzdevumus veiksmīgi pabeigti

Uzdevuma artefakti satur pakalpojumu un testu žurnālus
Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

It kā viss ir kārtībā, bet ir viens nians. Pipeline var piespiedu kārtā atcelt laikā, kad tiek veikti integrācijas testi, un šajā gadījumā palaistie konteineri netiks apstādināti. Laikā pa laikam jānotīra runner. Diemžēl uzdevums par uzlabojumiem GitLab CE joprojām ir statusā Atvērts

Bet mums ir pievienota uzdevuma izpilde pēc grafika, un neviens mums nepieprasa to palaist manuāli.
Pārejiet uz mūsu projektu -> CI/CD -> Grafiki un palaidiet uzdevumu Notīrīt runner

Unisoc Tiger T310 mikroshēma ir domāta budžeta 4G viedtālruņiem

Kopā:

  • Mums ir viens shell runner.
  • Nav konfliktu starp uzdevumiem un vidi.
  • Mums ir paralēla uzdevumu izpilde ar integrācijas testiem.
  • Integrācijas testus var palaist gan lokāli, gan konteinerā.
  • Pakalpojumu un testu žurnāli tiek vākti un pievienoti pipeline uzdevumam.
  • Ir iespēja notīrīt runner no vecajiem docker attēliem.

Iestatīšanas laiks — ~2 stundas.
Nu, lūk, arī viss. Priecāšos saņemt atsauksmes.

Uz saturu

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster