所以我的任务是建立一个自动标记 docker 镜像的工作流程。
例如,第一个图像必须使用 1.0.0,而在新的推送中,它需要是 1.0.1,依此类推。 有没有简单的方法可以实现这一点?
我们正在使用 github 的自托管实例,并且仅允许 github 自身执行一些操作。所以最好是通过我们自己的实例来管理。
我用谷歌搜索了很多,但如果不使用 github 上的操作就找不到简单的解决方案。
你尝试过bash吗? grep 你的 docker 镜像并按 image_name 进行过滤。 获取当前标签并使用它来派生下一个标签。
类似以下内容:
#!/bin/bash
# Define image name (replace with your actual image name)
IMAGE_NAME="your/project"
# Get the current version (or set a default if none exists)
CURRENT_VERSION=$(docker images | grep -w "$IMAGE_NAME" | awk '{print $2}')
[[ -z "$CURRENT_VERSION" ]] && CURRENT_VERSION="0.0.0"
# Extract major, minor, and patch numbers (assuming semantic versioning)
MAJOR_VERSION=${CURRENT_VERSION%%.*}
MINOR_VERSION=${CURRENT_VERSION#*.}
MINOR_VERSION=${MINOR_VERSION%%.*}
PATCH_VERSION=${CURRENT_VERSION#*.}
# Increment patch version
PATCH_VERSION=$((PATCH_VERSION + 1))
# Generate new version number
NEW_VERSION="$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION"
# Build and tag the image
docker build -t "$IMAGE_NAME:$NEW_VERSION" .
echo "Built and tagged image: $IMAGE_NAME:$NEW_VERSION"