blob: b9c033022d777dd1018a34f30460681b65c5f0a9 [file] [view]
<!--
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# `post-release` Action
## Purpose: Handles Repository Setup for the next Release Version
A GitHub Action that handles steps necessary to close out a GitHub Release process. This includes:
1. Creating a branch of named like `merge-back-TAGNAME` that will:
* Include the tag changes to prevent orphaned changes.
* Include changing the `projectVersion` or `version` property in `gradle.properties` to the next version.
2. Optionally closing the current milestone associated with the release.
3. Optionally running an additional script as part of the close process to transform files in the repository.
4. Removing the `prerelease` flag from the release & setting the release to the latest GitHub release.
Please note that the next version is derived from the provided `RELEASE_VERSION` using a script that assumes a [Semantic Version](https://semver.org/).
## Requirements
1. Github Actions must be allowed to create pull requests in the repository. You can configure this in the repository settings under "Actions" -> "General" -> "Workflow permissions".
2. Requires the permission `contents: write` to create a branch, commit changes to the repository, update the GitHub release to no longer be a pre-release, and update the GitHub release to be the latest.
3. Optionally requires the permission `pull-requests: write` to open the pull request to merge back changes from the tag. If this permission is not set, a Pull Request will not be created.
4. Optionally requires the permission `issues: write` if milestone closing is required.
## Environment Variables
* (optional) `RELEASE_VERSION` - The version of the release being closed. If not set, it will be derived from the `GITHUB_REF`, which as part of a release will be the tag name.
* (optional) `RELEASE_TAG_PREFIX` - The prefix of the release tag. If not set, it will default to `v` (e.g., `v1.0.0`).
* (optional) `PROPERTY_FILE_NAME` - defaults to `gradle.properties`, the property file containing the version property to update
* (optional) `PR_LABELS` - comma-separated labels to apply to the merge-back pull request after it is created or reused
* (optional) `RELEASE_SCRIPT_PATH` - An optional path to a custom shell script that will be executed after the version replacement in property file defined by `PROPERTY_FILE_NAME`, but prior to commiting the project changes.
* (optional) `RELEASE_LATEST` - An optional boolean flag to update the GitHub release to be or not to be the latest. If not defined, no update will be performed.
* (optional) `RELEASE_PRE_RELEASE` - An optional boolean flag to update the GitHub release to be or not to be a pre-release. If not defined, no update will be performed.
## Example Usage
Basic Usage:
```yaml
- name: "⚙️ Run post-release"
uses: apache/grails-github-actions/post-release@asf
```
Running a custom script `myScript.sh` that's checked in under `.github/scripts`:
```yaml
- name: "⚙️ Run post-release"
uses: apache/grails-github-actions/post-release@asf
env:
RELEASE_SCRIPT_PATH: '.github/scripts/myScript.sh'
```
Adding labels to the merge-back pull request:
```yaml
- name: "⚙️ Run post-release"
uses: apache/grails-github-actions/post-release@asf
with:
pr-labels: skip-changelog,internal-release
```