| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- # 当分支 main 有 push 事件,并且此次 push 包含了 components 目录下的文件时,执行以下任务
- # 读取 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 中第一个二级标题与第二个二级标题之间的内容,包含换行和空格
- # 将两个内容合并为一个字符串,中间使用 --- 分隔
- # 组成内容示例为:
- # - 新增了一个功能。
- # ---
- # - Add a new feature.
- # 将合并的内容作为 Releases describe
- # Set as the latest release 并发布本次 Release
- # 进入到 .github 目录下,执行 pnpm install,再执行 node releases.js,生成 releases.txt 文件
- # releases.js 实现:读取仓库内的 /doc/guide/changelog.md 和 /doc/guide/changelog_en.md 中第一个二级标题与第二个二级标题之间的内容
- # 将两个内容合并为一个字符串,中间使用 --- 分隔
- name: Auto releases
- on:
- push:
- branches:
- - main
- paths:
- - 'components/**'
- 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
- # 将 Get changelog 和 Get changelog_en 两个输出内容合并为一个字符串,中间使用 --- 分隔,其中的换行和空格保留,--- 单独占一行
- - name: Get body
- id: body
- run: |
- echo body=$(cat <<EOF
- ${{ steps.changelog.outputs.changelog }}
- ---
- ${{ steps.changelog_en.outputs.changelog_en }}
- EOF
- ) >> $GITHUB_OUTPUT
- # 作为 latest release 发布本次 Release
- - name: Release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.STDF_GITHUB_TOKEN }}
- with:
- tag_name: ${{ steps.version.outputs.version }}
- release_name: ${{ steps.version.outputs.version }}
- body: ${{ steps.body.outputs.body }}
- draft: false
- prerelease: false
- # - name: Setup Node.js environment
- # uses: actions/setup-node@v1
- # with:
- # node-version: 18.x
- # # 安装 pnpm
- # - name: Install pnpm
- # run: |
- # npm install -g pnpm
- # # cd 到 .github 目录下,执行 pnpm install,执行 node releases.js,生成 releases.txt 文件
- # - name: Install dependencies and generate releases.txt
- # run: |
- # cd .github
- # pnpm install
- # node releases.js
- # # cd 到 .github 目录下,读取 releases.txt 文件内容,保留其中的换行与空格,作为 Releases describe
- # - name: Get body
- # id: body
- # run: |
- # cd .github
- # echo body=$(cat releases.txt) >> $GITHUB_OUTPUT
|