diff --git a/.github/workflows/pr-title.yaml b/.github/workflows/pr-title.yaml new file mode 100644 index 0000000..9ec553f --- /dev/null +++ b/.github/workflows/pr-title.yaml @@ -0,0 +1,48 @@ +name: 'Validate PR title' + +on: + workflow_call: + +jobs: + main: + name: Validate PR title + runs-on: ubuntu-latest + steps: + # Please look up the latest version from + # https://github.com/amannn/action-semantic-pull-request/releases + - uses: amannn/action-semantic-pull-request@v6.1.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # Configure which types are allowed. + # Default: https://github.com/commitizen/conventional-commit-types + types: | + fix + feat + docs + ci + chore + # Configure that a scope must always be provided. + requireScope: false + # Configure additional validation for the subject based on a regex. + # This example ensures the subject starts with an uppercase character. + subjectPattern: ^[A-Z].+$ + # If `subjectPattern` is configured, you can use this property to override + # the default error message that is shown when the pattern doesn't match. + # The variables `subject` and `title` can be used within the message. + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" + didn't match the configured pattern. Please ensure that the subject + starts with an uppercase character. + # For work-in-progress PRs you can typically use draft pull requests + # from Github. However, private repositories on the free plan don't have + # this option and therefore this action allows you to opt-in to using the + # special "[WIP]" prefix to indicate this state. This will avoid the + # validation of the PR title and the pull request checks remain pending. + # Note that a second check will be reported if this is enabled. + wip: true + # When using "Squash and merge" on a PR with only one commit, GitHub + # will suggest using that commit message instead of the PR title for the + # merge commit, and it's easy to commit this by mistake. Enable this option + # to also validate the commit message for one commit PRs. + validateSingleCommit: false diff --git a/.github/workflows/terraform.yaml b/.github/workflows/terraform.yaml index 3c55029..59ccfca 100644 --- a/.github/workflows/terraform.yaml +++ b/.github/workflows/terraform.yaml @@ -6,6 +6,9 @@ on: - main - master pull_request_target: + branches: + - main + - master types: - opened - edited @@ -15,6 +18,19 @@ on: - main - master jobs: + prTitlecheck: + name: PR title check + if: ${{ github.event_name == 'pull_request_target' }} + uses: ./.github/workflows/pr-title.yaml + + versionPreview: + name: Version Preview + if: ${{ github.event_name == 'pull_request' }} + permissions: + contents: read + pull-requests: write + uses: ./.github/workflows/version-preview.yaml + preCommitCheck: name: Terraform Checks uses: ./.github/workflows/terraform-checks.yaml diff --git a/.github/workflows/version-preview.yaml b/.github/workflows/version-preview.yaml new file mode 100644 index 0000000..861240f --- /dev/null +++ b/.github/workflows/version-preview.yaml @@ -0,0 +1,61 @@ +name: 'Version Preview' + +on: + workflow_call: + +defaults: + run: + shell: bash + +permissions: + contents: read + pull-requests: write + +jobs: + preview: + name: Preview Release + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Create temporary branch + run: git checkout -b temp-preview-branch + + - name: Semantic Release (Dry Run) + id: semantic + uses: cycjimmy/semantic-release-action@v4 + with: + semantic_version: 18.0.0 + dry_run: true + branches: | + [ + 'temp-preview-branch' + ] + extra_plugins: | + @semantic-release/changelog@6.0.0 + @semantic-release/git@10.0.0 + conventional-changelog-conventionalcommits@4.6.3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment PR + if: always() + uses: marocchino/sticky-pull-request-comment@v2 + with: + header: release-preview + message: | + ## Release Preview + + ${{ steps.semantic.outputs.new_release_published == 'true' && format('**Release Type:** `{0}` + **Next Version:** `v{1}` + + ### Release Notes + {2} + + --- + *This shows what release will be created when this PR is merged.*', steps.semantic.outputs.new_release_type, steps.semantic.outputs.new_release_version, steps.semantic.outputs.new_release_notes) || 'No new release will be created from this PR. + + This PR does not contain conventional commits that trigger a release.' }} diff --git a/examples/cross-account/README.md b/examples/cross-account/README.md index 4a809d3..70ba35e 100644 --- a/examples/cross-account/README.md +++ b/examples/cross-account/README.md @@ -26,7 +26,7 @@ route53:ChangeResourceRecordSets route53:ListHostedZonesByName route53:ListResourceRecordSets -And a trust policy allowing Account A to assume the role. +And a trust policy which allows Account A to assume the role. ## Example `tfvars` Configuration