Create New Version #86
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Inspired by Elementor Releasing Pipeline https://github.com/elementor/elementor | |
name: Create New Version | |
# Environmental Variables: WEB_CICD_PAT (PAT), WEB_CICD_USERNAME (GitHub Bot Username), WEB_CICD_MAIL (GitHub Bot E-mail) | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: "Release Type" | |
required: true | |
type: choice | |
options: | |
- prerelease | |
- prepatch | |
- preminor | |
- premajor | |
- patch | |
- minor | |
- major | |
deploy: | |
description: "Deploy Directly to Our Website" | |
required: true | |
type: boolean | |
default: false | |
jobs: | |
bump-and-publish: | |
name: Bump Version and Publish | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Main Branch | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.WEB_CICD_PAT }} | |
ref: main | |
- name: Setup PHP 8.0 | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: "8.0" | |
- name: Setup Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
- name: Setup YQ | |
uses: chrisdickinson/setup-yq@latest | |
with: | |
yq-version: 'v4.25.2' | |
- name: Get Old Version | |
id: get_old_version | |
run: | | |
npm config set git-tag-version false | |
PREV_PACKAGE_VERSION=$(node -p "require('./package.json').version") | |
echo "PREV_PACKAGE_VERSION=${PREV_PACKAGE_VERSION}" >> $GITHUB_ENV | |
- name: Bump Major Version | |
if: "${{ github.event.inputs.version == 'major' }}" | |
run: npm version major | |
- name: Bump Minor Version | |
if: "${{ github.event.inputs.version == 'minor' }}" | |
run: npm version minor | |
- name: Bump Patch Version | |
if: "${{ github.event.inputs.version == 'patch' }}" | |
run: npm version patch | |
- name: Bump Premajor Version | |
if: "${{ github.event.inputs.version == 'premajor' }}" | |
run: | | |
npm version premajor --preid=beta | |
npm version prerelease --preid=beta | |
- name: Bump Preminor Version | |
if: "${{ github.event.inputs.version == 'preminor' }}" | |
run: | | |
npm version preminor --preid=beta | |
npm version prerelease --preid=beta | |
- name: Bump Prepatch Version | |
if: "${{ github.event.inputs.version == 'prepatch' }}" | |
run: | | |
npm version prepatch --preid=beta | |
npm version prerelease --preid=beta | |
- name: Bump Prerelease Version | |
if: "${{ github.event.inputs.version == 'prerelease' }}" | |
run: npm version prerelease --preid=beta | |
- name: Set New Version | |
run: | | |
PACKAGE_VERSION=$(node -p "require('./package.json').version") | |
echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV | |
- name: Push New Version with Build Files | |
env: | |
PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} | |
WEB_CICD_MAIL: ${{ secrets.WEB_CICD_MAIL }} | |
WEB_CICD_USERNAME: ${{ secrets.WEB_CICD_USERNAME }} | |
run: | | |
bash "${GITHUB_WORKSPACE}/.github/scripts/update-version-files.sh" | |
bash "${GITHUB_WORKSPACE}/.github/scripts/build-files.sh" | |
bash "${GITHUB_WORKSPACE}/.github/scripts/commit-push-bump.sh" | |
- name: Get Current Version | |
run: | | |
PACKAGE_VERSION=$(node -p "require('./package.json').version") | |
echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV | |
- name: Create Tag | |
env: | |
WEB_CICD_MAIL: ${{ secrets.WEB_CICD_MAIL }} | |
WEB_CICD_USERNAME: ${{ secrets.WEB_CICD_USERNAME }} | |
run: | | |
bash "${GITHUB_WORKSPACE}/.github/scripts/create-git-tag.sh" | |
- name: Create ZIP File | |
env: | |
PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} | |
run: | | |
bash "${GITHUB_WORKSPACE}/.github/scripts/build-zip.sh" | |
- name: Upload ZIP File to GitHub Actions Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: urlslab-${{ env.PACKAGE_VERSION }} | |
path: ${{ github.workspace }}/**/* | |
- name: Create GitHub Prerelease | |
if: "${{ github.event.inputs.version != 'major' && github.event.inputs.version != 'minor' && github.event.inputs.version != 'patch' }}" | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ env.PACKAGE_VERSION }} | |
files: urlslab_*.zip | |
prerelease: true | |
generate_release_notes: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.WEB_CICD_PAT }} | |
- name: Create GitHub Release | |
if: "${{ github.event.inputs.version != 'premajor' && github.event.inputs.version != 'preminor' && github.event.inputs.version != 'prepatch' && github.event.inputs.version != 'prerelease' }}" | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ env.PACKAGE_VERSION }} | |
files: urlslab_*.zip | |
generate_release_notes: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.WEB_CICD_PAT }} | |
deploy: | |
name: Deploy | |
needs: bump-and-publish | |
runs-on: ubuntu-latest | |
if: "${{ github.event.inputs.deploy == 'true' }}" | |
steps: | |
- name: Checkout Main Branch | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.WEB_CICD_PAT }} | |
ref: main | |
- name: Setup Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
- name: Get Current Version | |
run: | | |
PACKAGE_VERSION=$(node -p "require('./package.json').version") | |
echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV | |
- name: Trigger the Update Pipeline [URLsLab] | |
uses: aurelien-baudet/workflow-dispatch@v4 | |
with: | |
workflow: update-theme.yml | |
repo: QualityUnit/urlslab-wp | |
ref: main | |
token: ${{ secrets.WEB_CICD_PAT }} | |
wait-for-completion-interval: 5s | |
inputs: '{ | |
"repository":"urlslab-wp", | |
"version":"${{ env.PACKAGE_VERSION }}" | |
}' |