From aef98bc667c9d1785d62f543dc51e883171d4863 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:13:46 +0200 Subject: [PATCH 01/10] Add gitlab CI config --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..cc7163a --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,6 @@ +before_script: + - docker info + +build_image: + script: + - docker build -t vbrandl/hoc:latest . From a806513cfc65aae1d90a25595cdf2f6b2a496d50 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:18:19 +0200 Subject: [PATCH 02/10] Update CI config --- .gitlab-ci.yml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc7163a..c2626d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,28 @@ +image: docker:stable + +variables: + # When using dind service we need to instruct docker, to talk with the + # daemon started inside of the service. The daemon is available with + # a network connection instead of the default /var/run/docker.sock socket. + # + # The 'docker' hostname is the alias of the service container as described at + # https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services + # + # Note that if you're using Kubernetes executor, the variable should be set to + # tcp://localhost:2375 because of how Kubernetes executor connects services + # to the job container + DOCKER_HOST: tcp://docker:2375/ + # When using dind, it's wise to use the overlayfs driver for + # improved performance. + DOCKER_DRIVER: overlay2 + +services: + - docker:dind + before_script: - docker info -build_image: +build: + stage: build script: - docker build -t vbrandl/hoc:latest . From d0ae51ed0fab80638151eac5af434c7deb20b212 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:22:22 +0200 Subject: [PATCH 03/10] Use Docker socket binding --- .gitlab-ci.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c2626d8..f0d4932 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,24 +1,5 @@ image: docker:stable -variables: - # When using dind service we need to instruct docker, to talk with the - # daemon started inside of the service. The daemon is available with - # a network connection instead of the default /var/run/docker.sock socket. - # - # The 'docker' hostname is the alias of the service container as described at - # https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services - # - # Note that if you're using Kubernetes executor, the variable should be set to - # tcp://localhost:2375 because of how Kubernetes executor connects services - # to the job container - DOCKER_HOST: tcp://docker:2375/ - # When using dind, it's wise to use the overlayfs driver for - # improved performance. - DOCKER_DRIVER: overlay2 - -services: - - docker:dind - before_script: - docker info From 4a090e739c98ae89f0c621377b95a05e76f86129 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:32:02 +0200 Subject: [PATCH 04/10] Build and deploy --- .gitlab-ci.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f0d4932..5f5728b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,27 @@ image: docker:stable +variables: + DOCKER_HOST: tcp://docker:2375 + DOCKER_DRIVER: overlay2 + CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest + before_script: - - docker info + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY build: stage: build script: - - docker build -t vbrandl/hoc:latest . + - echo $CI_REGISTRY + - docker build --pull -t $CONTAINER_TEST_IMAGE . + - docker push $CONTAINER_TEST_IMAGE + # - docker build -t vbrandl/hoc:latest . + +release-image: + stage: release + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE + - docker push $CONTAINER_RELEASE_IMAGE + only: + - master From 69414da8b9da718e44df956d2b613e780b43eea6 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:33:34 +0200 Subject: [PATCH 05/10] Add build stages --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f5728b..39c56d0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,10 @@ image: docker:stable +services: + - docker:dind + +stages: + - build + - release variables: DOCKER_HOST: tcp://docker:2375 From 97251703275120ec85dd52fc31de572f3fd73eba Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:58:31 +0200 Subject: [PATCH 06/10] Push tags --- .gitlab-ci.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 39c56d0..6637316 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,6 +11,7 @@ variables: DOCKER_DRIVER: overlay2 CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest + CONTAINER_TAG_IMAGE: $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:1} before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY @@ -18,10 +19,8 @@ before_script: build: stage: build script: - - echo $CI_REGISTRY - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE - # - docker build -t vbrandl/hoc:latest . release-image: stage: release @@ -31,3 +30,15 @@ release-image: - docker push $CONTAINER_RELEASE_IMAGE only: - master + +release-tag: + stage: release + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE + - docker push $CONTAINER_TAG_IMAGE + only: + - /^v\d+\.\d+\.\d+/ + expect: + - branch + From 36710b75224873ec44779fc00c45507eb7e09e8f Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 23 Apr 2019 23:59:32 +0200 Subject: [PATCH 07/10] Fix typo --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6637316..7d11516 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,6 +39,6 @@ release-tag: - docker push $CONTAINER_TAG_IMAGE only: - /^v\d+\.\d+\.\d+/ - expect: + excect: - branch From 17f310efd8e656c2e7ceb000ba3aee62f02e118a Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Wed, 24 Apr 2019 00:00:04 +0200 Subject: [PATCH 08/10] Fix typo --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7d11516..bd40706 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,6 +39,6 @@ release-tag: - docker push $CONTAINER_TAG_IMAGE only: - /^v\d+\.\d+\.\d+/ - excect: + except: - branch From 19fc9ef182b9a2887a712be7f282917cecb4316f Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Wed, 24 Apr 2019 00:05:44 +0200 Subject: [PATCH 09/10] Pull known images for caching --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bd40706..cffd741 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,6 +19,9 @@ before_script: build: stage: build script: + - docker pull $CONTAINER_TEST_IMAGE || true + - docker pull $CONTAINER_RELEASE_IMAGE || true + - docker pull $CONTAINER_TAG_IMAGE || true - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE From 1c1d2d07f6e72fabb76ff968daff701720db1288 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Wed, 24 Apr 2019 00:28:54 +0200 Subject: [PATCH 10/10] Cache builder stage --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cffd741..9c2915f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ stages: variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 + CONTAINER_BUILDER_IMAGE: $CI_REGISTRY_IMAGE:builder-latest CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest CONTAINER_TAG_IMAGE: $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:1} @@ -22,6 +23,8 @@ build: - docker pull $CONTAINER_TEST_IMAGE || true - docker pull $CONTAINER_RELEASE_IMAGE || true - docker pull $CONTAINER_TAG_IMAGE || true + - docker pull $CONTAINER_BUILDER_IMAGE || true + - docker build --pull -t $CONTAINER_BUILDER_IMAGE --target builder . - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE