V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MajestySolor
V2EX  ›  GitHub

Github Actions 有人用么,求指导如何实现一个自动 release 的 workflow

  •  
  •   MajestySolor · 2020-07-29 23:02:28 +08:00 · 3232 次点击
    这是一个创建于 1581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    当一个新的 tag push 到特定分支时自动 release,release 名字为该新 tag,并且将上一个 tag 到当前 tag 之间的 commit message 自动写入 release note

    比如说远程代码库最新 tag 是 v2.0
    当我将一个新的 v2.1 tag push 到 master 时 自动触发 release
    release title 是新 tag 也就是 v2.1
    release note 是 v2.0 到 v2.1 之间的 commit message

    在 actions market 里逛了好久,各种相关的 action 都尝试了下,没有符合我心意的
    想自己写,但那语法条件逻辑实在是太复杂了
    求大佬指导
    第 1 条附言  ·  2020-08-02 23:51:31 +08:00

    我的研究成果,有类似需求的可以直接用,push新tag后自动create release,release title为新tag,release note为commit log,不是太复杂的个人小项目用起来还是不错的

    https://gist.github.com/Solor/da3b80c5c7532d967356af9770e971cc

    name: Release
    
    on:
      push:
        tags:
        - '*'
    
    jobs:
      release:
        runs-on: ubuntu-latest
        steps:
    
          - name: Checkout
            uses: actions/checkout@v2
    
          - name: Generate changelog
            id: changelog
            uses: metcalfc/[email protected]
            with:
              myToken: ${{ secrets.GITHUB_TOKEN }}
    
          - name: Create Release
            id: create_release
            uses: actions/create-release@latest
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              tag_name: ${{ github.ref }}
              release_name: Release ${{ github.ref }}
              body: ${{ steps.changelog.outputs.changelog }}
              draft: false
              prerelease: false
    
    13 条回复    2020-07-30 17:25:32 +08:00
    vcheckzen
        1
    vcheckzen  
       2020-07-29 23:49:46 +08:00 via Android
    调调 API 就行了
    uTOmOuk3L6sb4MSI
        2
    uTOmOuk3L6sb4MSI  
       2020-07-29 23:59:57 +08:00 via iPhone
    我记得大部分 action 都是 create-release 和 upload-release 都是分开的,我在 create-release 先写 note,之后 upload-release 再上传文件即可。
    imzcg2
        4
    imzcg2  
       2020-07-30 00:05:12 +08:00 via Android
    目测 travis 可以轻松完成任务
    MajestySolor
        5
    MajestySolor  
    OP
       2020-07-30 00:12:16 +08:00
    @ODD10 #2 请问你的脚本 create release 这一步里面的 ${{ env.useVersionInfo }} 这个环境变量是怎么来的呢,我就是不明白怎么设置这些变量
    Trim21
        6
    Trim21  
       2020-07-30 00:15:59 +08:00 via Android
    这些环境变量有三个来源。一个你在 yaml 里面写的,一个是 actions 自带的一些 github.ref 之类的变量,还有一个是输出特定命令到 stdout 也可以设置环境变量。具体的 logging command 的格式我忘了,GitHub 的文档有写。
    bitdust
        7
    bitdust  
       2020-07-30 00:47:40 +08:00
    提问:为什么这类 CI 的构建脚本都这么难用?
    我理解作为一种 DSL,CI 系统需要解决的问题和一般的脚本语言不一样
    但写 yml 描述构建过程实在是太坑爹了吧
    makefile 都比这些玩意人性化一些,
    以后会出现更好用的 CI 脚本语言吗?
    uTOmOuk3L6sb4MSI
        8
    uTOmOuk3L6sb4MSI  
       2020-07-30 02:54:45 +08:00 via iPhone   ❤️ 1
    @MajestySolor #5
    每个 steps 都有一个 env,你们看我在上面赋值吗?
    https://i.loli.net/2020/07/30/2CskupRytUe9wjF.jpg
    MintZX
        9
    MintZX  
       2020-07-30 03:41:45 +08:00
    我是 ruby 开发,我用的这个小工具 https://github.com/jstastny/publish-gem-to-github

    你可以自己根据语言开发一个
    wangxiaoer
        10
    wangxiaoer  
       2020-07-30 08:46:52 +08:00
    这些 Action 的执行环境在哪里?跟 gitlab-runner 一样需要自己部署一个 runner 吗?
    tyx1703
        11
    tyx1703  
       2020-07-30 09:24:41 +08:00
    https://github.com/actions/create-release#example-workflow---create-a-release

    这个 action 可以根据 tag 自动在 github release
    MajestySolor
        12
    MajestySolor  
    OP
       2020-07-30 17:21:21 +08:00
    @bitdust #7 哈哈,确实难用,我这几天已经看晕了
    MajestySolor
        13
    MajestySolor  
    OP
       2020-07-30 17:25:32 +08:00
    @ODD10 #8 太感谢了,终于学会怎么设置读取环境变量了,按你这个做法我可以直接设置读取 tag 和 message,感谢感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5451 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:29 · PVG 16:29 · LAX 00:29 · JFK 03:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.