docker/entrypoint.sh

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