67 lines
2 KiB
YAML
67 lines
2 KiB
YAML
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
|