diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 339081438..f12d5f8ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -262,7 +262,7 @@ pages: tags: - docker -docker_release: +.docker_publish: stage: deploy image: egon0/docker-with-buildx-and-git:bash services: @@ -271,17 +271,44 @@ docker_release: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - cp -r front/dist api/frontend - - (if [ "$CI_COMMIT_REF_NAME" == "develop" ] || [ "$CI_COMMIT_REF_NAME" == "stable" ]; then ./scripts/set-api-build-metadata.sh $(echo $CI_COMMIT_SHA | cut -c 1-8); fi); script: - - if [[ ! -z "$CI_COMMIT_TAG" ]]; then (./docs/get-releases-json.py | scripts/is-docker-latest.py $CI_COMMIT_TAG -) && export DOCKER_LATEST_TAG="-t $IMAGE_LATEST" || export DOCKER_LATEST_TAG=; fi - - if [[ "$CI_COMMIT_REF_NAME" =~ ^[0-9]+(.[0-9]+){1,2}$ ]]; then export stable=1 && export major="$(echo $CI_COMMIT_REF_NAME | cut -d '.' -f 1)" && export minor="$(echo $CI_COMMIT_REF_NAME | cut -d '.' -f 1,2)"; fi + +docker_publish_stable_release: + # Publish a docker image for releases + extends: .docker_publish + rules: + - if: $CI_COMMIT_TAG && '$CI_COMMIT_REF_NAME =~ ^[0-9]+(.[0-9]+){1,2}$' + script: + # Check if this is the latest release + - ./docs/get-releases-json.py | scripts/is-docker-latest.py $CI_COMMIT_TAG - && export DOCKER_LATEST_TAG="-t $IMAGE_LATEST" || export DOCKER_LATEST_TAG=; + - export major="$(echo $CI_COMMIT_REF_NAME | cut -d '.' -f 1)" + - export minor="$(echo $CI_COMMIT_REF_NAME | cut -d '.' -f 1,2)"; fi - cd api - docker buildx create --use --name A$CI_COMMIT_SHORT_SHA - - docker buildx build --platform $BUILD_PLATFORMS --push -t $IMAGE -t $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-$(date +%Y-%m-%d) -t $IMAGE_LATEST . + - docker buildx build --platform $BUILD_PLATFORMS --push -t $IMAGE -t $DOCKER_LATEST_TAG -t $major -t $minor . + +docker_publish_unstable_release: + # Publish a docker image for releases + extends: .docker_publish + rules: + - if: $CI_COMMIT_TAG && '$CI_COMMIT_REF_NAME !~ ^[0-9]+(.[0-9]+){1,2}$' + script: + # Check if this is the latest release + - cd api + - docker buildx create --use --name A$CI_COMMIT_SHORT_SHA + - docker buildx build --platform $BUILD_PLATFORMS --push -t $IMAGE . + +docker_published_non-release: + # Publish a docker image for each commit on develop + extends: .docker_publish only: - develop@funkwhale/funkwhale - stable@funkwhale/funkwhale - - tags@funkwhale/funkwhale + script: + - ./scripts/set-api-build-metadata.sh $CI_COMMIT_SHA + - cd api + - docker buildx create --use --name A$CI_COMMIT_SHORT_SHA + - docker buildx build --platform $BUILD_PLATFORMS --push -t $IMAGE . docker_all_in_one_release: stage: deploy