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
目录
相关文章
|
27天前
|
开发工具 git C++
【够用就好002】外行第一次发布github项目仓库
#deepseek#自学 记录外行学习代码的历程 今天是上传自己的工具代码到github仓库,一直以来是伸手党克隆别人的项目,今天在deepseek的辅导下上传自己的内容。
|
2月前
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
219 69
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
1天前
|
开发工具 git
vscode推送项目到github仓库故障解决1
本文介绍了如何优雅解决本地仓库与远程仓库历史记录不一致的问题,并提供避免未来问题的最佳实践。核心在于理解问题根源(如历史记录差异和常见原因),采用推荐的解决方案(先本地初始化再关联远程仓库),并遵循一致的工作流程、团队协作规范及熟悉 Git 命令。通过强制推送或合并无关历史记录等方式处理现有冲突,同时养成良好习惯以预防类似问题。
|
5月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
156 3
|
4月前
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
383 4
|
4月前
|
存储 JSON Go
如何在 Go 项目中隐藏敏感信息,比如避免暴露用户密码?
在Go语言开发中,用户信息管理常涉及敏感数据如密码的处理。为防止这些数据暴露给客户端,本文介绍了三种方法:使用JSON标签忽略字段、自定义序列化逻辑、使用数据传输对象(DTO),以确保用户数据的安全性。通过这些方法,可以有效控制数据输出,避免敏感信息泄露。
82 1
|
4月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
351 1
|
5月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
147 11
|
5月前
|
JavaScript API 开发工具
使用GitHub Actions自动发布electron多端安装程序
使用GitHub Actions自动发布electron多端安装程序
101 8
|
5月前
|
Go
使用go语言将A助手加入项目中
使用go语言将A助手加入项目中
38 2

热门文章

最新文章