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]*[\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