61 lines
1.5 KiB
YAML
61 lines
1.5 KiB
YAML
stages:
|
|
- build
|
|
- cleanup
|
|
- publish
|
|
|
|
variables:
|
|
LATEST_IMAGE: '$CI_REGISTRY_IMAGE:latest'
|
|
PRODUCTION_URL: 'https://home.unjx.de'
|
|
|
|
image: docker:${V_DOCKER}-dind
|
|
|
|
.auth_gitlab:
|
|
before_script:
|
|
- echo $CI_REGISTRY_PASSWORD | docker login --username $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
|
|
after_script:
|
|
- docker logout
|
|
|
|
.rules:deploy:
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/'
|
|
|
|
build:
|
|
rules: !reference [.rules:deploy, rules]
|
|
stage: build
|
|
variables:
|
|
DOCKER_BUILDKIT: 1
|
|
CURRENT_IMAGE: '$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG'
|
|
before_script:
|
|
- !reference [.auth_gitlab, before_script]
|
|
script:
|
|
- docker buildx create --use
|
|
- >
|
|
docker buildx build .
|
|
--provenance=false
|
|
--platform=linux/amd64,linux/arm64
|
|
--build-arg APP_VERSION=${CI_COMMIT_TAG}
|
|
--build-arg V_GOLANG=${V_GOLANG}
|
|
--build-arg V_NODE=${V_NODE}
|
|
--build-arg V_ALPINE=${V_ALPINE}
|
|
--tag ${CURRENT_IMAGE}
|
|
--tag ${LATEST_IMAGE}
|
|
--push
|
|
after_script:
|
|
- !reference [.auth_gitlab, after_script]
|
|
|
|
cleanup:
|
|
rules: !reference [.rules:deploy, rules]
|
|
stage: cleanup
|
|
script:
|
|
- docker system prune -a -f
|
|
- docker volume prune -a -f
|
|
|
|
publish:
|
|
rules: !reference [.rules:deploy, rules]
|
|
stage: publish
|
|
script:
|
|
- mkdir -p ~/.ssh
|
|
- cp $SSH_PRIVATE_KEY ~/.ssh/bot
|
|
- chmod 600 ~/.ssh/bot
|
|
- ssh-keyscan -H $SERVER >> ~/.ssh/known_hosts
|
|
- ssh -i ~/.ssh/bot ${SSH_USER}@${SERVER} $SSH_COMMAND
|