#! /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+="$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 -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