新建github-actions自动打包发版脚本

This commit is contained in:
Liujian
2022-10-13 21:57:27 +08:00
parent 035b5327ee
commit caf58b5241
2 changed files with 107 additions and 0 deletions

68
.github/workflows/actions.yaml vendored Normal file
View File

@@ -0,0 +1,68 @@
name: packAndDockerImages
#触发机制当main分支有创建tag时
on:
release:
types:
- published
jobs:
releasePackage:
name: releaseOnGithub
runs-on: ubuntu-latest
steps:
- name: SetOutput #处理Tag字符串并存进outputs
id: vars
run: |
echo "tag=${GITHUB_REF#refs/*/v}" >> $GITHUB_OUTPUT
- name: SetUpGo
uses: actions/setup-go@v3
with:
go-version: '1.17.3'
- name: Checkout #Checkout代码
uses: actions/checkout@v3
- name: GoTidy
run: go mod tidy
- name: Pack #运行打包脚本
run: |
./build/cmd/package.sh ${{ steps.vars.outputs.tag }}
- name: Create archives on Release #创建各种系统架构下的二进制包并上传至release assets
uses: goreleaser/goreleaser-action@v3.1.0
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: List files
run: ls -a dist/ && echo ${{ secrets.GITHUB_TOKEN }}
dockerImage:
needs: [releasePackage]
name: buildDockerImage
runs-on: ubuntu-latest
steps:
- name: SetupGo
uses: actions/setup-go@v3
with:
go-version: '1.17.3'
- uses: actions/checkout@v3
- name: SetOutput
id: vars
run: echo "tag=${GITHUB_REF#refs/*/v}" >> $GITHUB_OUTPUT
- name: GoTidy
run: |
go mod tidy
- name: Pack #运行打包脚本并且将生成的tar包复制至Dockerfile所在目录
run: |
./build/cmd/package.sh ${{ steps.vars.outputs.tag }}
cp ./out/apinto-${{ steps.vars.outputs.tag }}.linux.x64.tar.gz ./build/resources/apinto.linux.x64.tar.gz
- name: Login Docker #登录docker
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: buildImage
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/apinto-gateway:${{ steps.vars.outputs.tag }} -f ./build/resources/Dockerfile ./build/resources
- name: pushImage
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/apinto-gateway:${{ steps.vars.outputs.tag }}
docker tag ${{ secrets.DOCKER_USERNAME }}/apinto-gateway:${{ steps.vars.outputs.tag }} ${{ secrets.DOCKER_USERNAME }}/apinto-gateway:latest
docker push ${{ secrets.DOCKER_USERNAME }}/apinto-gateway:latest

39
.goreleaser.yaml Normal file
View File

@@ -0,0 +1,39 @@
# .goreleaser.yml
builds:
- id: apinto
goos:
- linux
- darwin
goarch:
- amd64
- arm64
- "386"
goarm:
- "6"
gomips:
- hardfloat
goamd64:
- v1
targets:
- linux_arm64
- linux_386
- darwin_arm64
dir: ./app/apinto
main: .
binary: apinto
builder: go
gobinary: go
ldflags:
- -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -X main.builtBy=goreleaser
archives:
- id: default
format: tar.gz
wrap_in_directory: apinto
name_template: "{{ .ProjectName }}_{{ .Tag }}_{{ .Os }}_{{ .Arch }}"
files:
- src: 'build/resources/*'
dst: /
strip_parent: true
release:
name_template: "{{ .Tag }}"
mode: append