有没有办法设置 Github 工作流程/操作来更新草稿版本的标签、名称和目标?



我目前正在使用Release Drafter工作流,每当PR合并到develop分支(暂存(时,该工作流都会创建草稿发布。这创建了一个很棒的草稿,但现在我想在develop合并到master时将其发布。当这种情况发生时,我需要在发布之前更新发布名称和标记。然后在我们的松弛工程渠道中发出通知。

我能做什么:

  • 设置推入master的操作
  • 获取最新的草案版本,然后使用该id作为参考
  • 使用eregon/Publish发布操作进行发布
  • 发送松弛消息

我缺少什么:

  • 一个操作,我可以传递发布id并更新标记和名称

名称和标签将是当前日期%Y.%m%.d-%H:%M

以下是我迄今为止创建的动作YML

name: On master merged publish release & notify
on:
push:
branches:
- "master"
jobs:
release:
name: Publish GitHub Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create tag from date
id: create_tag
run: |
tag=builds-$(date +%Y.%m%.d__%H:%M)
echo "::set-output name=tag::$tag" #  https://github.com/ruby/ruby-dev-builder/blob/master/.github/workflows/build.yml
- name: Get last Draft
id: last_release
uses: InsonusK/get-latest-release@v1.0.1 # https://github.com/InsonusK/get-latest-release
with:
myToken: ${{ github.token }} # TODO check if set
exclude_types: "release"
view_top: 1
- name: "Print result"
run: |
echo "id: ${{ steps.last_release.outputs.id }}"
echo "name: ${{ steps.last_release.outputs.name }}"
echo "tag_name: ${{ steps.last_release.outputs.tag_name }}"
echo "created_at: ${{ steps.last_release.outputs.created_atd }}"
echo "draft: ${{ steps.last_release.outputs.draft }}"
echo "prerelease: ${{ steps.last_release.outputs.prerelease }}"
# This is Pseudocode.
- name: update release
id: update_release
uses: tubone24/update_release@v1.0
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag:  ${{ steps.create_tag.outputs.tag }}
- name: Publish Release
- uses: eregon/publish-release@v1 #https://github.com/elgohr/Github-Release-Action
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
release_id: ${{ steps.last_release.outputs.release_id }}
# Needs test
- name: Slack Notification Success
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: automated-deploys
SLACK_COLOR: green
SLACK_MESSAGE: ${{ steps.last_release.outputs.body }} # TODO get info
SLACK_TITLE: Deploying 🚀
SLACK_USERNAME: GH Action Parrot
SLACK_ICON: https://emoji.slack-edge.com/T3LPQHAMV/headbangingparrot/1898efdc354c8ff8.gif
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

您可以添加一个步骤,使用Github的REST API更新发布草案:

- name: Update draft to ${{ github.event.client_payload.release_tag }}
run: |
curl 
-u user:${{ secrets.USER_TOKEN }} 
-X PATCH 
-H "Accept: application/vnd.github.v3+json" 
https://api.github.com/repos/{owner}/{repository}/releases/${{ steps.last_release.outputs.release_id }} 
-d '{"tag_name":"${{ steps.last_release.outputs.tag_name }}", "name": "${{ steps.last_release.outputs.tag_name }}", "draft": "false"}'

最新更新