From 524c42bca642b616872ce07d297ab412fcc6edaf Mon Sep 17 00:00:00 2001 From: mfeix Date: Thu, 15 Jul 2021 14:56:19 +0200 Subject: [PATCH 1/6] feat(Docker-Compose) Add docker Compose Templates --- docker-compose-deploy.gitlab-ci.yml | 23 +++++++++++++++++++++++ docker-compose-validate.gitlab-ci.yml | 7 +++++++ 2 files changed, 30 insertions(+) create mode 100644 docker-compose-deploy.gitlab-ci.yml create mode 100644 docker-compose-validate.gitlab-ci.yml diff --git a/docker-compose-deploy.gitlab-ci.yml b/docker-compose-deploy.gitlab-ci.yml new file mode 100644 index 0000000..fb05d96 --- /dev/null +++ b/docker-compose-deploy.gitlab-ci.yml @@ -0,0 +1,23 @@ +.deploy-docker-compose: + image: docker/compose:alpine-1.29.1 + stage: deploy + # variables: + # SCP_DESTINATION: "path to destination where scp is copying files" + # SCP_SOURCE: "path to local files" + # COMPOSE_EXTRA_ARGS: "Extra arguments that will be passed to docker-compose" + # SSH_URL: "url to the SSH service" + # SSH_USER: "username of the ssh connection" + rules: + - when: manual + # https://docs.gitlab.com/ee/ci/ssh_keys/ + before_script: + - if [ -f "setup_env.sh" ]; then chmod +x ./setup_env.sh; ./setup_env.sh; 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 + - ssh-keyscan $SSH_URL >> ~/.ssh/known_hosts + 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 \ No newline at end of file diff --git a/docker-compose-validate.gitlab-ci.yml b/docker-compose-validate.gitlab-ci.yml new file mode 100644 index 0000000..301247a --- /dev/null +++ b/docker-compose-validate.gitlab-ci.yml @@ -0,0 +1,7 @@ +Validate Intern: + image: docker/compose:alpine-1.29.1 + stage: test + # variables: + # COMPOSE_EXTRA_ARGS: + script: + - docker-compose $COMPOSE_EXTRA_ARGS config \ No newline at end of file From caadb120773622e8160fbc7f0b58d043f9fb4bfe Mon Sep 17 00:00:00 2001 From: mfeix Date: Fri, 23 Jul 2021 10:05:37 +0200 Subject: [PATCH 2/6] docs(Docker-Compose) Add docs vor Docker Compose Templates --- docker-compose-deploy.gitlab-ci.yml | 20 +++++--- docker-compose-validate.gitlab-ci.yml | 2 - .../templates/docker-compose-deploy.adoc | 51 +++++++++++++++++++ .../templates/docker-compose-validate.adoc | 19 +++++++ 4 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 documentation/chapters/templates/docker-compose-deploy.adoc create mode 100644 documentation/chapters/templates/docker-compose-validate.adoc diff --git a/docker-compose-deploy.gitlab-ci.yml b/docker-compose-deploy.gitlab-ci.yml index fb05d96..78343c4 100644 --- a/docker-compose-deploy.gitlab-ci.yml +++ b/docker-compose-deploy.gitlab-ci.yml @@ -1,23 +1,27 @@ .deploy-docker-compose: image: docker/compose:alpine-1.29.1 stage: deploy - # variables: - # SCP_DESTINATION: "path to destination where scp is copying files" - # SCP_SOURCE: "path to local files" - # COMPOSE_EXTRA_ARGS: "Extra arguments that will be passed to docker-compose" - # SSH_URL: "url to the SSH service" - # SSH_USER: "username of the ssh connection" + 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 "setup_env.sh" ]; then chmod +x ./setup_env.sh; ./setup_env.sh; fi + - 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 \ No newline at end of file + - DOCKER_HOST=ssh://$SSH_USER@$SSH_URL docker-compose $COMPOSE_EXTRA_ARGS up -d --remove-orphans \ No newline at end of file diff --git a/docker-compose-validate.gitlab-ci.yml b/docker-compose-validate.gitlab-ci.yml index 301247a..1b010bb 100644 --- a/docker-compose-validate.gitlab-ci.yml +++ b/docker-compose-validate.gitlab-ci.yml @@ -1,7 +1,5 @@ Validate Intern: image: docker/compose:alpine-1.29.1 stage: test - # variables: - # COMPOSE_EXTRA_ARGS: script: - docker-compose $COMPOSE_EXTRA_ARGS config \ No newline at end of file diff --git a/documentation/chapters/templates/docker-compose-deploy.adoc b/documentation/chapters/templates/docker-compose-deploy.adoc new file mode 100644 index 0000000..83a5854 --- /dev/null +++ b/documentation/chapters/templates/docker-compose-deploy.adoc @@ -0,0 +1,51 @@ +:sourcedir: ../../../ + += Docker-Compose-Deploy + + Kopiert Daten mit hilfe von scp aus der Repo auf einen 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. + +.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. +| - +|=== + +.container scan template +---- +include::{sourcedir}/docker-compose-deploy.yml[] +---- + diff --git a/documentation/chapters/templates/docker-compose-validate.adoc b/documentation/chapters/templates/docker-compose-validate.adoc new file mode 100644 index 0000000..0776a34 --- /dev/null +++ b/documentation/chapters/templates/docker-compose-validate.adoc @@ -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. +| - + +|=== + +.container scan template +---- +include::{sourcedir}/docker-compose-validate.yml[] +---- \ No newline at end of file From fd54a70159d3848eb5e0a2916ff07a199d719fdf Mon Sep 17 00:00:00 2001 From: mfeix Date: Fri, 23 Jul 2021 10:10:58 +0200 Subject: [PATCH 3/6] docs(Docker-Compose) Add docs into main document --- documentation/chapters/templates/docker-compose-deploy.adoc | 2 +- documentation/document.adoc | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/documentation/chapters/templates/docker-compose-deploy.adoc b/documentation/chapters/templates/docker-compose-deploy.adoc index 83a5854..f848d39 100644 --- a/documentation/chapters/templates/docker-compose-deploy.adoc +++ b/documentation/chapters/templates/docker-compose-deploy.adoc @@ -2,7 +2,7 @@ = Docker-Compose-Deploy - Kopiert Daten mit hilfe von scp aus der Repo auf einen deployment System. + Kopiert Daten mithilfe von scp aus der Repo auf einen 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. diff --git a/documentation/document.adoc b/documentation/document.adoc index 8e69334..56c7ed6 100644 --- a/documentation/document.adoc +++ b/documentation/document.adoc @@ -37,6 +37,9 @@ include::chapters/generalInformation.adoc[leveloffset=1] == Container Templates 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 From f2b9e1dcbbe11ecdf528e0ce0b370d6e38a673bd Mon Sep 17 00:00:00 2001 From: mfeix Date: Fri, 23 Jul 2021 11:44:35 +0200 Subject: [PATCH 4/6] fix(Docker-compose) corrected validate docker compose --- docker-compose-deploy.gitlab-ci.yml | 2 +- docker-compose-validate.gitlab-ci.yml | 4 +++- documentation/chapters/templates/docker-compose-deploy.adoc | 2 +- documentation/chapters/templates/docker-compose-validate.adoc | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docker-compose-deploy.gitlab-ci.yml b/docker-compose-deploy.gitlab-ci.yml index 78343c4..5f7a26b 100644 --- a/docker-compose-deploy.gitlab-ci.yml +++ b/docker-compose-deploy.gitlab-ci.yml @@ -1,4 +1,4 @@ -.deploy-docker-compose: +.docker-compose-deploy: image: docker/compose:alpine-1.29.1 stage: deploy variables: diff --git a/docker-compose-validate.gitlab-ci.yml b/docker-compose-validate.gitlab-ci.yml index 1b010bb..89e35ba 100644 --- a/docker-compose-validate.gitlab-ci.yml +++ b/docker-compose-validate.gitlab-ci.yml @@ -1,5 +1,7 @@ -Validate Intern: +.docker-compose-validate: image: docker/compose:alpine-1.29.1 stage: test + variables: + $COMPOSE_EXTRA_ARGS script: - docker-compose $COMPOSE_EXTRA_ARGS config \ No newline at end of file diff --git a/documentation/chapters/templates/docker-compose-deploy.adoc b/documentation/chapters/templates/docker-compose-deploy.adoc index f848d39..8d34144 100644 --- a/documentation/chapters/templates/docker-compose-deploy.adoc +++ b/documentation/chapters/templates/docker-compose-deploy.adoc @@ -44,7 +44,7 @@ Secrets sollten nicht in der Repository liegen sondern in den CI-CD variablen de | - |=== -.container scan template +.Docker compose deploy ---- include::{sourcedir}/docker-compose-deploy.yml[] ---- diff --git a/documentation/chapters/templates/docker-compose-validate.adoc b/documentation/chapters/templates/docker-compose-validate.adoc index 0776a34..09afefa 100644 --- a/documentation/chapters/templates/docker-compose-validate.adoc +++ b/documentation/chapters/templates/docker-compose-validate.adoc @@ -13,7 +13,7 @@ Validiert die semantische Korrektheit eines Docker-Compose files. |=== -.container scan template +.Docker compose validate ---- include::{sourcedir}/docker-compose-validate.yml[] ---- \ No newline at end of file From 51e701c46b600a935e48add4a7f1aef923e057b2 Mon Sep 17 00:00:00 2001 From: Wolfram Gulde Date: Wed, 28 Jul 2021 10:20:48 +0000 Subject: [PATCH 5/6] refactor(Docker-Compose): Bessere formulierung des Deployments --- documentation/chapters/templates/docker-compose-deploy.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/chapters/templates/docker-compose-deploy.adoc b/documentation/chapters/templates/docker-compose-deploy.adoc index 8d34144..674021b 100644 --- a/documentation/chapters/templates/docker-compose-deploy.adoc +++ b/documentation/chapters/templates/docker-compose-deploy.adoc @@ -2,7 +2,7 @@ = Docker-Compose-Deploy - Kopiert Daten mithilfe von scp aus der Repo auf einen deployment System. + 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. From ef65633413e57cd07ca9452ad711768264155a9a Mon Sep 17 00:00:00 2001 From: mfeix Date: Wed, 28 Jul 2021 13:03:36 +0200 Subject: [PATCH 6/6] docs(Docker-Compose): Add a Documentation for setup_env.sh file. --- .../chapters/templates/docker-compose-deploy.adoc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/documentation/chapters/templates/docker-compose-deploy.adoc b/documentation/chapters/templates/docker-compose-deploy.adoc index 674021b..18e3692 100644 --- a/documentation/chapters/templates/docker-compose-deploy.adoc +++ b/documentation/chapters/templates/docker-compose-deploy.adoc @@ -6,6 +6,20 @@ 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 |===