build: check for release notes before release #448

This commit is contained in:
Sören Weber 2023-01-28 11:58:45 +01:00
parent 1ced7fb41e
commit df66b6fade
No known key found for this signature in database
GPG key ID: BEC6D55545451B6D
8 changed files with 133 additions and 38 deletions

View file

@ -17,14 +17,17 @@ runs:
- name: Get tag uniqueness - name: Get tag uniqueness
id: unique_tag id: unique_tag
uses: mukunku/tag-exists-action@v1.2.0 # wildcard version @v1 not possible uses: mukunku/tag-exists-action@v1.2.0 # wildcard version @v1 not possible
with:
tag: ${{ env.MILESTONE }}
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
with:
tag: ${{ env.MILESTONE }}
- name: Get closed issues for milestone - name: Get closed issues for milestone
id: closed_issues id: closed_issues
uses: octokit/graphql-action@v2.x uses: octokit/graphql-action@v2.x
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
with: with:
query: | query: |
query { query {
@ -32,13 +35,13 @@ runs:
issueCount issueCount
} }
} }
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
- name: Get open issues for milestone - name: Get open issues for milestone
id: open_issues id: open_issues
uses: octokit/graphql-action@v2.x uses: octokit/graphql-action@v2.x
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
with: with:
query: | query: |
query { query {
@ -46,15 +49,51 @@ runs:
issueCount issueCount
} }
} }
- name: Get old version number
id: oldvers
uses: andstor/file-reader-action@v1
with:
path: layouts/partials/version.txt
- name: Get old main version number
id: oldmainvers
uses: ashley-taylor/regex-property-action@v1
with:
value: ${{ steps.oldvers.outputs.contents }}
regex: (\d+)\.(\d+)\.\d+.*
replacement: '$1\.$2'
- name: Get current patch version number
id: patchvers
uses: ashley-taylor/regex-property-action@v1
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }} with:
value: ${{ env.MILESTONE }}
regex: \d+\.\d+\.(\d+)
replacement: "$1"
- name: Get migration notes
id: migrationnotes
uses: andstor/file-reader-action@v1
with:
path: exampleSite/content/basics/migration/_index.en.md
- name: Check for old migration notes
id: hasoldnotes
uses: ashley-taylor/regex-property-action@v1
with:
value: ${{ steps.migrationnotes.outputs.contents }}
regex: '.*?[\n\r\s]*<!--GH-ACTION-RELEASE-MILESTONE-->[\n\r\s]*-*\s*[\n\r\s]*?[\n\r]+##\s+${{ steps.oldmainvers.outputs.value }}\.0\s+.*?[\n\r][\n\r\s]*.*'
flags: gs
replacement: '1'
- name: Set outcome - name: Set outcome
id: outcome id: outcome
shell: bash shell: bash
run: | run: |
if [ "${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 && fromJSON(steps.open_issues.outputs.data).search.issueCount == 0 && steps.unique_tag.outputs.exists == 'false' }}" = "true" ]; then if [ "${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 && fromJSON(steps.open_issues.outputs.data).search.issueCount == 0 && steps.unique_tag.outputs.exists == 'false' && ( (steps.patchvers.outputs.value!='0'&&steps.hasoldnotes.outputs.value=='1') || (steps.patchvers.outputs.value=='0'&&steps.hasoldnotes.outputs.value!='1') ) }}" = "true" ]; then
echo "outcome=success" >> $GITHUB_OUTPUT echo "outcome=success" >> $GITHUB_OUTPUT
else else
echo "outcome=failure" >> $GITHUB_OUTPUT echo "outcome=failure" >> $GITHUB_OUTPUT
@ -63,10 +102,13 @@ runs:
- name: Log results and exit - name: Log results and exit
shell: bash shell: bash
run: | run: |
echo outcome : ${{ steps.outcome.outputs.outcome }} echo outcome : ${{ steps.outcome.outputs.outcome }}
echo has unique tag : ${{ steps.unique_tag.outputs.exists == 'false' }} echo has unique tag : ${{ steps.unique_tag.outputs.exists == 'false' }}
echo has closed issues: ${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 }} echo has closed issues : ${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 }}
echo has open issues : ${{ fromJSON(steps.open_issues.outputs.data).search.issueCount > 0 }} echo has open issues : ${{ fromJSON(steps.open_issues.outputs.data).search.issueCount > 0 }}
echo is patch version : ${{ steps.patchvers.outputs.value != '0' }}
echo has old main notes : ${{ steps.hasoldnotes.outputs.value == '1' }}
echo are notes okay : ${{ (steps.patchvers.outputs.value!='0'&&steps.hasoldnotes.outputs.value=='1') || (steps.patchvers.outputs.value=='0'&&steps.hasoldnotes.outputs.value!='1') }}
if [ "${{ steps.outcome.outputs.outcome }}" = "failure" ]; then if [ "${{ steps.outcome.outputs.outcome }}" = "failure" ]; then
exit 1 exit 1
fi fi

View file

@ -9,9 +9,9 @@ runs:
steps: steps:
- name: Deploy site - name: Deploy site
uses: peaceiris/actions-gh-pages@v3 uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ env.GITHUB_TOKEN }}
publish_dir: ${{ env.GITHUB_WORKSPACE }}/../public
env: env:
GITHUB_TOKEN: ${{ inputs.github_token }} GITHUB_TOKEN: ${{ inputs.github_token }}
GITHUB_WORKSPACE: ${{ github.workspace }} GITHUB_WORKSPACE: ${{ github.workspace }}
with:
github_token: ${{ env.GITHUB_TOKEN }}
publish_dir: ${{ env.GITHUB_WORKSPACE }}/../public

View file

@ -15,34 +15,84 @@ runs:
with: with:
node-version: '16' node-version: '16'
- name: Setup git
shell: bash
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
- name: Get current date
id: date
uses: Kaven-Universe/github-action-current-date-time@v1
with:
format: 'YYYY-MM-DD'
- name: Get current main version number
id: mainvers
uses: ashley-taylor/regex-property-action@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
value: ${{ env.MILESTONE }}
regex: (\d+\.\d+)\.\d+
replacement: "$1.0"
- name: Get next version number
id: nextvers
uses: WyriHaximus/github-action-next-semvers@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
version: ${{ env.MILESTONE }}
- name: Close milestone - name: Close milestone
uses: Akkjon/close-milestone@v2 uses: Akkjon/close-milestone@v2
with:
milestone_name: ${{ env.MILESTONE }}
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }} GITHUB_TOKEN: ${{ inputs.github_token }}
with:
milestone_name: ${{ env.MILESTONE }}
- name: Create provisionary tag - name: Create temporary tag
shell: bash shell: bash
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }} GITHUB_TOKEN: ${{ inputs.github_token }}
run: | run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
git tag --message "" "$MILESTONE" git tag --message "" "$MILESTONE"
git push origin "$MILESTONE" git push origin "$MILESTONE"
- name: Update migration docs
uses: mingjun97/file-regex-replace@v1
with:
regex: '(.)[\n\r\s]*<!--GH-ACTION-RELEASE-MILESTONE-->[\n\r\s]*-*\s*[\n\r\s]*?[\n\r]+##\s*.*?[\n\r][\n\r\s]*(.)'
replacement: "$1\n\n<!--GH-ACTION-RELEASE-MILESTONE-->\n\n---\n\n## ${{ steps.mainvers.outputs.value }} (${{ steps.date.outputs.time }})\n\n$2"
include: exampleSite/content/basics/migration/_index.en.md
- name: Update generator version
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
run: |
echo -n "$MILESTONE" > layouts/partials/version.txt
- name: Update changelog - name: Update changelog
shell: bash
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
GREN_GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
npx github-release-notes@0.17.1 changelog --generate --override --tags=all
- name: Commit updates
shell: bash shell: bash
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }} GITHUB_TOKEN: ${{ inputs.github_token }}
GREN_GITHUB_TOKEN: ${{ inputs.github_token }} GREN_GITHUB_TOKEN: ${{ inputs.github_token }}
run: | run: |
echo -n "$MILESTONE" > layouts/partials/version.txt
npx github-release-notes@0.17.1 changelog --generate --override --tags=all
git add * git add *
git commit --message "Ship tag $MILESTONE" git commit --message "Ship tag $MILESTONE"
git push origin main git push origin main
@ -69,26 +119,16 @@ runs:
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }} GITHUB_TOKEN: ${{ inputs.github_token }}
GREN_GITHUB_TOKEN: ${{ inputs.github_token }}
run: | run: |
echo -n "$MILESTONE+tip" > layouts/partials/version.txt echo -n "$MILESTONE+tip" > layouts/partials/version.txt
git add * git add *
git commit --message "Mark non-release version" git commit --message "Mark non-release version"
git push origin main git push origin main
- name: Generate next version number
id: semvers
uses: WyriHaximus/github-action-next-semvers@v1
with:
version: ${{ env.MILESTONE }}
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
- name: Create next patch milestone - name: Create next patch milestone
uses: WyriHaximus/github-action-create-milestone@v1 uses: WyriHaximus/github-action-create-milestone@v1
with:
title: ${{ steps.semvers.outputs.patch }}
env: env:
MILESTONE: ${{ inputs.milestone }} MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }} GITHUB_TOKEN: ${{ inputs.github_token }}
with:
title: ${{ steps.nextvers.outputs.patch }}

View file

@ -1,4 +1,4 @@
name: Deploy name: docs-build-deployment
on: on:
push: # Build on all pushes but only deploy for main branch push: # Build on all pushes but only deploy for main branch

View file

@ -1,4 +1,4 @@
name: Build name: docs-build
on: on:
push: # Build on all pushes but only deploy for main branch push: # Build on all pushes but only deploy for main branch

View file

@ -1,4 +1,4 @@
name: Release name: version-release
on: on:
workflow_dispatch: workflow_dispatch:

View file

@ -14,6 +14,8 @@ This document shows you what's new in the latest release. For a detailed list of
{{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Marks new behavior you might find interesting or comes configurable. {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Marks new behavior you might find interesting or comes configurable.
<!--GH-ACTION-RELEASE-MILESTONE-->
--- ---
## 5.10.0 (2023-01-25) ## 5.10.0 (2023-01-25)
@ -245,8 +247,6 @@ This document shows you what's new in the latest release. For a detailed list of
The option is still useful in case you are using scripting to set up your graph. In this case no shortcode or codefence is involved and the library is not loaded by default. In this case you can set `disableMermaid=false` in your frontmatter to force the library to be loaded. See the [theme variant generator]({{%relref "basics/generator" %}}) of the exampleSite for an example. The option is still useful in case you are using scripting to set up your graph. In this case no shortcode or codefence is involved and the library is not loaded by default. In this case you can set `disableMermaid=false` in your frontmatter to force the library to be loaded. See the [theme variant generator]({{%relref "basics/generator" %}}) of the exampleSite for an example.
**This change requires at least Hugo 0.93.0 to be used**. The minimum requirement will be reported during build on the console if not met.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Additional color variant variable `--MERMAID-theme` to set the variant's Mermaid theme. This causes the Mermaid theme to switch with the color variant if it defers from the setting of the formerly selected color variant. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Additional color variant variable `--MERMAID-theme` to set the variant's Mermaid theme. This causes the Mermaid theme to switch with the color variant if it defers from the setting of the formerly selected color variant.
--- ---

View file

@ -30,5 +30,18 @@ Many thanks to [Andy Miller](https://github.com/rhukster) for initially creating
## Tooling ## Tooling
- [GitHub](https://github.com) - Continuous deployment, testing and hosting of this project's sources and its documentation - [GitHub](https://github.com) - Continuous deployment, testing and hosting of this project's sources and its documentation
- Various GitHub Actions
- https://github.com/actions/setup-node
- https://github.com/Akkjon/close-milestone
- https://github.com/andstor/file-reader-action
- https://github.com/ashley-taylor/regex-property-action
- https://github.com/Kaven-Universe/github-action-current-date-time
- https://github.com/mingjun97/file-regex-replace
- https://github.com/mukunku/tag-exists-action
- https://github.com/octokit/graphql-action
- https://github.com/peaceiris/actions-gh-pages
- https://github.com/peaceiris/actions-hugo
- https://github.com/WyriHaximus/github-action-create-milestone
- https://github.com/WyriHaximus/github-action-next-semvers
- [gren](https://github.com/github-tools/github-release-notes) - A releasenotes generator for GitHub - [gren](https://github.com/github-tools/github-release-notes) - A releasenotes generator for GitHub
- [Hugo](https://gohugo.io/) - The static site generator of your choice - [Hugo](https://gohugo.io/) - The static site generator of your choice