Refactor folder retrieval logic to improve clarity and maintainabilit… #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'src/**' | |
| workflow_dispatch: | |
| jobs: | |
| generate-version: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Get last merged PR labels | |
| id: prlabels | |
| run: | | |
| PR=$(gh pr list --state merged --base main --limit 1 --json number --jq '.[0].number') | |
| LABELS=$(gh pr view $PR --json labels --jq '[.labels[].name]') | |
| echo "PR_NUMBER=$PR" >> $GITHUB_ENV | |
| echo "LABELS=$LABELS" >> $GITHUB_ENV | |
| # Fail if both preview and release are set | |
| if [[ "$LABELS" == *"preview"* && "$LABELS" == *"release"* ]]; then | |
| echo "❌ Both 'preview' and 'release' labels present. Only one allowed." | |
| exit 1 | |
| fi | |
| # Fail if neither preview nor release is set | |
| if [[ "$LABELS" != *"preview"* && "$LABELS" != *"release"* && "$LABELS" != *"norelease"* ]]; then | |
| echo "❌ PR must have 'preview', 'release' or 'norelease' label." | |
| exit 1 | |
| fi | |
| # Set PRERELEASE | |
| if [[ "$LABELS" == *"preview"* ]]; then | |
| echo "PRERELEASE=true" >> $GITHUB_ENV | |
| else | |
| echo "PRERELEASE=false" >> $GITHUB_ENV | |
| fi | |
| # Set bump type | |
| if [[ "$LABELS" == *"Semver-Major"* ]]; then | |
| echo "BUMP=major" >> $GITHUB_ENV | |
| elif [[ "$LABELS" == *"Semver-Minor"* ]]; then | |
| echo "BUMP=minor" >> $GITHUB_ENV | |
| else | |
| echo "BUMP=patch" >> $GITHUB_ENV | |
| fi | |
| # Set NORELEASE as output of this step | |
| echo "NORELEASE=${{ env.NORELEASE }}" >> $GITHUB_ENV | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: GitHub Tag Bump | |
| id: tag_bump | |
| uses: anothrNick/[email protected] | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| INITIAL_VERSION: 1.0.0 | |
| DEFAULT_BUMP: ${{ env.BUMP }} | |
| PRERELEASE: ${{ env.PRERELEASE }} | |
| PRERELEASE_SUFFIX: 'preview' | |
| outputs: | |
| new_version: ${{ steps.tag_bump.outputs.new_tag }} | |
| norelease: ${{ steps.tag_bump.outputs.norelease }} | |
| publish-types: | |
| if: needs.generate-version.outputs.norelease != 'true' | |
| uses: ./.github/workflows/reusable-publish.yml | |
| with: | |
| project_path: src/Blake.Types/Blake.Types.csproj | |
| version: ${{ needs.generate-version.outputs.new_version }} | |
| secrets: inherit | |
| needs: generate-version | |
| publish-markdownparser: | |
| if: needs.generate-version.outputs.norelease != 'true' | |
| uses: ./.github/workflows/reusable-publish.yml | |
| with: | |
| project_path: src/Blake.MarkdownParser/Blake.MarkdownParser.csproj | |
| version: ${{ needs.generate-version.outputs.new_version }} | |
| wait_for_package_id: Blake.Types | |
| wait_for_package_version: ${{ needs.generate-version.outputs.new_version }} | |
| secrets: inherit | |
| needs: [publish-types, generate-version] | |
| publish-buildtools: | |
| if: needs.generate-version.outputs.norelease != 'true' | |
| uses: ./.github/workflows/reusable-publish.yml | |
| with: | |
| project_path: src/Blake.BuildTools/Blake.BuildTools.csproj | |
| version: ${{ needs.generate-version.outputs.new_version }} | |
| wait_for_package_id: Blake.MarkdownParser | |
| wait_for_package_version: ${{ needs.generate-version.outputs.new_version }} | |
| secrets: inherit | |
| needs: [publish-markdownparser, generate-version] | |
| publish-cli: | |
| if: needs.generate-version.outputs.norelease != 'true' | |
| uses: ./.github/workflows/reusable-publish.yml | |
| with: | |
| project_path: src/Blake.CLI/Blake.CLI.csproj | |
| version: ${{ needs.generate-version.outputs.new_version }} | |
| wait_for_package_id: Blake.BuildTools | |
| wait_for_package_version: ${{ needs.generate-version.outputs.new_version }} | |
| secrets: inherit | |
| needs: [publish-buildtools, generate-version] |