diff --git a/.release-please-manifest.json b/.release-please-manifest.json deleted file mode 100644 index d0ab664..0000000 --- a/.release-please-manifest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - ".": "1.2.0" -} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a03e48..ed48b37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [1.2.1-0](https://github.com/agrc/release-composite-action/compare/v1.2.0...v1.2.1-0) (2024-06-27) + + +### Bug Fixes + +* fix duplicate step ids ([29605a9](https://github.com/agrc/release-composite-action/commit/29605a90d88e80a13a864bf3c5e4c5746cc60df5)) +* remove header ([e616ebf](https://github.com/agrc/release-composite-action/commit/e616ebfb592c81f17c6142ad80e0320448fe7e4a)) +* switch to forked version of release-please ([0633e59](https://github.com/agrc/release-composite-action/commit/0633e59cf24fe431ae202a39ec78d2bf9ef70bcc)) +* switch to release please cli rather than action ([7d288ef](https://github.com/agrc/release-composite-action/commit/7d288efb73cb48335f2b852c04c125adf0367c0b)), closes [#48](https://github.com/agrc/release-composite-action/issues/48) +* upgrade to release please action v4 config file requirements ([69db3de](https://github.com/agrc/release-composite-action/commit/69db3de69c17627d0bab16b53a0688fa75055358)), closes [#48](https://github.com/agrc/release-composite-action/issues/48) +* use ugrc release bot for release config commit ([db9daa7](https://github.com/agrc/release-composite-action/commit/db9daa75eab4f11669ba10a7ebcf5fada46ce581)) + + +### Documentation + +* better concurrency group example ([232cae2](https://github.com/agrc/release-composite-action/commit/232cae2c7881e4e9b896f114d068dad825cb1e9b)) +* better concurrency group example ([2b0626a](https://github.com/agrc/release-composite-action/commit/2b0626aaef5e0efd4b9a695db8d8c06d708b7669)) +* clarify why we need the repo-token input ([20c2468](https://github.com/agrc/release-composite-action/commit/20c24683b8aecd6778a962f5d039e60e410d1e7c)) + ## [1.2.0](https://github.com/agrc/release-composite-action/compare/v1.1.7...v1.2.0) (2023-02-27) diff --git a/README.md b/README.md index 9685c26..27dcafa 100644 --- a/README.md +++ b/README.md @@ -41,3 +41,19 @@ jobs: github-app-name: ${{ secrets.UGRC_RELEASE_BOT_NAME }} github-app-email: ${{ secrets.UGRC_RELEASE_BOT_EMAIL }} ``` + +## Development + +### Act Test Runner + +If you are using rancher, make sure to set the following environment variable prior to running act: + +```sh +export DOCKER_HOST=$(docker context inspect --format '{{.Endpoints.docker.Host}}') +``` + +An example of running the tests with act: + +```sh +act --env TEST_TOKEN="$(gh auth token)" +``` diff --git a/action.yml b/action.yml index 63e2f52..7d98aa4 100644 --- a/action.yml +++ b/action.yml @@ -10,7 +10,7 @@ inputs: required: false default: ${{ github.ref_name == 'dev' }} repo-token: - description: GitHub token (e.g. secrets.GITHUB_TOKEN) + description: GitHub token (e.g. secrets.GITHUB_TOKEN). This repo-specific token is required so that we can get the owner and repo name. required: true github-app-id: description: Installed GitHub App Id (e.g. secrets.UGRC_RELEASE_BOT_APP_ID) @@ -34,94 +34,106 @@ inputs: outputs: release_created: description: A release was successfully created - value: ${{ steps.release-please.outputs.release_created }} + value: ${{ steps.create-github-release.outputs.release_created == 'yes' }} released_version: description: The version number that was released - value: ${{ steps.get-next-version.outputs.version }} + value: ${{ steps.create-github-release.outputs.release_created == 'yes' && steps.get-next-version.outputs.version }} runs: using: "composite" steps: - name: 🪙 Convert token + if: ${{ !env.ACT }} uses: actions/create-github-app-token@v1 - id: generate_token + id: generate-token with: app-id: ${{ inputs.github-app-id }} private-key: ${{ inputs.github-app-key }} + - name: 🎭 Mock convert token + if: ${{ env.ACT }} + id: mock-generate-token + shell: bash + run: | + echo "token=${{ env.TEST_TOKEN }}" >> $GITHUB_OUTPUT + - name: ⬇️ Set up code uses: actions/checkout@v4 with: show-progress: false - fetch-depth: 0 - token: ${{ steps.generate_token.outputs.token }} + token: ${{ steps.generate-token.outputs.token || steps.mock-generate-token.outputs.token }} + + - name: 🤔 Is this a release PR merge + id: is-release-pr + shell: bash + run: | + latest_commit_message=$(git log -1 --pretty=format:%s) + if [[ $latest_commit_message == "chore: release v"* ]]; then + echo "this workflow was triggered by a release PR" + echo "result=yes" >> $GITHUB_OUTPUT + else + echo "this workflow was not triggered by a release PR" + echo "result=no" >> $GITHUB_OUTPUT + fi - name: ⏩ Get next version + if: ${{ !env.ACT }} id: get-next-version uses: agrc/get-next-version-action@v1 with: prerelease: ${{ inputs.prerelease }} repo-token: ${{ inputs.repo-token }} - - name: 🔍 Check if config files exist - id: files-exist + - name: 🎭 Mock get next version + if: ${{ env.ACT }} + id: mock-get-next-version shell: bash run: | - if [ -f .release-please-manifest.json ]; then - echo "manifest file exists" - echo "HAS_MANIFEST=yes" >> "$GITHUB_OUTPUT" - else - echo "manifest does not exist" - echo "HAS_MANIFEST=no" >> "$GITHUB_OUTPUT" - fi + echo "version=9.9.9" >> $GITHUB_OUTPUT - if [ -f release-please-config.json ]; then - echo "config file exists" - echo "HAS_CONFIG=yes" >> "$GITHUB_OUTPUT" - else - echo "config does not exist" - echo "HAS_CONFIG=no" >> "$GITHUB_OUTPUT" - fi + - name: 📦 Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: lts/* - - name: 👇 Ensure config files exists + - name: Set up Release Please shell: bash run: | - touch release-please-config.json - touch .release-please-manifest.json + git clone https://github.com/stdavis/release-please + cd release-please + git switch stable-fix + echo "installing dependencies" + npm install - - name: 🥾 Bootstrap default Release Please manifest file - if: ${{ steps.files-exist.outputs.HAS_MANIFEST == 'no' && steps.get-next-version.outputs.current-version-number != null }} - uses: RadovanPelka/github-action-json@c1e93581d313d6e1d56f7f67582d4051674ebc57 - with: - path: .release-please-manifest.json - replaceWith: | - { - ".": "${{ steps.get-next-version.outputs.current-version-number }}" - } + - name: 🚀 Create release PR + id: create-release-pr + if: steps.is-release-pr.outputs.result == 'no' + shell: bash + run: | + node release-please/build/src/bin/release-please.js release-pr \ + --pull-request-title-pattern "chore: release v\${version}" \ + --pull-request-header " " \ + --changelog-sections "feat,fix,deps,docs,style" \ + --token ${{ steps.generate-token.outputs.token || steps.mock-generate-token.outputs.token }} \ + --repo-url ${{ github.repositoryUrl || 'https://github.com/agrc/release-composite-action' }} \ + --target-branch ${{ github.ref_name }} \ + --release-type ${{ inputs.release-type }} \ + --extra-files "${{ inputs.extra-files }}" \ + --release-as ${{ steps.get-next-version.outputs.version || steps.mock-get-next-version.outputs.version }} - - name: 🔀 Update/merge Release Please config file - uses: RadovanPelka/github-action-json@c1e93581d313d6e1d56f7f67582d4051674ebc57 - with: - path: release-please-config.json - replaceWith: | - { - "pull-request-title-pattern": "chore: release v${version}", - "changelog-sections": [ - {"type":"feat","section":"🚀 Features","hidden":false}, - {"type":"fix","section":"🐛 Bug Fixes","hidden":false}, - {"type":"deps","section":"🌲 Dependencies","hidden":false}, - {"type":"docs","section":"📖 Documentation Improvements","hidden":false}, - {"type":"style","section":"🎨 Design Improvements","hidden":false}, - {"type":"ci","section":"⚙️ Continuous Integration Changes","hidden":true}, - {"type":"chore","section":"🧰 Maintenance","hidden":true} - ], - "prerelease": ${{ inputs.prerelease }}, - "release-as": "${{ steps.get-next-version.outputs.version }}", - "release-type": "${{ inputs.release-type }}", - "packages": { - ".": {} - } - } + - name: 🚀 Create GitHub release + id: create-github-release + if: steps.is-release-pr.outputs.result == 'yes' + shell: bash + run: | + node release-please/build/src/bin/release-please.js github-release \ + --token ${{ steps.generate-token.outputs.token || steps.mock-generate-token.outputs.token }} \ + --repo-url ${{ github.repositoryUrl || 'https://github.com/agrc/release-composite-action' }} \ + --target-branch ${{ github.ref_name }} \ + --prerelease ${{ inputs.prerelease }} \ + --release-type ${{ inputs.release-type }} + + echo "release_created=yes" >> $GITHUB_OUTPUT - name: 🔑 Set git user shell: bash @@ -129,26 +141,9 @@ runs: git config user.name "${{ inputs.github-app-name }}" git config user.email "${{ inputs.github-app-email }}" - - name: ✔ Commit - shell: bash - run: | - git add .release-please-manifest.json - git add release-please-config.json - git diff --staged --quiet || git commit -m "chore: configure release please [skip ci]" - git push - - - name: 🚀 Create release - uses: google-github-actions/release-please-action@v4 - id: release-please - with: - token: ${{ steps.generate_token.outputs.token }} - config-file: release-please-config.json - manifest-file: .release-please-manifest.json - target-branch: ${{ github.ref_name }} - - name: 🏷️ Tag major and minor versions shell: bash - if: ${{ inputs.create-major-minor-tags == 'true' && steps.release-please.outputs.release_created == 'true' && inputs.prerelease != 'true' }} + if: ${{ inputs.create-major-minor-tags == 'true' && steps.is-release-pr.outputs.result == 'yes' && inputs.prerelease != 'true' }} run: | echo "deleting existing tags, if any" git tag -d v${{ steps.release-please.outputs.major }} || true diff --git a/release-please-config.json b/release-please-config.json deleted file mode 100644 index 5317cf5..0000000 --- a/release-please-config.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "pull-request-title-pattern": "chore: release v${version}", - "changelog-sections": [ - { - "type": "feat", - "section": "🚀 Features", - "hidden": false - }, - { - "type": "fix", - "section": "🐛 Bug Fixes", - "hidden": false - }, - { - "type": "deps", - "section": "🌲 Dependencies", - "hidden": false - }, - { - "type": "docs", - "section": "📖 Documentation Improvements", - "hidden": false - }, - { - "type": "style", - "section": "🎨 Design Improvements", - "hidden": false - }, - { - "type": "ci", - "section": "⚙️ Continuous Integration Changes", - "hidden": true - }, - { - "type": "chore", - "section": "🧰 Maintenance", - "hidden": true - } - ], - "prerelease": true, - "release-as": "1.3.0-0", - "release-type": "simple", - "packages": { - ".": {} - } -} \ No newline at end of file diff --git a/version.txt b/version.txt index 26aaba0..a15300b 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.2.0 +1.2.1-0