diff --git a/pipelines/docker-build-generic.yml b/pipelines/docker-build-generic.yml new file mode 100644 index 0000000..1fa8ceb --- /dev/null +++ b/pipelines/docker-build-generic.yml @@ -0,0 +1,47 @@ +stages: + - build + - package + - publish + +include: + - template: Security/Secret-Detection.gitlab-ci.yml + - project: 'developerdurp/yml' + ref: 'main' + file: + - 'jobs/docker.yml' + - 'jobs/version.yml' + +secret_detection: + stage: .pre + rules: + - when: always + allow_failure: false + +version: + extends: .version + stage: .pre + rules: + - when: always + +build: + extends: .docker_build + stage: build + artifacts: + paths: + - $CI_PROJECT_DIR/package + needs: + - job: version + artifacts: true + +upload: + extends: .docker_push_gitlab + stage: package + needs: + - job: version + artifacts: true + - job: build + artifacts: true + rules: + - if: $CI_COMMIT_BRANCH =~ '/^release/' + - if: $CI_COMMIT_BRANCH =~ 'main' + - when: never diff --git a/scripts/docker/build.sh b/scripts/docker/build.sh new file mode 100644 index 0000000..ab69c37 --- /dev/null +++ b/scripts/docker/build.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#%%MULTILINE_YAML_START +#Build Docker Container +mkdir $CI_PROJECT_DIR/packages +containername=$(echo "$PROJECT_NAME" | awk '{print tolower($0)}') + +docker build -t $containername . +docker save -o $CI_PROJECT_DIR/packages/$containername.$VERSION.tar.gz $containername diff --git a/scripts/docker/login.sh b/scripts/docker/login.sh new file mode 100644 index 0000000..685d57c --- /dev/null +++ b/scripts/docker/login.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +#%%MULTILINE_YAML_START +#Docker Login +docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY/$CI_PROJECT_PATH diff --git a/scripts/docker/push-gitlab.sh b/scripts/docker/push-gitlab.sh new file mode 100644 index 0000000..ee9dedd --- /dev/null +++ b/scripts/docker/push-gitlab.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#%%MULTILINE_YAML_START +#Push container to gitlab +containername=$(echo "$PROJECT_NAME" | awk '{print tolower($0)}') + +docker import $CI_PROJECT_DIR/packages/$containername.$VERSION.tar.gz $CI_REGISTRY/$CI_PROJECT_PATH:$VERSION +docker import $CI_PROJECT_DIR/packages/$containername.$VERSION.tar.gz $CI_REGISTRY/$CI_PROJECT_PATH:latest + +docker push "$CI_REGISTRY/$CI_PROJECT_PATH:$VERSION" +docker push "$CI_REGISTRY/$CI_PROJECT_PATH:latest" diff --git a/templates/docker.tpl.yml b/templates/docker.tpl.yml index c4408a8..4f9eb07 100644 --- a/templates/docker.tpl.yml +++ b/templates/docker.tpl.yml @@ -10,3 +10,29 @@ script: - ./scripts/docker-login.sh - ./scripts/docker-build.sh + + +.docker_build: + image: registry.durp.info/docker:20.10.17 + variables: + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + DOCKER_HOST: tcp://127.0.0.1:2375/ + services: + - name: docker:dind + entrypoint: ["dockerd-entrypoint.sh", "--tls=false"] + script: + - ./scripts/docker/build.sh + +.docker_push_gitlab: + image: registry.durp.info/docker:20.10.17 + variables: + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + DOCKER_HOST: tcp://127.0.0.1:2375/ + services: + - name: docker:dind + entrypoint: ["dockerd-entrypoint.sh", "--tls=false"] + script: + - ./scripts/docker/login.sh + - ./scripts/docker/push-gitlab.sh