# # This guy is awesome: https://dev.to/bzinoun/gitlab-ci-to-build-and-push-containers-to-registry-538a # image: morlay/buildx:607a2ce variables: # DinD's vfs driver is pretty intensive; this is less so DOCKER_DRIVER: overlay2 CI_HUB_USERNAME: rehashedsalt stages: - build - test - push services: - docker:dind before_script: - echo -n "$CI_LOGIN_PASSWORD" | docker login -u "$CI_LOGIN_USERNAME" --password-stdin - docker version - docker info after_script: - docker logout hub.docker.com # BUILD Build: stage: build script: - docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest || true - docker buildx create --use - > docker buildx build --pull --platform linux/amd64,linux/arm64 --cache-from $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest --tag $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA . - docker images - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA # TEST Test_HTTP_200: stage: test script: - apk add curl - docker run -d -p 8889:80 $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA - curl localhost:8889 | grep -ie '200 OK' - docker kill $(docker ps -q) # PUSH Push_When_Tag: stage: push only: - tags script: - docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA - > docker tag $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME - > docker tag $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest - docker images - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest Push_Bleeding: stage: push script: - docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA - > docker tag $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA $CI_HUB_USERNAME/$CI_PROJECT_NAME:bleeding - docker images - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:bleeding