Skip to content

Commit

Permalink
Merge pull request #336 from PHPCSStandards/feature/ghactions-automat…
Browse files Browse the repository at this point in the history
…e-phpcs-version-update-pr

GH Actions: add new workflow to automate repeated task
  • Loading branch information
jrfnl committed Aug 27, 2022
2 parents 262736b + 27b6f3f commit 8823a07
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 1 deletion.
1 change: 0 additions & 1 deletion .github/release-checklist.md
Expand Up @@ -19,7 +19,6 @@ PR for tracking changes for the x.x.x release. Target release date: **DOW MONTH

### General

- [ ] Update the `DEVMASTER` version nr constant in the `Tests/BackCompat/Helper/GetVersionTest.php` file. - PR #xxx
- [ ] Verify, and if necessary, update the version constraints for dependencies in the `composer.json` - PR #xxx
- [ ] Verify that any new functions have type declarations whenever possible.
- [ ] Add changelog for the release - PR #xxx
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/update-phpcs-versionnr.yml
@@ -0,0 +1,85 @@
name: Update PHPCS version

on:
# Run every day at 3:40.
schedule:
- cron: '40 3 * * *'
# And whenever this workflow is updated.
pull_request:
paths:
- '.github/workflows/update-phpcs-versionnr.yml'
# Also allow manually triggering the workflow.
workflow_dispatch:

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
phpcs-version-check:
name: "Check latest PHPCS version"
# Don't run the cron job on forks.
if: ${{ github.event_name != 'schedule' || github.repository == 'PHPCSStandards/PHPCSUtils' }}

runs-on: ubuntu-latest
steps:
- name: Retrieve latest PHPCS release info
uses: octokit/request-action@v2.x
id: get_latest_release
with:
route: GET /repos/squizlabs/PHP_CodeSniffer/releases/latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: "Debug info: Show API request failure status"
if: ${{ failure() }}
run: "echo No release found. Request failed with status ${{ steps.get_latest_release.outputs.status }}"

- name: Grab latest tag name from API response
id: version
run: |
echo "::set-output name=TAG::${{ fromJson(steps.get_latest_release.outputs.data).tag_name }}"
- name: Show tag name found in API response
run: "echo latest release: ${{ steps.version.outputs.TAG }}"

- name: Set branches to use
id: branches
run: |
echo "::set-output name=BASE::develop"
echo "::set-output name=PR_BRANCH::feature/getversiontest-update-phpcs-version"
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ steps.branches.outputs.BASE }}

- name: Update the version constant in the test file
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "const DEVMASTER = '[^']+';"
replace: "const DEVMASTER = '${{ steps.version.outputs.TAG }}';"
include: "Tests/BackCompat/Helper/GetVersionTest.php"
regex: true

- name: "Debug info: Show git status"
run: git status -vv --untracked=all

- name: Create pull request
uses: peter-evans/create-pull-request@v4
with:
base: ${{ steps.branches.outputs.BASE }}
branch: ${{ steps.branches.outputs.PR_BRANCH }}
delete-branch: true
commit-message: "GetVersionTest: update for release of PHPCS ${{ steps.version.outputs.TAG }}"
title: "GetVersionTest: update for release of PHPCS ${{ steps.version.outputs.TAG }}"
# yamllint disable rule:line-length
body: |
This PR is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request) using the [`update-phpcs-versionnr.yml` workflow](https://github.com/PHPCSStandards/PHPCSUtils/blob/develop/.github/workflows/update-phpcs-versionnr.yml).
# yamllint enable rule:line-length
labels: |
Type: chores/QA
reviewers: |
jrfnl

0 comments on commit 8823a07

Please sign in to comment.