From 701d72a358cac4bf5fc2da51b88d8a31801ecd68 Mon Sep 17 00:00:00 2001 From: Liujian <824010343@qq.com> Date: Tue, 18 Jun 2024 10:42:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=AF=91=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/cmd/common.sh | 25 +++++++++++++-------- build/cmd/docker_build.sh | 10 +++++++-- build/cmd/docker_publish.sh | 44 +++++++++++++++++++++++++++++++++++++ build/cmd/qiniu_publish.sh | 29 ++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 11 deletions(-) create mode 100755 build/cmd/docker_publish.sh create mode 100755 build/cmd/qiniu_publish.sh diff --git a/build/cmd/common.sh b/build/cmd/common.sh index 35665672..f9d87ff0 100755 --- a/build/cmd/common.sh +++ b/build/cmd/common.sh @@ -11,14 +11,20 @@ BasePath=$(pwd) ## 项目根目录 # 生成版本号 function genVersion(){ - if [[ "$1" = "" ]] - then - v=$(git rev-parse --short HEAD) - time=$(date "+%Y%m%d%H") - echo "$time-$v" - exit 0 - fi - echo "$1" + # 判断是否传参 + if [ -n "$1" ]; then + echo "$1" + return + fi + # 是否安装了 git + + tag=$(git describe --abbrev=0 --tags) + + if [ $? -ne 0 ]; then + tag=$(git rev-parse --short HEAD) + fi + + echo "${tag}" } # 构建app @@ -40,10 +46,11 @@ function buildApp(){ -X 'github.com/eolinker/apinto/utils/version.eoscVersion=${EOSC_VERSION}'" echo -e "build $APP:go build -ldflags "-w -s $flags" -o ${OUTPATH}/$APP ${BasePath}/app/$APP" ARCH=$3 - if [[ "$ARCH" = "" ]] + if [[ "$ARCH" == "" ]] then ARCH="amd64" fi + echo "CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -ldflags \"-w -s $flags\" -o ${OUTPATH}/$APP ${BasePath}/app/$APP" CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -ldflags "-w -s $flags" -o ${OUTPATH}/$APP ${BasePath}/app/$APP # echo "build $APP:${buildCMD}" diff --git a/build/cmd/docker_build.sh b/build/cmd/docker_build.sh index b2590694..1310a4ef 100755 --- a/build/cmd/docker_build.sh +++ b/build/cmd/docker_build.sh @@ -5,6 +5,7 @@ echo $0 #VERSION=`git describe --abbrev=0 --tags` VERSION=$(genVersion $1) + Username="eolinker" if [[ "$2" != "" ]] then @@ -12,15 +13,20 @@ then fi ARCH=$3 +PLATFORM="" if [[ "$ARCH" == "" ]] then ARCH="amd64" fi - +if [[ "$ARCH" == "amd64" ]] +then + PLATFORM="--platform=linux/amd64" +fi +./build/cmd/package.sh ${VERSION} ${ARCH} PackageName=apinto_${VERSION}_linux_${ARCH}.tar.gz cp out/${PackageName} ./build/resources/apinto.linux.x64.tar.gz -docker build -t ${Username}/apinto-gateway:${VERSION}-${ARCH} -f ./build/cmd/Dockerfile ./build/resources +docker build $PLATFORM -t ${Username}/apinto-gateway:${VERSION}-${ARCH} -f ./build/cmd/Dockerfile ./build/resources rm -rf ./build/resources/apinto.linux.x64.tar.gz diff --git a/build/cmd/docker_publish.sh b/build/cmd/docker_publish.sh new file mode 100755 index 00000000..ae5b168b --- /dev/null +++ b/build/cmd/docker_publish.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + + +echo $0 +. $(dirname $0)/common.sh + + +Version=$(genVersion) +echo ${Version} +ImageName="docker.eolinker.com/apinto/apinto-gateway" +echo "docker manifest rm \"${ImageName}:${Version}\"" +docker manifest rm "${ImageName}:${Version}" + +set -e +./build/cmd/docker_build.sh ${Version} "docker.eolinker.com/apinto" amd64 + +./build/cmd/docker_build.sh ${Version} "docker.eolinker.com/apinto" arm64 + + + +echo "docker push \"${ImageName}:${Version}-amd64\"" +docker push "${ImageName}:${Version}-amd64" +echo "docker push \"${ImageName}:${Version}-arm64\"" +docker push "${ImageName}:${Version}-arm64" + +echo "Create manifest ${ImageName}:${Version}" +docker manifest create "${ImageName}:${Version}" "${ImageName}:${Version}-amd64" "${ImageName}:${Version}-arm64" + +echo "Annotate manifest ${ImageName}:${Version} ${ImageName}:${Version}-amd64 --os linux --arch amd64" +docker manifest annotate "${ImageName}:${Version}" "${ImageName}:${Version}-amd64" --os linux --arch amd64 + +echo "Annotate manifest ${ImageName}:${Version} ${ImageName}:${Version}-arm64 --os linux --arch arm64" +docker manifest annotate "${ImageName}:${Version}" "${ImageName}:${Version}-arm64" --os linux --arch arm64 + +echo "Push manifest ${ImageName}:${Version}" +docker manifest push "${ImageName}:${Version}" + + +PUBLISH=$1 +if [[ "${PUBLISH}" == "upload" ]];then + ./build/cmd/qiniu_publish.sh amd64 + ./build/cmd/qiniu_publish.sh arm64 +fi + diff --git a/build/cmd/qiniu_publish.sh b/build/cmd/qiniu_publish.sh new file mode 100755 index 00000000..56ab65aa --- /dev/null +++ b/build/cmd/qiniu_publish.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e + +. $(dirname $0)/common.sh + + +Version=$(genVersion) + +ImageName="docker.eolinker.com/apinto/apinto-gateway" +APP="apinto-gateway" + +ARCH=$1 +if [[ $ARCH == "" ]];then + ARCH="amd64" +fi + +Tar="${APP}.${Version}.${ARCH}.tar.gz" + +docker tag ${ImageName}:${Version}-${ARCH} ${ImageName}:${Version} + +echo "docker save -o ${Tar} ${ImageName}:${Version}" +docker save -o ${Tar} ${ImageName}:${Version} + +echo "qshell rput eolinker-main \"apinto/images/${Tar}\" ${Tar}" +qshell rput eolinker-main "apinto/images/${Tar}" ${Tar} + +rm -f ${Tar} +docker rmi -f ${ImageName}:${Version} \ No newline at end of file