76 lines
1.9 KiB
Bash
76 lines
1.9 KiB
Bash
#! /bin/bash
|
|
|
|
export DOCKER_API_VERSION=1.41
|
|
docker -v
|
|
|
|
if [ -n "$INPUT_USERNAME" ]; then
|
|
echo "$INPUT_PASSWORD" | docker login $INPUT_REGISTRY -u $INPUT_USERNAME --password-stdin
|
|
|
|
if [ ! -f ~/.docker/config.json ] || ! cat ~/.docker/config.json | grep -q "$INPUT_REGISTRY"; then
|
|
echo "登录失败"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo $INPUT_TAGS
|
|
|
|
tags=(${INPUT_TAGS//,/ })
|
|
|
|
echo $tags
|
|
|
|
args=(${INPUT_BUILD_ARGS//,/ })
|
|
|
|
echo $args
|
|
|
|
cd $INPUT_CONTEXT
|
|
|
|
tmp_image_name=$(uuidgen)
|
|
tmp_image_name=${tmp_image_name//-/}
|
|
|
|
BUILD_ARGS=""
|
|
for item in "${args[@]}"; do
|
|
BUILD_ARGS+="--build-arg $item " # 添加一个空格在每个元素之后
|
|
done
|
|
|
|
echo $BUILD_ARGS
|
|
|
|
if [ -n "$INPUT_PLATFORM" ]; then
|
|
#开启实验特性
|
|
DOCKER_CLI_EXPERIMENTAL=enabled
|
|
|
|
docker buildx create --platform $INPUT_PLATFORM --use --name build
|
|
echo "docker buildx build $BUILD_ARGS -t $tmp_image_name -f $INPUT_DOCKERFILE --load --platform $INPUT_PLATFORM ."
|
|
docker buildx build $BUILD_ARGS -t $tmp_image_name -f $INPUT_DOCKERFILE --load --platform $INPUT_PLATFORM .
|
|
else
|
|
#--build-arg
|
|
echo "docker build $BUILD_ARGS -t $tmp_image_name -f $INPUT_DOCKERFILE ."
|
|
docker build $BUILD_ARGS -t $tmp_image_name -f $INPUT_DOCKERFILE .
|
|
fi
|
|
|
|
if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q $tmp_image_name; then
|
|
echo "镜像存在"
|
|
|
|
for tag in ${tags[@]}; do
|
|
image_name="$INPUT_REGISTRY/$INPUT_IMAGE:$tag"
|
|
echo "docker tag $tmp_image_name $image_name"
|
|
docker tag $tmp_image_name $image_name
|
|
docker push $image_name
|
|
|
|
docker rmi $image_name
|
|
done
|
|
|
|
echo "删除临时镜像$tmp_image_name"
|
|
sleep 20
|
|
docker rmi $tmp_image_name
|
|
|
|
echo "删除所有构建镜像完成"
|
|
else
|
|
echo "镜像不存在"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "$INPUT_SCRIPT" ]; then
|
|
echo "存在自定义脚本:$INPUT_SCRIPT"
|
|
evel "$INPUT_SCRIPT"
|
|
fi
|