106 lines
3.9 KiB
YAML
106 lines
3.9 KiB
YAML
|
name: Check milestone
|
||
|
description: Checks if the given milestone and its according tag are valid to be released
|
||
|
inputs:
|
||
|
milestone:
|
||
|
description: Milestone for this release
|
||
|
required: true
|
||
|
github_token:
|
||
|
description: Secret GitHub token
|
||
|
required: true
|
||
|
outputs:
|
||
|
outcome:
|
||
|
description: Result of the check, success or failure
|
||
|
value: ${{ steps.outcome.outputs.outcome }}
|
||
|
runs:
|
||
|
using: composite
|
||
|
steps:
|
||
|
- name: Get closed issues for milestone
|
||
|
id: closed_issues
|
||
|
uses: octokit/graphql-action@v2.x
|
||
|
env:
|
||
|
MILESTONE: ${{ inputs.milestone }}
|
||
|
GITHUB_TOKEN: ${{ inputs.github_token }}
|
||
|
with:
|
||
|
query: |
|
||
|
query {
|
||
|
search(first: 1, type: ISSUE, query: "user:${{ github.repository_owner }} repo:${{ github.event.repository.name }} milestone:${{ env.MILESTONE }} state:closed") {
|
||
|
issueCount
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- name: Get open issues for milestone
|
||
|
id: open_issues
|
||
|
uses: octokit/graphql-action@v2.x
|
||
|
env:
|
||
|
MILESTONE: ${{ inputs.milestone }}
|
||
|
GITHUB_TOKEN: ${{ inputs.github_token }}
|
||
|
with:
|
||
|
query: |
|
||
|
query {
|
||
|
search(first: 1, type: ISSUE, query: "user:${{ github.repository_owner }} repo:${{ github.event.repository.name }} milestone:${{ env.MILESTONE }} state:open") {
|
||
|
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:
|
||
|
MILESTONE: ${{ inputs.milestone }}
|
||
|
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
|
||
|
id: outcome
|
||
|
shell: bash
|
||
|
run: |
|
||
|
if [ "${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 && fromJSON(steps.open_issues.outputs.data).search.issueCount == 0 && ( (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
|
||
|
else
|
||
|
echo "outcome=failure" >> $GITHUB_OUTPUT
|
||
|
fi
|
||
|
|
||
|
- name: Log results and exit
|
||
|
shell: bash
|
||
|
run: |
|
||
|
echo outcome : ${{ steps.outcome.outputs.outcome }}
|
||
|
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 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
|
||
|
exit 1
|
||
|
fi
|