Merge pull request #158 from Ortus-Solutions/development #9
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
# This workflow is used to build releases | |
# It can also be called by other workflows to reuse the release flow. | |
name: TestBox Release | |
on: | |
push: | |
branches: | |
- master | |
- main | |
# Reusable workflow : Usually called by a `snapshot` workflow | |
workflow_call: | |
inputs: | |
snapshot: | |
description: 'Is this a snapshot build?' | |
required: false | |
default: false | |
type: boolean | |
env: | |
SNAPSHOT: ${{ inputs.snapshot || false }} | |
jobs: | |
build: | |
name: Build & Publish Release | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: "temurin" | |
java-version: "11" | |
- name: Setup CommandBox | |
uses: Ortus-Solutions/setup-commandbox@v2.0.1 | |
with: | |
forgeboxAPIKey: ${{ secrets.FORGEBOX_API_TOKEN }} | |
- name: Setup Environment Variables For Build Process | |
id: current_version | |
run: | | |
echo "TESTBOX_VERSION=`cat box.json | jq '.version' -r`" >> $GITHUB_ENV | |
box package set version=@build.version@+@build.number@ | |
# master or snapshot | |
echo "Github Ref is $GITHUB_REF" | |
echo "BRANCH=master" >> $GITHUB_ENV | |
if [ $GITHUB_REF == 'refs/heads/development' ] | |
then | |
echo "BRANCH=development" >> $GITHUB_ENV | |
fi | |
- name: Update changelog [unreleased] with latest version | |
uses: thomaseizinger/keep-a-changelog-new-release@1.3.0 | |
if: env.SNAPSHOT == 'false' | |
with: | |
changelogPath: ./changelog.md | |
tag: v${{ env.TESTBOX_VERSION }} | |
- name: Build TestBox for ${{ env.BRANCH }} v${{ env.TESTBOX_VERSION }} | |
run: | | |
npm install -g markdownlint-cli | |
markdownlint changelog.md --fix | |
box install commandbox-docbox | |
box task run taskfile=build/Build target=run :version=${{ env.TESTBOX_VERSION }} :buildID=${{ github.run_number }} :branch=${{ env.BRANCH }} | |
- name: Commit Changelog To Master | |
uses: EndBug/add-and-commit@v9.1.1 | |
if: env.SNAPSHOT == 'false' | |
with: | |
author_name: Github Actions | |
author_email: info@ortussolutions.com | |
message: 'Finalized changelog for v${{ env.TESTBOX_VERSION }}' | |
add: changelog.md | |
- name: Tag Version | |
uses: rickstaa/action-create-tag@v1.6.1 | |
if: env.SNAPSHOT == 'false' | |
with: | |
tag: "v${{ env.TESTBOX_VERSION }}" | |
force_push_tag: true | |
message: "Latest Release v${{ env.TESTBOX_VERSION }}" | |
- name: Upload Build Artifacts | |
if: success() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: testbox | |
path: | | |
.artifacts/**/* | |
changelog.md | |
- name: Upload Binaries to S3 | |
uses: jakejarvis/s3-sync-action@master | |
with: | |
args: --acl public-read | |
env: | |
AWS_S3_BUCKET: "downloads.ortussolutions.com" | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_SECRET }} | |
SOURCE_DIR: ".artifacts" | |
DEST_DIR: "ortussolutions" | |
- name: Upload API Docs to S3 | |
uses: jakejarvis/s3-sync-action@master | |
with: | |
args: --acl public-read | |
env: | |
AWS_S3_BUCKET: "apidocs.ortussolutions.com" | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_SECRET }} | |
SOURCE_DIR: ".tmp/apidocs" | |
DEST_DIR: "testbox/${{ env.TESTBOX_VERSION }}" | |
- name: Publish | |
run: | | |
cd .tmp/testbox | |
cat box.json | |
box forgebox publish --force | |
- name: Create Github Release | |
uses: taiki-e/create-gh-release-action@v1.6.2 | |
continue-on-error: true | |
if: env.SNAPSHOT == 'false' | |
with: | |
title: ${{ env.TESTBOX_VERSION }} | |
changelog: changelog.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
ref: refs/tags/v${{ env.TESTBOX_VERSION }} | |
- name: Inform Slack | |
if: ${{ always() }} | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_CHANNEL: testbox | |
SLACK_COLOR: ${{ job.status }} # or a specific color like 'green' or '#ff00ff' | |
SLACK_ICON_EMOJI: ":bell:" | |
SLACK_MESSAGE: 'TestBox ${{ env.TESTBOX_VERSION }} Built with ${{ job.status }}!' | |
SLACK_TITLE: "TestBox Build" | |
SLACK_USERNAME: CI | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
########################################################################################## | |
# Prep Next Release | |
########################################################################################## | |
prep_next_release: | |
name: Prep Next Release | |
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' | |
runs-on: ubuntu-20.04 | |
needs: [ build ] | |
steps: | |
# Checkout development | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
with: | |
ref: development | |
- name: Setup CommandBox | |
uses: Ortus-Solutions/setup-commandbox@v2.0.1 | |
with: | |
forgeboxAPIKey: ${{ secrets.FORGEBOX_TOKEN }} | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: testbox | |
path: .tmp | |
# Copy the changelog to the development branch | |
- name: Copy Changelog | |
run: | | |
cp .tmp/changelog.md changelog.md | |
# Bump to next version | |
- name: Bump Version | |
run: | | |
box bump --minor --!TagVersion | |
# Commit it back to development | |
- name: Commit Version Bump | |
uses: EndBug/add-and-commit@v9.1.1 | |
with: | |
author_name: Github Actions | |
author_email: info@ortussolutions.com | |
message: 'Version bump' | |
add: | | |
box.json | |
changelog.md |