variables: DOCKER_HOST: $DOCKER_HOST_BIO PROJECT_NAME: "frontend" cache: key: $CI_COMMIT_REF_NAME paths: - build/ stages: - build - publish - cleanup # =========================================================================== # Stage: build # =========================================================================== docker-build-latest: stage: build image: docker:git tags: - cache only: refs: - main except: variables: - $CI_COMMIT_TAG before_script: - mkdir -p build script: - docker build -t $DOCKER_NAMESPACE/$PROJECT_NAME:latest . - docker save -o build/image.tar $DOCKER_NAMESPACE/$PROJECT_NAME:latest docker-build-tag: stage: build image: docker:git tags: - cache only: variables: - $CI_COMMIT_TAG before_script: - mkdir -p build script: - docker build -t $DOCKER_NAMESPACE/$PROJECT_NAME:$CI_COMMIT_TAG . - docker save -o build/image.tar $DOCKER_NAMESPACE/$PROJECT_NAME:$CI_COMMIT_TAG artifacts: paths: - build/image.tar expire_in: 10 mins # Optional: Set an expiration time for the artifact # =========================================================================== # Stage: test # # TODO # =========================================================================== # =========================================================================== # Stage: publish # =========================================================================== docker-push-latest: stage: publish image: docker tags: - cache only: - main before_script: - docker login -u $DOCKER_USERNAME -p $DOCKER_TOKEN $DOCKER_REGISTRY script: - docker load -i build/image.tar - docker push $DOCKER_NAMESPACE/$PROJECT_NAME:latest docker-push-tag: stage: publish image: docker tags: - cache only: variables: - $CI_COMMIT_TAG before_script: - docker login -u $DOCKER_USERNAME -p $DOCKER_TOKEN $DOCKER_REGISTRY script: - docker load -i build/image.tar - docker push $DOCKER_NAMESPACE/$PROJECT_NAME:$CI_COMMIT_TAG cleanup: stage: cleanup image: docker:git tags: - cache script: - docker system prune -a -f || true - rm -rf build/ || true when: always allow_failure: true