前言
最近俩天在开发一款开源的环境变量管理工具,第一版本用的是PHP实现,但为了更多适应性
的考虑,比如java的朋友、node的朋友可以使用,所以选择用Go
重写 打包exe可执行文件,即可兼容所有windows环境的电脑使用
switchENV: https://github.com/xuanyanwow/switchENV
为了更方便用户,所以想在打tag的时候自动构建release 并且打包exe文件
github actions
github提供的CI/CD环境,可以编写脚本进行测试,有各大操作系统环境等
当前使用的脚本
每一步骤都写上了注释,应该不会很难看懂
name: Go # 只有在打tag的时候执行该CI on: push: tags: - v* jobs: build: runs-on: ${{ matrix.os }} # 声明策略,可以遍历在多环境、不同系统内循环构建 交叉编译 strategy: matrix: os: [ubuntu-latest] goarch: [amd64] goos: [windows] steps: - uses: actions/checkout@v3 # 安装Go环境 - name: Set up Go uses: actions/setup-go@v3 with: go-version: 1.18 # 获取当前tag的版本 - name: Get version id: get_version run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} # 从该tag打上一个release标签(这里会output一些参数 后面才能使用) - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.get_version.outputs.VERSION }} release_name: ${{ steps.get_version.outputs.VERSION }} draft: false prerelease: false # Go build exe 命令 - name: Build exe run: go build -o switchENV.exe env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} CGO_ENABLED: 0 # exe文件压缩一下 减少体积 - name: Packaging... run: tar czf switchENV-${{ matrix.goos }}-${{ steps.get_version.outputs.VERSION }}.tgz switchENV.exe # 上传到release-asset 用户就可以在release页面下载了 - name: Uploading assets... id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} # 这里是create_release步骤输出的参数 asset_path: ./switchENV-${{ matrix.goos }}-${{ steps.get_version.outputs.VERSION }}.tgz asset_name: switchENV-${{ matrix.goos }}-${{ steps.get_version.outputs.VERSION }}.tgz asset_content_type: application/gzip