From e7d5b97f1ad9304928f17477823fff4a808d51fc Mon Sep 17 00:00:00 2001 From: Alexey Kuklin <alex@kuklin.eu> Date: Fri, 6 Sep 2019 12:19:59 +0300 Subject: [PATCH] docker-shipping --- .gitlab-ci.yml | 74 +++++++++++++++++++++++++++++++++++++++----------- Dockerfile | 15 ++++++++++ 2 files changed, 73 insertions(+), 16 deletions(-) create mode 100644 Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b64672..b5aab4e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,22 +1,64 @@ -image: docker +image: docker:latest +services: +- docker:dind + stages: - build -build: - image: registry.vereign.com/docker/vcl-build-base:master +- manifest +- deploy + +variables: + DOCKER_CONFIG: ~/.docker/$CI_JOB_ID + +before_script: + - "[ -d $DOCKER_CONFIG ] || mkdir -p $DOCKER_CONFIG" + - "echo '{ \"experimental\": \"enabled\" }' > $DOCKER_CONFIG/config.json" + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + +after_script: + - "rm -vRf $DOCKER_CONFIG" + +ppc64le: + variables: + IMAGE: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_NAME + stage: build + tags: + - ppc64le + script: + - docker build --build-arg GITLAB_LOGIN=gitlab-ci-token --build-arg GITLAB_PASSWORD=$CI_JOB_TOKEN --pull -t $IMAGE -f Dockerfile . + - docker push $IMAGE + +amd64: + variables: + IMAGE: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_NAME stage: build - artifacts: - paths: - - build.tgz - expire_in: 8 week tags: - - dell + - amd64 + script: + - docker build --build-arg GITLAB_LOGIN=gitlab-ci-token --build-arg GITLAB_PASSWORD=$CI_JOB_TOKEN --pull -t $IMAGE -f Dockerfile . + - docker push $IMAGE + +manifest: + variables: + IMAGE: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + IMAGE_amd64: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/amd64:$CI_COMMIT_REF_NAME + IMAGE_ppc64le: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/ppc64le:$CI_COMMIT_REF_NAME + stage: manifest + tags: + - amd64 + script: + - docker manifest create $IMAGE $IMAGE_amd64 $IMAGE_ppc64le + - docker manifest push $IMAGE + +deploy: + stage: deploy + tags: + - hv2 + only: + - master script: - - mkdir -p $GOPATH/src/code.vereign.com/code - - ln -s `pwd` $GOPATH/src/code.vereign.com/code/ - - cd $GOPATH/src/code.vereign.com/code/vcl - - git config --global credential.https://code.vereign.com.username gitlab-ci-token - - git config --global credential.helper "store --file /tmp/store" - - echo https://gitlab-ci-token:$CI_JOB_TOKEN@code.vereign.com > /tmp/store - - make - - tar -czf build.tgz -C /builds/code/vcl/javascript/dist/. . + - apk add curl + - for ref in $DEPLOYENVS; do curl -X POST -F token=$TRIGGER_TOKEN -F ref=$ref -F variables[branch]=master https://code.vereign.com/api/v4/projects/59/trigger/pipeline; done + + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a072a90 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM registry.vereign.com/docker/vcl-build-base:buster as builder + +ARG GITLAB_LOGIN +ARG GITLAB_PASSWORD + +COPY . /go/src/code.vereign.com/code/vcl + +RUN git config --global url."https://$GITLAB_LOGIN:$GITLAB_PASSWORD@code.vereign.com".insteadOf "https://code.vereign.com" && \ + cd /go/src/code.vereign.com/code/vcl && \ + make + +FROM registry.vereign.com/docker/go-runtime:master +COPY --from=builder /go/src/code.vereign.com/code/vcl/javascript/dist /srv/dist +ENTRYPOINT ["/bin/cp","-a","/srv/dist/.","/srv/target"] + -- GitLab