# yamllint disable rule:line-length --- docker-build-dev: image: docker:latest services: - name: docker:dind stage: dev-deployment tags: - docker_priv rules: - if: $CI_COMMIT_BRANCH == 'dev' environment: name: development before_script: - | apk --no-cache add jq MAJOR=$(cat app/config/version.json | jq '.major' ) MINOR=$(cat app/config/version.json | jq '.minor' ) SUB=$(cat app/config/version.json | jq '.sub' ) - | apk --no-cache add curl latest_tag=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | sed -Ene '/^ *"tag_name": *"(v.+)",$/s//\1/p') echo "Using buildx version $latest_tag" curl -sSLo docker-buildx "https://github.com/docker/buildx/releases/download/$latest_tag/buildx-$latest_tag.linux-amd64" chmod a+x docker-buildx mkdir -p ~/.docker/cli-plugins mv docker-buildx ~/.docker/cli-plugins/docker-buildx docker version - docker run --rm --privileged aptman/qus -- -r - docker run --rm --privileged aptman/qus -s -- -p aarch64 x86_64 - echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY - echo $DOCKERHUB_TOKEN | docker login -u "$DOCKERHUB_USER" --password-stdin $DOCKERHUB_REGISTRY script: - | tag=":$CI_COMMIT_REF_SLUG" VERSION="${MAJOR}.${MINOR}.${SUB}" - | echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" echo "Crafty Version: $VERSION" - docker context create tls-environment - docker buildx create --name zedBuilder --use tls-environment - docker buildx build --cache-from type=registry,ref="$CI_REGISTRY_IMAGE${tag}" --build-arg BUILDKIT_INLINE_CACHE=1 --build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")" --build-arg "BUILD_REF=${CI_COMMIT_SHA}" --build-arg "CRAFTY_VER=${VERSION}" --tag "$CI_REGISTRY_IMAGE${tag}" --tag "arcadiatechnology/crafty-4${tag}" --platform linux/arm64/v8,linux/amd64 --push . after_script: - | docker buildx rm zedBuilder && echo "Successfully Stopped builder instance" || echo "Failed to stop builder instance." docker context rm tls-environment || true echo "Please review multi-arch manifests are present:" docker buildx imagetools inspect "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" docker-build-prod: image: docker:latest services: - name: docker:dind stage: prod-deployment tags: - docker_priv rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH environment: name: production before_script: - | apk --no-cache add jq MAJOR=$(cat app/config/version.json | jq '.major' ) MINOR=$(cat app/config/version.json | jq '.minor' ) SUB=$(cat app/config/version.json | jq '.sub' ) - | apk --no-cache add curl latest_tag=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | sed -Ene '/^ *"tag_name": *"(v.+)",$/s//\1/p') echo "Using buildx version $latest_tag" curl -sSLo docker-buildx "https://github.com/docker/buildx/releases/download/$latest_tag/buildx-$latest_tag.linux-amd64" chmod a+x docker-buildx mkdir -p ~/.docker/cli-plugins mv docker-buildx ~/.docker/cli-plugins/docker-buildx docker version - docker run --rm --privileged aptman/qus -- -r - docker run --rm --privileged aptman/qus -s -- -p aarch64 x86_64 - echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY - echo $DOCKERHUB_TOKEN | docker login -u "$DOCKERHUB_USER" --password-stdin $DOCKERHUB_REGISTRY script: - | VERSION="${MAJOR}.${MINOR}.${SUB}" - | echo "Running on branch '$CI_COMMIT_BRANCH'" echo "Crafty Version: $VERSION" - docker context create tls-environment - docker buildx create --name zedBuilder --use tls-environment - docker buildx build --cache-from type=registry,ref="$CI_REGISTRY_IMAGE:latest" --build-arg BUILDKIT_INLINE_CACHE=1 --build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")" --build-arg "BUILD_REF=${CI_COMMIT_SHA}" --build-arg "CRAFTY_VER=${VERSION}" --tag "$CI_REGISTRY_IMAGE:$VERSION" --tag "$CI_REGISTRY_IMAGE:latest" --tag "arcadiatechnology/crafty-4:$VERSION" --tag "arcadiatechnology/crafty-4:latest" --platform linux/arm64/v8,linux/amd64 --push . after_script: - | docker buildx rm zedBuilder && echo "Successfully Stopped builder instance" || echo "Failed to stop builder instance." docker context rm tls-environment || true echo "Please review multi-arch manifests are present:" docker buildx imagetools inspect "$CI_REGISTRY_IMAGE${tag}"