فهرست منبع

Change actions

杜府 3 سال پیش
والد
کامیت
94980ba474
2فایلهای تغییر یافته به همراه83 افزوده شده و 3 حذف شده
  1. 81 0
      .github/workflows/active-releases.yml
  2. 2 3
      .github/workflows/auto-releases.yml

+ 81 - 0
.github/workflows/active-releases.yml

@@ -0,0 +1,81 @@
+# 当分支 main 有 push 事件,并且提交信息包含 [active releases] 时触发,表示主动触发此 Action
+# 读取 components/package.json 中的 version 字段,作为 Releases tag 和 Releases title
+# 读取仓库内的 /doc/guide/changelog.md 和 /doc/guide/changelog_en.md 的第一行内容,去除 ## 和空格,与 components/package.json 中的 version 字段比较
+# 如果不相同则此次不需要发布 Release,退出
+# 如果相同则继续往下执行
+# 读取仓库内的 /doc/guide/changelog.md 中前两个二级标题之间的内容,包含换行和空格
+# 读取仓库内的 /doc/guide/changelog_en.md 中第一个二级标题与第二个二级标题之间的内容,包含换行和空格
+# Set as the latest release 并发布本次 Release,body 为上一步的两个内容合并为一个字符串,中间使用 --- 分隔
+
+name: Auto releases
+
+on:
+    push:
+        branches:
+            - main
+        if: "contains(github.event.head_commit.message, '[active releases]')"
+
+jobs:
+    releases:
+        runs-on: ubuntu-latest
+
+        steps:
+            - name: Checkout
+              uses: actions/checkout@v2
+
+            # 读取 components/package.json 中的 version 字段,作为 Releases tag 和 Releases title
+            - name: Get version
+              id: version
+              run: |
+                  echo version=$(cat components/package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT
+
+            # 读取仓库内的 /doc/guide/changelog.md 的第一行内容,去除 ## 和空格
+            - name: Get md_version
+              id: md_version
+              run: |
+                  echo md_version=$(cat doc/guide/changelog.md | head -1 | sed 's/## //g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT
+
+            # 读取仓库内的 /doc/guide/changelog_en.md 的第一行内容,去除 ## 和空格
+            - name: Get md_version_en
+              id: md_version_en
+              run: |
+                  echo md_version_en=$(cat doc/guide/changelog_en.md | head -1 | sed 's/## //g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT
+
+            # 比较 Get version 与 Get md_version 和 Get md_version_en 三者的输出内容,如果不相同则此次不需要发布 Release,退出
+            - name: Check version
+              run: |
+                  if [[ ${{ steps.version.outputs.version }} != ${{ steps.md_version.outputs.md_version }} ]]; then
+                      echo "This is not a tag push. Skipping."
+                      exit 78
+                  fi
+                  if [[ ${{ steps.version.outputs.version }} != ${{ steps.md_version_en.outputs.md_version_en }} ]]; then
+                      echo "This is not a tag push. Skipping."
+                      exit 78
+                  fi
+
+            # 读取仓库内的 /doc/guide/changelog.md 中前两个二级标题之间的内容,包含换行和空格
+            - name: Get changelog
+              id: changelog
+              run: |
+                  echo changelog=$(sed -n '1,/##/{/##/!p;}' doc/guide/changelog.md | sed '/^$/d') >> $GITHUB_OUTPUT
+
+            # 读取仓库内的 /doc/guide/changelog_en.md 中第一个二级标题与第二个二级标题之间的内容,包含换行和空格
+            - name: Get changelog_en
+              id: changelog_en
+              run: |
+                  echo changelog_en=$(sed -n '1,/##/{/##/!p;}' doc/guide/changelog_en.md | sed '/^$/d') >> $GITHUB_OUTPUT
+
+            # 作为 latest release 发布本次 Release,body 为 changelog 和 changelog_en 的合并内容,中间使用 --- 分隔
+            - name: Release
+              uses: actions/create-release@v1
+              env:
+                  GITHUB_TOKEN: ${{ secrets.STDF_GITHUB_TOKEN }}
+              with:
+                  tag_name: v${{ steps.version.outputs.version }}
+                  release_name: v${{ steps.version.outputs.version }}
+                  body: |
+                      ${{ steps.changelog.outputs.changelog }}
+                      ---
+                      ${{ steps.changelog_en.outputs.changelog_en }}
+                  draft: false
+                  prerelease: false

+ 2 - 3
.github/workflows/auto-releases.yml

@@ -1,4 +1,4 @@
-# 当分支 main 有 push 事件,并且此次 push 包含了 components 和 doc 目录下的文件时,执行以下任务
+# 当分支 main 有 push 事件,并且此次 push 包含了 components/package.json 文件时,执行以下任务
 # 读取 components/package.json 中的 version 字段,作为 Releases tag 和 Releases title
 # 读取仓库内的 /doc/guide/changelog.md 和 /doc/guide/changelog_en.md 的第一行内容,去除 ## 和空格,与 components/package.json 中的 version 字段比较
 # 如果不相同则此次不需要发布 Release,退出
@@ -14,8 +14,7 @@ on:
         branches:
             - main
         paths:
-            - 'components/**'
-            - 'doc/**'
+            - 'components/package.json'
 
 jobs:
     releases: