Skip to content

Approve release

Approve release #545

name: Approve release
on:
schedule:
- cron: '0 0 * * *'
jobs:
finds-release-pr:
runs-on: ubuntu-latest
outputs:
prNumber: ${{ steps.find-pr.outputs.prNumber }}
appVersion: ${{ steps.find-pr.outputs.appVersion }}
steps:
- name: Find release PR
id: find-pr
uses: actions/github-script@v7
with:
script: |
const { data: pullRequests } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
});
const releasePullRequests = pullRequests
.filter(pr => pr.head.ref.match(/^release\/v[0-9]+\.[0-9]+\.[0-9]+$/))
.map(pr => (
{
appVersion: pr.head.ref.match(/^release\/v([0-9]+\.[0-9]+\.[0-9]+)$/)[1],
prNumber: pr.number,
prUrl: pr.html_url,
}
));
if (releasePullRequests.length !== 1) {
core.info(`Found ${releasePullRequests.length} release pull requests`);
return {};
}
const releasePr = releasePullRequests[0];
core.info(`Found release pull request ${releasePr.prUrl} for app version ${releasePr.appVersion}`);
core.setOutput('prNumber', releasePr.prNumber);
core.setOutput('appVersion', releasePr.appVersion);
get-latest-android-app-version:
runs-on: ubuntu-latest
needs: finds-release-pr
if: ${{ needs.finds-release-pr.outputs.prNumber }}
outputs:
appVersion: ${{ steps.get-published-version.outputs.app_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Get published version
id: get-published-version
run: |
appfile_path=android/fastlane/Appfile
package_name=$(grep package_name $appfile_path | awk '{print $2}' | tr -d '"' | tr -d "'")
published_version=$(./bin/get-published-version.py $package_name)
echo "app_version=$published_version" >> $GITHUB_OUTPUT
echo "Published version found: $published_version"
approve-release:
runs-on: ubuntu-latest
needs:
- finds-release-pr
- get-latest-android-app-version
if: ${{ needs.finds-release-pr.outputs.appVersion == needs.get-latest-android-app-version.outputs.appVersion }}
steps:
- name: Add autoapproval Label
uses: actions/github-script@v7
with:
script: |
const prNumber = ${{ needs.finds-release-pr.outputs.prNumber }};
const label = 'autoapproval';
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: [label]
});