V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MajestySolor
V2EX  ›  GitHub

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

  •  
  •   MajestySolor · Jul 29, 2020 · 4014 views
    This topic created in 2100 days ago, the information mentioned may be changed or developed.
    当一个新的 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 都尝试了下,没有符合我心意的
    想自己写,但那语法条件逻辑实在是太复杂了
    求大佬指导
    Supplement 1  ·  Aug 2, 2020

    我的研究成果,有类似需求的可以直接用,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 replies    2020-07-30 17:25:32 +08:00
    vcheckzen
        1
    vcheckzen  
       Jul 29, 2020 via Android
    调调 API 就行了
    uTOmOuk3L6sb4MSI
        2
    uTOmOuk3L6sb4MSI  
       Jul 29, 2020 via iPhone
    我记得大部分 action 都是 create-release 和 upload-release 都是分开的,我在 create-release 先写 note,之后 upload-release 再上传文件即可。
    imzcg2
        4
    imzcg2  
       Jul 30, 2020 via Android
    目测 travis 可以轻松完成任务
    MajestySolor
        5
    MajestySolor  
    OP
       Jul 30, 2020
    @ODD10 #2 请问你的脚本 create release 这一步里面的 ${{ env.useVersionInfo }} 这个环境变量是怎么来的呢,我就是不明白怎么设置这些变量
    Trim21
        6
    Trim21  
       Jul 30, 2020 via Android
    这些环境变量有三个来源。一个你在 yaml 里面写的,一个是 actions 自带的一些 github.ref 之类的变量,还有一个是输出特定命令到 stdout 也可以设置环境变量。具体的 logging command 的格式我忘了,GitHub 的文档有写。
    bitdust
        7
    bitdust  
       Jul 30, 2020
    提问:为什么这类 CI 的构建脚本都这么难用?
    我理解作为一种 DSL,CI 系统需要解决的问题和一般的脚本语言不一样
    但写 yml 描述构建过程实在是太坑爹了吧
    makefile 都比这些玩意人性化一些,
    以后会出现更好用的 CI 脚本语言吗?
    uTOmOuk3L6sb4MSI
        8
    uTOmOuk3L6sb4MSI  
       Jul 30, 2020 via iPhone   ❤️ 1
    @MajestySolor #5
    每个 steps 都有一个 env,你们看我在上面赋值吗?
    https://i.loli.net/2020/07/30/2CskupRytUe9wjF.jpg
    MintZX
        9
    MintZX  
       Jul 30, 2020
    我是 ruby 开发,我用的这个小工具 https://github.com/jstastny/publish-gem-to-github

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

    这个 action 可以根据 tag 自动在 github release
    MajestySolor
        12
    MajestySolor  
    OP
       Jul 30, 2020
    @bitdust #7 哈哈,确实难用,我这几天已经看晕了
    MajestySolor
        13
    MajestySolor  
    OP
       Jul 30, 2020
    @ODD10 #8 太感谢了,终于学会怎么设置读取环境变量了,按你这个做法我可以直接设置读取 tag 和 message,感谢感谢。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2697 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 11:16 · PVG 19:16 · LAX 04:16 · JFK 07:16
    ♥ Do have faith in what you're doing.