stages: - build variables: REGISTRY_HOST: "10.10.10.10:5050" IMAGE_NAME: "$REGISTRY_HOST/$CI_PROJECT_PATH" DOCKER_HOST: "tcp://docker:2375" DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "" # Force clone via IP instead of hostname to bypass Unraid Docker DNS issues CI_SERVER_URL: "http://10.10.10.10:9080" GITLAB_FEATURES: "" docker-build: stage: build image: docker:24.0.5 services: - name: docker:24.0.5-dind command: - "--host=tcp://0.0.0.0:2375" - "--host=unix:///tmp/docker.sock" - "--tls=false" - "--insecure-registry=10.10.10.10:5050" rules: - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login "$REGISTRY_HOST" -u "$CI_REGISTRY_USER" --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