name: GoFrame CLI Build Release on: push: # Sequence of patterns matched against refs/tags tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: build: name: Build And Release runs-on: ubuntu-latest steps: - name: Checkout Github Code uses: actions/checkout@v2 - name: Set Up Golang Environment uses: actions/setup-go@v2 with: go-version: 1.17 - name: Build CLI Binary run: | echo "Building linux amd64 binary..." cd cmd/gf GOOS=linux GOARCH=amd64 go build main.go chmod +x main ./main install -y # gf build - name: Build CLI Binary For All Platform run: | cd cmd/gf gf build main.go -n gf -a all -s all # 处理gf-cli批量编译后的文件结构 - name: Move Files Before Upx run: | cd cmd/gf/bin for OS in *;do for FILE in $OS/*;\ do if [[ ${OS} =~ 'windows' ]];\ then rm -rf noupx && mkdir noupx && mv $FILE noupx/gf_$OS.exe && rm -rf $OS;\ else mv $FILE gf_$OS && rm -rf $OS;\ fi;done;done # UPX 加壳所有文件 - name: Upx All Binary uses: gacts/upx@master with: dir: 'cmd/gf/bin' upx_args: '-9' # 移动未UPX的windows程序到上传bin目录下 - name: Move Files After Upx run: | cd cmd/gf/bin mv noupx/* ./ && rm -rf noupx ls -l - name: Create Github Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: GoFrame CLI Release ${{ github.ref }} draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset uses: alexellis/upload-assets@0.2.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: asset_paths: '["cmd/gf/bin/gf_*"]'