新建github-actions自动打包发版脚本
This commit is contained in:
68
.github/workflows/actions.yaml
vendored
Normal file
68
.github/workflows/actions.yaml
vendored
Normal 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
39
.goreleaser.yaml
Normal 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
|
||||
Reference in New Issue
Block a user