Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Promote Dev #77

Merged
merged 14 commits into from
Jun 27, 2024
Merged
3 changes: 0 additions & 3 deletions .release-please-manifest.json

This file was deleted.

19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)


Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)"
```
145 changes: 70 additions & 75 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -34,121 +34,116 @@ 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
run: |
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
Expand Down
46 changes: 0 additions & 46 deletions release-please-config.json

This file was deleted.

2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.0
1.2.1-0
Loading