Merge branch 'feat/Docker-Compose' into 'master'
Feat docker compose See merge request gilden/ci/gitlab-ci-templates!16
This commit is contained in:
commit
8efaf293e0
27
docker-compose-deploy.gitlab-ci.yml
Normal file
27
docker-compose-deploy.gitlab-ci.yml
Normal file
@ -0,0 +1,27 @@
|
||||
.docker-compose-deploy:
|
||||
image: docker/compose:alpine-1.29.1
|
||||
stage: deploy
|
||||
variables:
|
||||
SCP_DESTINATION: ""
|
||||
SCP_SOURCE: $CI_PROJECT_DIR
|
||||
COMPOSE_EXTRA_ARGS: ""
|
||||
SSH_URL: ""
|
||||
SSH_USER: ""
|
||||
DOCKER_REGISTRY: "$CI_REGISTRY"
|
||||
ENV_SETUP_FILE: "setup_env.sh"
|
||||
rules:
|
||||
- when: manual
|
||||
# https://docs.gitlab.com/ee/ci/ssh_keys/
|
||||
before_script:
|
||||
- if [ -f "$ENV_SETUP_FILE" ]; then chmod +x ./$ENV_SETUP_FILE; ./$ENV_SETUP_FILE; fi
|
||||
- 'command -v ssh-agent >/dev/null || ( apk --update add openssh-client )'
|
||||
- eval $(ssh-agent -s)
|
||||
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
||||
- mkdir -p ~/.ssh
|
||||
- chmod 700 ~/.ssh
|
||||
# Add keys to known hosts for Docker Compose
|
||||
- ssh-keyscan $SSH_URL >> ~/.ssh/known_hosts
|
||||
- if [[ -n "$DOCKER_REGISTRY" ]]; then docker login $DOCKER_REGISTRY; fi
|
||||
script:
|
||||
- if [[ -n "$SCP_SOURCE" && -n "$SCP_DESTINATION" ]]; then scp -rp $SCP_SOURCE $SSH_USER@$SSH_URL:$SCP_DESTINATION; fi
|
||||
- DOCKER_HOST=ssh://$SSH_USER@$SSH_URL docker-compose $COMPOSE_EXTRA_ARGS up -d --remove-orphans
|
||||
7
docker-compose-validate.gitlab-ci.yml
Normal file
7
docker-compose-validate.gitlab-ci.yml
Normal file
@ -0,0 +1,7 @@
|
||||
.docker-compose-validate:
|
||||
image: docker/compose:alpine-1.29.1
|
||||
stage: test
|
||||
variables:
|
||||
$COMPOSE_EXTRA_ARGS
|
||||
script:
|
||||
- docker-compose $COMPOSE_EXTRA_ARGS config
|
||||
65
documentation/chapters/templates/docker-compose-deploy.adoc
Normal file
65
documentation/chapters/templates/docker-compose-deploy.adoc
Normal file
@ -0,0 +1,65 @@
|
||||
:sourcedir: ../../../
|
||||
|
||||
= Docker-Compose-Deploy
|
||||
|
||||
Kopiert Daten mithilfe von scp aus dem Repo auf ein Deployment-System.
|
||||
Dort wird über SSH Docker-compose up ausgeführt.
|
||||
Für die SSH Verbindung muss ein Private-Key in den CI-CD variablen hinter dem Namen $SSH_PRIVATE_KEY abgelegt werden.
|
||||
|
||||
Um die Compose-Files zu parametrisieren kann ein .env File benutzt werden.
|
||||
Dieses sollte mit einem Skript das hinter der variable ENV_SETUP_FILE hinterlegt ist erstellt werden.
|
||||
.env File sollten nicht in der Repo liegen da keine Passwörter in der Repo liegen sollten.
|
||||
|
||||
.Beispiel für ein setup_env.sh
|
||||
----
|
||||
#!/bin/sh
|
||||
|
||||
echo COMPOSE_PROJECT_NAME=project-prefix >>.env
|
||||
|
||||
#Secrets
|
||||
echo SOME_PASSWORD="$SOME_PASSWORD" >>.env
|
||||
----
|
||||
|
||||
.Variables
|
||||
|===
|
||||
|
||||
|Name |Description | Default Value
|
||||
| SSH_PRIVATE_KEY (In den CI-CD variablen)
|
||||
| Private key der zugriff auf den Deployment Server hat.
|
||||
| -
|
||||
|
||||
| SSH_URL
|
||||
| URL des Servers auf den Docker-Compose ausgeführt werden soll.
|
||||
| -
|
||||
|
||||
| SSH_USER
|
||||
| Der Passende SSH User zu der SSH Verbindung.
|
||||
| -
|
||||
|
||||
| DOCKER_REGISTRY
|
||||
| Die Docker Registry die benutzt werden soll um Images zu pullen.
|
||||
| "$CI_REGISTRY"
|
||||
|
||||
| ENV_SETUP_FILE
|
||||
| Falls ein .env file benutzt werden soll kann es mit einem sh script erstellt werden.
|
||||
Secrets sollten nicht in der Repository liegen sondern in den CI-CD variablen der Repository settings.
|
||||
| "setup_env.sh"
|
||||
|
||||
| SCP_DESTINATION
|
||||
| Ziel Pfad wo Daten mit SCP hin kopiert werden sollen.
|
||||
| -
|
||||
|
||||
| SCP_SOURCE
|
||||
| Pfad zu den daten die mit hilfe von SCP kopiert werden sollen.
|
||||
| $CI_PROJECT_DIR
|
||||
|
||||
| COMPOSE_EXTRA_ARGS
|
||||
| Weitere argumente die an Docker-Compose geschickt werden können.
|
||||
| -
|
||||
|===
|
||||
|
||||
.Docker compose deploy
|
||||
----
|
||||
include::{sourcedir}/docker-compose-deploy.yml[]
|
||||
----
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
:sourcedir: ../../../
|
||||
|
||||
= Docker-Compose-Validate
|
||||
|
||||
Validiert die semantische Korrektheit eines Docker-Compose files.
|
||||
|
||||
.Variables
|
||||
|===
|
||||
|Name |Description | Default Value
|
||||
| COMPOSE_EXTRA_ARGS
|
||||
| Weitere argumente die an Docker-Compose geschickt werden können.
|
||||
| -
|
||||
|
||||
|===
|
||||
|
||||
.Docker compose validate
|
||||
----
|
||||
include::{sourcedir}/docker-compose-validate.yml[]
|
||||
----
|
||||
@ -38,6 +38,9 @@ include::chapters/generalInformation.adoc[leveloffset=1]
|
||||
|
||||
include::chapters/templates/container-publish.adoc[leveloffset=2]
|
||||
include::chapters/templates/container-scan.adoc[leveloffset=2]
|
||||
include::chapters/templates/docker-compose-validate.adoc[leveloffset=2]
|
||||
include::chapters/templates/docker-compose-deploy.adoc[leveloffset=2]
|
||||
|
||||
|
||||
== Versionierungs Templates
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user