Nutze alle Facetten des Staging, Building, Testing und Deployments - geeignet für jede Team-Größe
Jürgen Haas - @jurgenhaas
4. März 2021
* nicht öffentlich
Ansible ist optional, wir verwenden Ansible für alle Provisionierungs-Aufgaben über SSH auf remote Hosts. Es können aber beliebige andere Tools für diesen Zweck eingesetzt werden.
Aufgrund der dargestellten Pipeline-Struktur haben wir die defintive Gewährleistung, dass…
Läuft komplett autonom, egal wie oft, egal wann.
Entwickler:innen machen nur noch eins: Commit und Push.
… und gehen dann Kaffee trinken!
[[runners]]
name = "Name of runner"
url = "https://gitlab.lakedrops.com/"
token = "TOKEN"
executor = "docker"
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "registry.lakedrops.com/docker/gitlab-drupal-ci:php-7.4"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
cache_dir = "/cache"
shm_size = 0
.gitlab-ci.yml
variables:
COMPOSE_PROJECT_NAME: myproject_$CI_COMMIT_REF_SLUG
ENVIRONMENT_NAME: myproject/$CI_COMMIT_REF_NAME
THEME_CSS_PATH: web/themes/custom/mytheme/css
HOST_NAME: myhostname
SITE_NAME: mysiteid
include:
- project: 'gitlab-ci-cd/drupal'
ref: master
file: '/test-and-deploy.yml'
Validate Environment:
extends: '.prerequisites'
Build Prod Site:
extends: '.build-prod'
Build Site:
extends: '.build'
Download DB:
extends: '.dumpdb'
Import DB:
extends: '.importdb'
Update DB:
extends: '.updatedb'
Build Theme:
extends: '.theme'
before_script:
- cd web/themes/custom/mytheme
Test Code Style:
extends: '.codestyle'
Test PHPUnit:
extends: '.phpunit'
Test Behat:
extends: '.behat'
Test Backstop:
extends: '.backstop'
Deploy:
extends: '.deploy'
Der Einsatz von Ansible ist optional, wird bei uns aber für alle Provisionierungs-Aufgaben eingesetzt, bei denen ein Prozess per SSH auf remote Hosts zugreift.
[[runners]]
name = "Name of ansible runner"
url = "https://gitlab.lakedrops.com/"
token = "TOKEN"
executor = "docker"
environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.lakedrops.com\":{\"auth\":\"YOURAUTHTOKEN\"}}}"]
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
hostname = "Ansible-INVENTORYNAME"
image = "registry.lakedrops.com/ansible-inventories/INVENTORYNAME:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/home/gitlab-runner/.ssh/id_rsa:/root/.ssh/id_rsa", "/home/gitlab-runner/.a/variables.yml:/root/.ansible/secrets", "/home/gitlab-runner/.a/inventories/INVENTORYNAME:/root
/.ansible", "/etc/ansible.yml:/etc/ansible.yml", "/var/log/ansible:/var/log/ansible"]
pull_policy = "always"
shm_size = 0