mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-30 07:05:06 +03:00
CI: tag docker images properly
Signed-off-by: Yan Minari <yangm97@gmail.com>
This commit is contained in:
parent
ed569e4578
commit
fc615767a0
2 changed files with 74 additions and 7 deletions
|
@ -202,6 +202,10 @@ jobs:
|
||||||
- run:
|
- run:
|
||||||
name: Set variables
|
name: Set variables
|
||||||
command: |
|
command: |
|
||||||
|
echo 'export DOCKER_TAG_MAIN=$(sh contrib/semver/docker.sh main)' >> $BASH_ENV
|
||||||
|
echo 'export DOCKER_TAG_MAJOR=$(sh contrib/semver/docker.sh major)' >> $BASH_ENV
|
||||||
|
echo 'export DOCKER_TAG_MAJORMINOR=$(sh contrib/semver/docker.sh majorminor)' >> $BASH_ENV
|
||||||
|
echo 'export DOCKER_TAG_FULL=$(sh contrib/semver/docker.sh full)' >> $BASH_ENV
|
||||||
echo 'export DOCKER_BUILDKIT=1' >> $BASH_ENV
|
echo 'export DOCKER_BUILDKIT=1' >> $BASH_ENV
|
||||||
echo 'export CINAME=$(sh contrib/semver/name.sh)' >> $BASH_ENV
|
echo 'export CINAME=$(sh contrib/semver/name.sh)' >> $BASH_ENV
|
||||||
echo 'export CIVERSION=$(sh contrib/semver/version.sh --bare)' >> $BASH_ENV
|
echo 'export CIVERSION=$(sh contrib/semver/version.sh --bare)' >> $BASH_ENV
|
||||||
|
@ -212,8 +216,6 @@ jobs:
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
name: Build images
|
name: Build images
|
||||||
# TODO: don't use latest for develop
|
|
||||||
# TODO: tag using semver https://medium.com/@mccode/using-semantic-versioning-for-docker-image-tags-dfde8be06699
|
|
||||||
# We need to enable experimental features for cli in order to use docker buildx backend
|
# We need to enable experimental features for cli in order to use docker buildx backend
|
||||||
command: |
|
command: |
|
||||||
mkdir -p ~/.docker && echo $'{\n "experimental": "enabled"\n}' >| ~/.docker/config.json
|
mkdir -p ~/.docker && echo $'{\n "experimental": "enabled"\n}' >| ~/.docker/config.json
|
||||||
|
@ -224,19 +226,23 @@ jobs:
|
||||||
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-arm64 linux/arm64/yggdrasil
|
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-arm64 linux/arm64/yggdrasil
|
||||||
cp /tmp/upload/${CINAME}-${CIVERSION}-yggdrasilctl-linux-arm64 linux/arm64/yggdrasilctl
|
cp /tmp/upload/${CINAME}-${CIVERSION}-yggdrasilctl-linux-arm64 linux/arm64/yggdrasilctl
|
||||||
docker build \
|
docker build \
|
||||||
--tag=${DOCKER_NAMESPACE}:${CIVERSION} \
|
--tag=${DOCKER_NAMESPACE}:${DOCKER_TAG_MAIN} \
|
||||||
--tag=${DOCKER_NAMESPACE}:latest \
|
--tag=${DOCKER_NAMESPACE}:${DOCKER_TAG_MAJOR} \
|
||||||
|
--tag=${DOCKER_NAMESPACE}:${DOCKER_TAG_MAJORMINOR} \
|
||||||
|
--tag=${DOCKER_NAMESPACE}:${DOCKER_TAG_FULL} \
|
||||||
--platform=linux/amd64 \
|
--platform=linux/amd64 \
|
||||||
--platform=linux/arm64 \
|
--platform=linux/arm64 \
|
||||||
--file=contrib/docker/ci/alpine/Dockerfile \
|
--file=contrib/docker/ci/scratch/Dockerfile \
|
||||||
.
|
.
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
name: Push images
|
name: Push images
|
||||||
command: |
|
command: |
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
docker push ${DOCKER_NAMESPACE}:${CIVERSION}
|
docker push ${DOCKER_NAMESPACE}:${DOCKER_TAG_MAIN}
|
||||||
docker push ${DOCKER_NAMESPACE}:latest
|
docker push ${DOCKER_NAMESPACE}:${DOCKER_TAG_MAJOR}
|
||||||
|
docker push ${DOCKER_NAMESPACE}:${DOCKER_TAG_MAJORMINOR}
|
||||||
|
docker push ${DOCKER_NAMESPACE}:${DOCKER_TAG_FULL}
|
||||||
|
|
||||||
upload:
|
upload:
|
||||||
machine: true
|
machine: true
|
||||||
|
|
61
contrib/semver/docker.sh
Executable file
61
contrib/semver/docker.sh
Executable file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Get the last tag
|
||||||
|
TAG=$(git describe --abbrev=0 --tags --match="v[0-9]*\.[0-9]*\.[0-9]*" 2>/dev/null)
|
||||||
|
|
||||||
|
# Did getting the tag succeed?
|
||||||
|
if [ $? != 0 ] || [ -z "$TAG" ]; then
|
||||||
|
printf -- "unknown"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the current branch
|
||||||
|
BRANCH=$(git symbolic-ref -q HEAD --short 2>/dev/null)
|
||||||
|
|
||||||
|
# Did getting the branch succeed?
|
||||||
|
if [ $? != 0 ] || [ -z "$BRANCH" ]; then
|
||||||
|
BRANCH="master"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Split out into major, minor and patch numbers
|
||||||
|
MAJOR=$(echo $TAG | cut -c 2- | cut -d "." -f 1)
|
||||||
|
MINOR=$(echo $TAG | cut -c 2- | cut -d "." -f 2)
|
||||||
|
PATCH=$(echo $TAG | cut -c 2- | cut -d "." -f 3)
|
||||||
|
|
||||||
|
main () {
|
||||||
|
# Check if the branch name is master
|
||||||
|
if [ "$BRANCH" = "master" ]; then
|
||||||
|
printf "latest"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# If it is something other than master, just use it
|
||||||
|
printf "$BRANCH"
|
||||||
|
}
|
||||||
|
|
||||||
|
full () {
|
||||||
|
if [ "$BRANCH" = "master" ]; then
|
||||||
|
printf '%d.%d.%d' "$((MAJOR))" "$((MINOR))" "$((PATCH))"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
printf '%d.%d.%d-%s' "$((MAJOR))" "$((MINOR))" "$((PATCH))" "$BRANCH"
|
||||||
|
}
|
||||||
|
|
||||||
|
majorminor () {
|
||||||
|
if [ "$BRANCH" = "master" ]; then
|
||||||
|
printf '%d.%d' "$((MAJOR))" "$((MINOR))"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
printf '%d.%d-%s' "$((MAJOR))" "$((MINOR))" "$BRANCH"
|
||||||
|
}
|
||||||
|
|
||||||
|
major () {
|
||||||
|
if [ "$BRANCH" = "master" ]; then
|
||||||
|
printf "$((MAJOR))"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
printf '%d-%s' "$((MAJOR))" "$BRANCH"
|
||||||
|
}
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
$arg
|
||||||
|
done
|
Loading…
Add table
Add a link
Reference in a new issue