go项目.github actions自动打包exe发布版本

简介: 最近俩天在开发一款开源的环境变量管理工具,第一版本用的是PHP实现,但为了更多适应性的考虑,比如java的朋友、node的朋友可以使用,所以选择用Go重写 打包exe可执行文件,即可兼容所有windows环境的电脑使用

前言


最近俩天在开发一款开源的环境变量管理工具,第一版本用的是PHP实现,但为了更多适应性的考虑,比如java的朋友、node的朋友可以使用,所以选择用Go重写 打包exe可执行文件,即可兼容所有windows环境的电脑使用


switchENVhttps://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
目录
相关文章
|
7天前
|
前端开发 JavaScript Go
|
25天前
|
存储 Go 索引
go语言并发实战——日志收集系统(一) 项目前言
go语言并发实战——日志收集系统(一) 项目前言
go语言并发实战——日志收集系统(一) 项目前言
|
7天前
|
Go
Go 项目自动重载解决方案 —— Air 使用入门
**Air**: 提升Go开发效率的利器!自动重载工具,监听文件变化,实时编译运行,无需频繁重启。安装:启用Go Module后,运行`GO111MODULE=on go install github.com/cosmtrek/air@latest`。启动项目:`air`,配置文件默认为`air.toml`。集成到项目,忽略`tmp/`目录。让代码更改即时生效,专注编码,告别手动重启。适用于开发环境,生产环境禁用。[更多详情](https://github.com/cosmtrek/air)
10 1
|
17天前
|
搜索推荐 开发者 SEO
CSDN 大规模抓取 GitHub 上的项目到 GitCode,伪造开发者主页引公愤
后续影响和发展方向 GitCode是CSDN开发的一个代码托管平台,为了快速获得搜索引擎流量,CSDN采用了惯用的手段,直接搬运大量内容进行填充。接下来,他们很可能会通过SEO农场来污染搜索引擎,以获得更多的流量。这种操作不仅对开发者极不尊重,也对整个互联网环境造成了严重的污染。 写在最后 GitCode 已经出来有挺长时间了,期间没闹出过什么问题。近期,不知道 GitCode 内部的哪位领导脑子被驴踢了,做出搬运 GitHub 的仓库来丰富自己平台内容的决定。 这种无视开发者权益、恶意搬运项目的行为,必将受到开发者社区的强烈谴责,尊重开发者的劳动成果,维护开源社区的良好氛围。开发者们也应团结
|
26天前
|
存储 应用服务中间件 持续交付
使用GitHub Actions和Nginx实现自动化部署
使用GitHub Actions和Nginx实现自动化部署
25 4
|
27天前
|
Kubernetes JavaScript 前端开发
OpenSource项目Github Trending一周回顾
OpenSource项目Github Trending一周回顾
|
10天前
|
Go 持续交付
使用 Makefile 管理和部署 Go 项目
在软件开发中,`Makefile` 用于自动化任务,提升效率。在Go项目中,它简化构建和部署。`Makefile`集成了编译、打包、清理和部署等任务,减少错误,提高效率。通过定义规则和依赖,`make`工具执行任务。示例展示了如何创建`Makefile`进行Go应用的自动化部署,包括构建、传输、停启服务。通过`make deploy-dev`一键执行部署流程。`Makefile`不仅简化部署,还可扩展实现更多复杂自动化,提升开发流程的专业性和效率。
14 0
告别龟速,从GitHub快速下载项目的技巧分享,简单又高效!
告别龟速,从GitHub快速下载项目的技巧分享,简单又高效!
|
1月前
|
缓存 应用服务中间件 Go
Go打包和部署:从编译到运行的全指南
本文介绍了Go语言项目的打包和部署方法,包括使用`go run`、`go build`和`go install`命令进行编译,以及跨平台交叉编译。文章还提到了编译参数如`-x`、`-n`和`-race`等。此外,还讨论了如何利用第三方工具(如go-bindata)打包非Go文件,以及清理编译缓存和压缩二进制文件。最后,文中展示了如何使用supervisor和Docker进行部署,并提供了Nginx的反向代理配置示例。
470 1
|
1月前
|
算法 程序员 开发工具
GitHub上新!14个Python项目详细教程(附完整代码)
Python作为程序员的宠儿,越来越得到人们的关注,使用Python进行应用程序开发的也越来越多。 今天给小伙伴们分享的这份项目教程完整代码已上传至GitHub,你可以选择跟着这份教程一段一段的手敲出来这几个项目,也可以直接从GitHub上copy下来。