使用 GitHub Actions 自动获取推送的分支名称并提交提交(commit)的方法(使用 Node.js)
首先
通过进行本文中所述的解释,可能可以提高在存储库中存在多个生产分支时的Github Actions设置的效率。
我主要负责SRE工作,其中在使用Node.js的电子商务网站中,有一个任务是使用多个正式分支作为仓库的结构,以master为基础进行开发和运营类似于master的电子商务网站的任务。
在这个任务中,由于主要分支不断增加,每次都需要创建 GitHub Actions 的 yml 文件,这样做很麻烦。因此,我想办法自动获取推送的分支名称,并将其提交。终于成功地创建了一个很好的 yml 文件,现在我想分享给大家。
在一般的Git代码库中,通常会像分割主分支和开发分支一样进行切割,然后通过拉取请求合并开发分支,因此很少会出现有多个生产分支的情况。但是,通过更改本文中介绍的yml配置,可以自动获取开发分支的分支名称并进行处理。希望这可以给你提供一些参考。
使用的库(使用的程式库)
在这篇文章中,我们使用了stefanzweifel/git-auto-commit-action的yml来自动提交。
这个库可以在Github Actions中轻松实现自动提交。
链接
配置文件
這是一個設定檔案。專為Node.js建構而製,但稍微修改後也可用於其他專案。稍後會進行解說。
name: node js CI
on:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
env:
BRANCH: "${GITHUB_REF#refs/heads/}"
- run: |
npm i
npm run build --if-present
- name: Commit output
uses: stefanzweifel/git-auto-commit-action@v4.2.0
with:
commit_message: "自動ビルド:${{github.sha}}"
branch: ${{ env.BRANCH }}
解释一下。首先,我们使用
on:
push:
让工作流适用于所有推送操作。
接下来是这一部分。在这里,我们设置了环境变量传入的分支名称和提交消息。
通过BRANCH: “${GITHUB_REF#refs/heads/}”,我们获取了被推送的分支名称。
在这里设置的环境变量可以通过env.~进行引用。
env:
BRANCH: "${GITHUB_REF#refs/heads/}"
然后在这里自动提交。
声明使用uses的stefanzweifel/git-auto-commit-action@v4.2.0
通过commit_message: “自动构建:${{github.sha}}”设置提交消息。
使用${{github.sha}}引用提交ID。
提交消息将变为自动构建:自动构建:015a2b~的样子。
我认为在提交消息中包含ID可以更容易地查看后面的内容,所以我尝试加入了它。
如果不需要,也可以将其设置为”自动构建”。
在这里,我们使用{{ env.BRANCH }}分支设置并提交了push的分支。在这里我们引用了先前获取并设置为环境变量的分支。
- name: Commit output
uses: stefanzweifel/git-auto-commit-action@v4.2.0
with:
commit_message: "自動ビルド:${{github.sha}}"
branch: ${{ env.BRANCH }}
关于Node.js的编写
对于此name部分和npm命令,如果不使用nodejs,可以将其更改为适用于nodejs的命令,这样就可以了。
– run: |
npm install
npm run build –if-present
总结
获取上述推送的分支名称并进行提交和推送的yml文件。
您可以在下面提供的我的存储库中进行操作验证,以确认其运行方式,就像playground一样。
https://github.com/KouWakai/github-actions-test