From f7e01f43e701da636da3112d484ff5beb61865c5 Mon Sep 17 00:00:00 2001 From: Scott Kingsley Clark Date: Sat, 2 Mar 2024 07:32:06 -0600 Subject: [PATCH] Upgrade workflows for repo and allow for version updates/prep --- .github/workflows/prepare-release-branch.yml | 84 +++++++++++++++++++ .github/workflows/wordpress-plugin-deploy.yml | 13 +-- .github/workflows/wporg-update-versions.yml | 64 ++++++++++++++ package.json | 19 +++++ 4 files changed, 175 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/prepare-release-branch.yml create mode 100644 .github/workflows/wporg-update-versions.yml create mode 100644 package.json diff --git a/.github/workflows/prepare-release-branch.yml b/.github/workflows/prepare-release-branch.yml new file mode 100644 index 0000000..d9a3e98 --- /dev/null +++ b/.github/workflows/prepare-release-branch.yml @@ -0,0 +1,84 @@ +name: Prepare Release Branch +env: + PR_PREFIX: 'Pods Gravity Forms ' + PR_LABELS: 'Type: Release' + MILESTONE_PREFIX: 'Pods Gravity Forms ' + BRANCH_PREFIX: 'release/' + WPORG_PLUGIN_FILE: 'pods-gravity-forms.php' + WPORG_PLUGIN_VERSION_CONSTANT_NAME: 'PODS_GF_VERSION' +on: + workflow_dispatch: + inputs: + new_plugin_version: + description: 'New plugin version (without the "-a-1"), defaults to the next incremental version from package.json' + required: false + version_increment: + description: 'OR Version increment scheme (if incrementing the package.json version; patch=x.x.x, minor=x.x, major=x.0)' + required: true + type: choice + default: 'patch' + options: + - 'major' + - 'minor' + - 'patch' +jobs: + prepare_release_branch: + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v4 + with: + token: ${{ secrets.GH_BOT_PUSH }} + - name: Maybe use the version number from inputs + if: ${{ github.event.inputs.new_plugin_version != null && github.event.inputs.new_plugin_version != '' }} + shell: bash + run: | + echo "PLUGIN_VERSION=${{ github.event.inputs.new_plugin_version }}" >> $GITHUB_ENV + - name: Maybe lookup the version number from package.json + id: version-lookup + if: ${{ github.event.inputs.new_plugin_version == null || github.event.inputs.new_plugin_version == '' }} + shell: bash + run: | + echo "CURRENT_VERSION=$(jq -r .version package.json)" >> $GITHUB_OUTPUT + - name: Maybe get the next version information + if: ${{ steps.version-lookup.outputs.CURRENT_VERSION != null && steps.version-lookup.outputs.CURRENT_VERSION != '' }} + uses: reecetech/version-increment@2023.10.2 + id: version-increment + with: + scheme: semver + increment: ${{ github.event.inputs.version_increment }} + - name: Maybe store the next version + if: ${{ steps.version-increment.outputs.version != null && steps.version-increment.outputs.version != '' }} + shell: bash + run: | + echo "PLUGIN_VERSION=${{ steps.version-increment.outputs.version }}" >> $GITHUB_ENV + - name: What are we doing? + run: | + echo PLUGIN_VERSION: ${{ env.PLUGIN_VERSION }} + - name: Run wporg-replace + uses: sc0ttkclark/wporg-replace@v1.0.7 + with: + plugin_version: '${{ env.PLUGIN_VERSION }}-a-1' + plugin_version_constant_name: ${{ env.WPORG_PLUGIN_VERSION_CONSTANT_NAME }} + plugin_file: ${{ env.WPORG_PLUGIN_FILE }} + plugin_path: ${{ github.workspace }} + - name: Create Milestone + id: create-milestone + uses: WyriHaximus/github-action-create-milestone@v1.2.0 + continue-on-error: true + with: + title: '${{ env.MILESTONE_PREFIX }}${{ env.PLUGIN_VERSION }}' + env: + GITHUB_TOKEN: ${{ secrets.GH_BOT_PUSH }} + - name: Create Pull Request + id: create-pull-request + uses: peter-evans/create-pull-request@v5.0.2 + with: + token: ${{ secrets.GH_BOT_PUSH }} + branch: '${{ env.BRANCH_PREFIX }}${{ env.PLUGIN_VERSION }}' + commit-message: 'Set version to ${{ env.PLUGIN_VERSION }}-a-1' + title: '${{ env.PR_PREFIX }}${{ env.PLUGIN_VERSION }}' + labels: ${{ env.PR_LABELS }} + assignees: ${{ github.actor }} + milestone: ${{ steps.create-milestone.outputs.number }} + draft: true diff --git a/.github/workflows/wordpress-plugin-deploy.yml b/.github/workflows/wordpress-plugin-deploy.yml index 70b969f..8a8afae 100644 --- a/.github/workflows/wordpress-plugin-deploy.yml +++ b/.github/workflows/wordpress-plugin-deploy.yml @@ -7,18 +7,21 @@ jobs: name: New tag runs-on: ubuntu-latest steps: - - uses: actions/checkout@master + - name: Check the version number from package.json + shell: bash + run: echo "PLUGIN_VERSION=$(jq -r .version package.json)" >> $GITHUB_ENV + - name: Checkout the code + uses: actions/checkout@v4 - name: WordPress Plugin Deploy uses: 10up/action-wordpress-plugin-deploy@master env: SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} SVN_USERNAME: ${{ secrets.SVN_USERNAME }} + VERSION: ${{ env.PLUGIN_VERSION }} - name: Send message to Slack API - uses: archive/github-actions-slack@v2.0.0 + uses: archive/github-actions-slack@v2.7.0 id: notify with: slack-bot-user-oauth-access-token: ${{ secrets.SLACK_BOT_USER_OAUTH_ACCESS_TOKEN }} slack-channel: C02SWND14 - slack-text: The pods-gravity-forms tag has been deployed to svn.wordpress.org 🎉 - - name: Output Slack response - run: echo "The result was ${{ steps.notify.outputs.slack-result }}" + slack-text: The ${{ github.event.repository.name }} tag has been deployed to svn.wordpress.org 🎉 diff --git a/.github/workflows/wporg-update-versions.yml b/.github/workflows/wporg-update-versions.yml new file mode 100644 index 0000000..1810e1a --- /dev/null +++ b/.github/workflows/wporg-update-versions.yml @@ -0,0 +1,64 @@ +name: WordPress.org Update Versions +env: + WPORG_PLUGIN_FILE: 'pods-gravity-forms.php' + WPORG_PLUGIN_VERSION_CONSTANT_NAME: 'PODS_GF_VERSION' +on: + workflow_dispatch: + inputs: + plugin_version: + description: 'Plugin version' + required: false + tested_wp_version: + description: 'Tested up to WP version' + required: false + minimum_wp_version: + description: 'Minimum WP version' + required: false + minimum_php_version: + description: 'Minimum PHP version' + required: false + minimum_mysql_version: + description: 'Minimum MySQL version' + required: false + pull_request: + paths: + - 'package.json' +jobs: + wporg_replace: + runs-on: ubuntu-latest + steps: + - name: What are we doing? + run: | + echo plugin_version: ${{ github.event.inputs.plugin_version }} + echo tested_wp_version: ${{ github.event.inputs.tested_wp_version }} + echo minimum_wp_version: ${{ github.event.inputs.minimum_wp_version }} + echo minimum_php_version: ${{ github.event.inputs.minimum_php_version }} + - name: Checkout the code + uses: actions/checkout@v4 + with: + token: ${{ secrets.GH_BOT_PUSH }} + - name: Check the version number from package.json + shell: bash + run: echo "PLUGIN_VERSION=$(jq -r .version package.json)" >> $GITHUB_ENV + - name: Run wporg-replace + uses: sc0ttkclark/wporg-replace@v1.0.7 + with: + plugin_version: ${{ (github.event.inputs.plugin_version != '') && github.event.inputs.plugin_version || env.PLUGIN_VERSION }} + plugin_version_constant_name: ${{ env.WPORG_PLUGIN_VERSION_CONSTANT_NAME }} + tested_wp_version: ${{ github.event.inputs.tested_wp_version }} + minimum_wp_version: ${{ github.event.inputs.minimum_wp_version }} + minimum_php_version: ${{ github.event.inputs.minimum_php_version }} + plugin_file: ${{ env.WPORG_PLUGIN_FILE }} + plugin_path: ${{ github.workspace }} + - name: Commit changes + id: auto-commit-action + uses: stefanzweifel/git-auto-commit-action@v4 + with: + file_pattern: ${{ env.WPORG_PLUGIN_FILE }} readme.txt package.json + commit_message: Update wporg version(s) + - name: "Run if changes have been detected" + if: steps.auto-commit-action.outputs.changes_detected == 'true' + run: echo "Changes!" + - name: "Run if no changes have been detected" + if: steps.auto-commit-action.outputs.changes_detected == 'false' + run: echo "No Changes!" diff --git a/package.json b/package.json new file mode 100644 index 0000000..1274174 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "pods-gravity-forms", + "version": "1.4.5", + "description": "PIntegration with Gravity Forms; Provides a UI for mapping a Form's submissions into a Pod.", + "author": "Pods Foundation, Inc", + "homepage": "https://pods.io/", + "bugs": "https://github.com/pods-framework/pods-gravity-forms/issues", + "repository": { + "type": "git", + "url": "git://github.com/pods-framework/pods-gravity-forms.git" + }, + "support": "https://support.pods.io/", + "funding": { + "type": "individual", + "url": "https://friends.pods.io/" + }, + "license": "GPL-2.0+", + "contributors": "https://github.com/pods-framework/pods-gravity-forms/graphs/contributors" +}