Skip to content

Update az_quickstart repository for new 2.8.x minor release branch. #21

Update az_quickstart repository for new 2.8.x minor release branch.

Update az_quickstart repository for new 2.8.x minor release branch. #21

name: Prepare repository for new minor release
run-name: Update az_quickstart repository for new `${{ inputs.release_branch_name }}` minor release branch.
on:
workflow_dispatch:
inputs:
release_branch_name:
description: The name of the new release branch (e.g. 2.8.x) to create.
required: true
jobs:
print_inputs:
runs-on: ubuntu-latest
steps:
- name: Print inputs
run: |
echo "release_branch_name: ${{ inputs.release_branch_name }}"
branch_name_prep:
timeout-minutes: 10
runs-on: ubuntu-latest
outputs:
next_minor_release: ${{ steps.define-version-variables.outputs.NEXT_MINOR_RELEASE }}
next_release_branch_alias_constraint: ${{ steps.define-version-variables.outputs.NEXT_RELEASE_VERSION_CONSTRAINT }}
this_release_branch_alias_constraint: ${{ steps.define-version-variables.outputs.THIS_RELEASE_VERSION_CONSTRAINT }}
main_branch_alias: ${{ steps.define-version-variables.outputs.MAIN_BRANCH_ALIAS }}
steps:
- name: Define version variables
id: define-version-variables
run: |
delimiter=.
version_parts=($(echo ${{ inputs.release_branch_name }} | tr $delimiter '\n'))
version_parts[1]=$((version_parts[1]+1))
NEXT_MINOR_RELEASE=$(IFS=$delimiter ; echo "${version_parts[*]}" | sed 's/\(.*\)\.x/\1/')
NEXT_RELEASE_VERSION_CONSTRAINT="~${NEXT_MINOR_RELEASE}"
echo "NEXT_MINOR_RELEASE=${NEXT_MINOR_RELEASE}" >> $GITHUB_OUTPUT
echo "NEXT_RELEASE_VERSION_CONSTRAINT=${NEXT_RELEASE_VERSION_CONSTRAINT}" >> $GITHUB_OUTPUT
echo "Next minor release: $NEXT_MINOR_RELEASE" >> $GITHUB_STEP_SUMMARY
echo "Next release version constraint: $NEXT_RELEASE_VERSION_CONSTRAINT" >> $GITHUB_STEP_SUMMARY
THIS_RELEASE_VERSION_CONSTRAINT=$(echo ${{ inputs.release_branch_name }} | sed 's/\(.*\)\.x/~\1/')
echo "THIS_RELEASE_VERSION_CONSTRAINT=${THIS_RELEASE_VERSION_CONSTRAINT}" >> $GITHUB_OUTPUT
echo "This release version constraint: $THIS_RELEASE_VERSION_CONSTRAINT" >> $GITHUB_STEP_SUMMARY
MAIN_BRANCH_ALIAS="${NEXT_MINOR_RELEASE}.x-dev"
echo "MAIN_BRANCH_ALIAS=${MAIN_BRANCH_ALIAS}" >> $GITHUB_OUTPUT
echo "Main branch alias: $MAIN_BRANCH_ALIAS" >> $GITHUB_STEP_SUMMARY
dispatch:
needs: branch_name_prep
strategy:
matrix:
repo:
- az-digital/az-quickstart-scaffolding
runs-on: ubuntu-latest
steps:
- name: Notify dependencies
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.REPO_DISPATCH_TOKEN }}
repository: ${{ matrix.repo }}
event-type: az_quickstart_prep_for_minor_release
client-payload: '{"release_branch_name": "${{ inputs.release_branch_name }}" , "this_release_branch_alias_constraint": "${{needs.branch_name_prep.outputs.this_release_branch_alias_constraint}}", "main_branch_alias": "${{needs.branch_name_prep.outputs.main_branch_alias}}", "next_release_branch_alias_constraint": "${{needs.branch_name_prep.outputs.next_release_branch_alias_constraint}}"}'
prepare_for_new_minor_release:
name: Prepare for a new minor release
runs-on: ubuntu-latest
needs: branch_name_prep
steps:
- name: Checkout az_quickstart
uses: actions/checkout@v4
with:
repository: az-digital/az_quickstart
ref: main
- name: Create and check out release branch
run: |
git checkout -b ${{ inputs.release_branch_name }}
- name: Set up git
run: |
git config user.name github-actions
git config user.email [email protected]
- name: Push new release branch to GitHub
run: |
git commit --allow-empty -m "Prepare for new minor release ${{ inputs.release_branch_name }}"
git push origin -u ${{ inputs.release_branch_name }}
- name: Check out new branch so we can make a pull request
run: |
git checkout -b ${{ inputs.release_branch_name }}-prepare-for-minor-release
- name: Update DDev config in release branch
run: |
NEW_VERSION=${{ inputs.release_branch_name }}
sed -i "0,/main/s//$NEW_VERSION/" .ddev/commands/web/install
- name: Update Security workflow yml in release branch
run: |
NEW_VERSION=${{ inputs.release_branch_name }}
sed -i "s/SCAFFOLD_BRANCH=main/SCAFFOLD_BRANCH=$NEW_VERSION/g" .github/workflows/security.yml
- name: Update Create Release workflow yml in release branch
run: |
NEW_VERSION=${{ inputs.release_branch_name }}
sed -i "s|git clone https://github.com/az-digital/az-quickstart-scaffolding.git az_quickstart|git clone -b $NEW_VERSION https://github.com/az-digital/az-quickstart-scaffolding.git az_quickstart|" .github/workflows/create-release.yml
- name: Update Lando config in release branch
run: |
NEW_VERSION=${{ inputs.release_branch_name }}
sed -i "s/SCAFFOLD_BRANCH=main/SCAFFOLD_BRANCH=$NEW_VERSION/g" .lando.yml
- name: Update Probo config in release branch
run: |
NEW_VERSION=${{ inputs.release_branch_name }}
sed -i "s/SCAFFOLD_BRANCH=main/SCAFFOLD_BRANCH=$NEW_VERSION/g" .probo.yaml
- name: Setup PHP with composer v2
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: composer:v2
- name: Update dev branch alias via Composer
run: |
composer config extra.branch-alias.dev-main ${{ needs.branch_name_prep.outputs.next_minor_release }}.x-dev
- name: Add changed files to release branch commit
run: |
git add .ddev/commands/web/install
git add .github/workflows/security.yml
git add .github/workflows/create-release.yml
git add .lando.yml
git add .probo.yaml
git add composer.json
- name: Create pull request for new release branch updates
uses: peter-evans/create-pull-request@v5
with:
title: Prepare repository for new minor release branch ${{ inputs.release_branch_name }}
commit-message: Prepare repository for new minor release branch ${{ inputs.release_branch_name }}
branch: ${{ inputs.release_branch_name }}-prepare-for-minor-release
base: ${{ inputs.release_branch_name }}
delete-branch: true
labels: |
${{ inputs.release_branch_name }} only
update_previous_release_branches:
needs: [prepare_for_new_minor_release, branch_name_prep]
runs-on: ubuntu-latest
name: Update `${{ matrix.previous_version }}` release branch.
strategy:
matrix:
previous_version: [2.7.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x]
steps:
- name: Update previous release branch `${{ matrix.previous_version }}`
uses: actions/checkout@v4
with:
ref: ${{ matrix.previous_version }}
- name: Set up Git
run: |
git config user.name "GitHub Action"
git config user.email "[email protected]"
- name: Check out new branch so we can make a pull request
run: |
git checkout -b ${{ matrix.previous_version }}-update-for-${{ inputs.release_branch_name }}
- name: Update dev branch alias via Composer
run: |
composer config extra.branch-alias.dev-main ${{ needs.branch_name_prep.outputs.next_minor_release }}.x-dev
- name: Create pull request for previous release branch updates
uses: peter-evans/create-pull-request@v5
with:
title: Prepare ${{ matrix.previous_version }} branch for new minor release branch ${{ inputs.release_branch_name }}
commit-message: Prepare ${{ matrix.previous_version }} branch for new minor release branch ${{ inputs.release_branch_name }}
branch: ${{ matrix.previous_version }}-update-for-${{ inputs.release_branch_name }}
base: ${{ matrix.previous_version }}
delete-branch: true
labels: |
${{ matrix.previous_version }} only