diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..b034943 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,57 @@ +stages: + - build + +variables: + IMAGE_NAME: $DOCKERHUB_USERNAME/discordsoundbot-vib + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + +docker-build: + stage: build + image: docker:24.0.5 + services: + - docker:24.0.5-dind + rules: + - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH + before_script: + - echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin + script: + - | + if [ "$CI_COMMIT_REF_NAME" == "main" ]; then + export TAG="main" + export VERSION="1.1.0" + export CHANNEL="stable" + elif [[ "$CI_COMMIT_REF_NAME" == "feature/nightly" ]] || [[ "$CI_COMMIT_REF_NAME" == "nightly" ]]; then + export TAG="nightly" + export VERSION="1.1.0-nightly" + export CHANNEL="nightly" + else + export CLEAN_TAG=$(echo "$CI_COMMIT_REF_NAME" | sed 's/\//-/g') + export TAG="$CLEAN_TAG" + export VERSION="1.1.0-dev" + export CHANNEL="dev" + fi + + - echo "Building for channel $CHANNEL with version $VERSION and tag $TAG" + + # Build + - docker pull $IMAGE_NAME:$TAG || true + - > + docker build + --cache-from $IMAGE_NAME:$TAG + --build-arg VITE_BUILD_CHANNEL=$CHANNEL + --build-arg VITE_APP_VERSION=$VERSION + -t $IMAGE_NAME:$CI_COMMIT_SHA + -t $IMAGE_NAME:$TAG + . + + # Push + - docker push $IMAGE_NAME:$CI_COMMIT_SHA + - docker push $IMAGE_NAME:$TAG + + # If main branch, also tag and push as latest + - | + if [ "$CI_COMMIT_REF_NAME" == "main" ]; then + docker tag $IMAGE_NAME:$TAG $IMAGE_NAME:latest + docker push $IMAGE_NAME:latest + fi