Telepítés
Hozzunk létre egy mappát az alkalmazásnak, majd benne egy yaml fájl a következő képpen
mkdir Gitlab-runner
cd Gitlab-runner
nano docker-compose.ymlservices:
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
- /mnt/Storage/Apps/Data/gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sockdocker compose up -dBeállítás
Regisztráljuk a runnert a gitlabhoz, ehhez a Gitlab -> Admin -> CI/CD -> Runners oldalon hozzunk létre egy új runnert, kapunk egy regisztrációs kódot.
docker exec -it gitlab-runner gitlab-runner registerURL: https://gitlab.sajatdomain.hu
Név: Runner-Budapest
Tags: Szerver
Executor: docker
Default image: docker:29
Ha sikerült hozzáadni, azt látnod kell a Gitlabon a runnerek között kis zöld flaggel.
Haladó
Abban az esetben ha Hostról futtatott docker containerben futattott runnerből később a CI -ben szeretnénk docker containert létrehozni host daemonnal, azt be kell mountolnunk a runner imagebe. Bemountolhatunk egyébb volumokat is amelyekből pl később a CI -ban másolnunk kell pl: .env környezeti változókat.
Docker volume: "/var/run/docker.sock"
Legyenek mondjuk az Appok az alábbi mappában: "/mnt/DataStorage/Apps"
nano /mnt/Storage/Apps/Data/gitlab-runner/config/config.toml
volumes = ["/var/run/docker.sock:/var/run/docker.sock",
"/mnt/Storage/Apps:/mnt/Storage/Apps",
"/cache"]Persze ne felejtsük el ezt a Gitlab-Runner-be is bemountolni, különben nem fgja tudni majd a CI -be behúzni.
nano /mnt/Storage/Apps/Gitlab-Runner/docker-compose.yml
version: "3"
services:
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
- /mnt/Storage/Apps/Data/gitlab-runner/config:/etc/gitlab-runner
- /mnt/Storage/Apps:/mnt/Storage/Apps
- /var/run/docker.sock:/var/run/docker.sockVégül indítsuk újra a Gitlab-Runner containert
cd /mnt/Storage/Apps/Gitlab-Runner
docker compose down
docker compose up -dHozzunk létre az Alkalmazásunk mappájában egy .gitlab-ci.yml fájlt az alábbi tartalommal, majd pusholjuk föl a master branchre és voálá!
stages:
- deploy
deploy_szerver:
stage: deploy
tags:
- Szerver
only:
- master
before_script:
- apk add --no-cache openssh-client git bash docker-cli docker-cli-compose
script:
- cp /mnt/Storage/Apps/Appnév/.env "${CI_PROJECT_DIR}/.env"
- ./app.sh buildandrun