small fixes #4
This file contains hidden or 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: Release | |
| on: | |
| # If you push to main this will trigger a stable release | |
| 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 | |
| # Manual Trigger | |
| workflow_dispatch: | |
| env: | |
| MODULE_ID: ${{ github.event.repository.name }} | |
| JDK: 21 | |
| BUILD_ID: ${{ github.run_number }} | |
| SNAPSHOT: ${{ inputs.snapshot || false }} | |
| jobs: | |
| ############################################# | |
| # Build Snapshot or Final Release | |
| ############################################# | |
| build: | |
| name: Build & Publish Release | |
| runs-on: ubuntu-latest | |
| permissions: | |
| checks: write | |
| pull-requests: write | |
| contents: write | |
| issues: write | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup CommandBox | |
| uses: Ortus-Solutions/setup-commandbox@v2.0.1 | |
| with: | |
| forgeboxAPIKey: ${{ secrets.FORGEBOX_API_TOKEN }} | |
| - name: Setup Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: ${{ env.JDK }} | |
| - name: Setup Environment Variables For Build Process | |
| id: current_version | |
| run: | | |
| # Read Version from gradle.properties | |
| TMPVERSION=$(grep '^version=' gradle.properties | cut -d'=' -f2) | |
| # Replace existing prerelease identifier with -snapshot or append -snapshot if none exists | |
| # If we are on the development branch, we always append -snapshot | |
| if [[ "${{ github.ref }}" == "refs/heads/development" ]]; then | |
| TMPVERSION=$(echo $TMPVERSION | sed 's/-.*$//')-snapshot | |
| fi | |
| # Set the version in the environment | |
| echo "VERSION=$TMPVERSION" >> $GITHUB_ENV | |
| # Branch | |
| echo "Github Ref is $GITHUB_REF" | |
| echo "BRANCH=main" >> $GITHUB_ENV | |
| # Snapshot | |
| 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@3.1.0 | |
| if: env.SNAPSHOT == 'false' | |
| with: | |
| changelogPath: ./changelog.md | |
| tag: v${{ env.VERSION }} | |
| - name: Build it! | |
| run: | | |
| npm install -g markdownlint-cli | |
| markdownlint changelog.md --fix | |
| ./gradlew downloadBoxLang | |
| ./gradlew build -x test --stacktrace --console=plain | |
| - name: Commit Changelog [unreleased] with latest version | |
| uses: EndBug/add-and-commit@v9.1.4 | |
| if: env.SNAPSHOT == 'false' | |
| with: | |
| author_name: Github Actions | |
| author_email: info@ortussolutions.com | |
| message: "Finalized changelog for v${{ env.VERSION }}" | |
| add: changelog.md | |
| - name: Tag Version | |
| uses: rickstaa/action-create-tag@v1.7.2 | |
| if: env.SNAPSHOT == 'false' | |
| with: | |
| tag: "v${{ env.VERSION }}" | |
| force_push_tag: true | |
| message: "Latest Release v${{ env.VERSION }}" | |
| - name: Upload Build Artifacts | |
| if: success() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: boxlang-build | |
| path: | | |
| build/reports/tests/** | |
| changelog.md | |
| - name: Upload Distributions 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: "build/distributions" | |
| DEST_DIR: "ortussolutions/boxlang-modules/${{ env.MODULE_ID }}/${{ env.VERSION }}" | |
| - 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: "build/docs/javadoc" | |
| DEST_DIR: "boxlang-modules/${{ env.MODULE_ID }}/${{ env.VERSION }}" | |
| - name: Publish to ForgeBox | |
| run: | | |
| cd build/module | |
| box forgebox publish --force | |
| cd $GITHUB_WORKSPACE | |
| - name: Create Github Release | |
| uses: taiki-e/create-gh-release-action@v1.9.1 | |
| continue-on-error: true | |
| if: env.SNAPSHOT == 'false' | |
| id: create_release | |
| with: | |
| title: ${{ env.VERSION }} | |
| changelog: changelog.md | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| ref: refs/tags/v${{ env.VERSION }} | |
| - name: Inform Slack | |
| if: ${{ always() }} | |
| uses: rtCamp/action-slack-notify@v2 | |
| env: | |
| SLACK_CHANNEL: coding | |
| SLACK_COLOR: ${{ job.status }} # or a specific color like 'green' or '#ff00ff' | |
| SLACK_ICON_EMOJI: ":bell:" | |
| SLACK_MESSAGE: "Module ${{ env.MODULE_ID }} v${{ env.VERSION }} Built with ${{ job.status }}!" | |
| SLACK_TITLE: "BoxLang Module ${{ env.MODULE_ID }}" | |
| SLACK_USERNAME: CI | |
| SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| ########################################################################################## | |
| # Prep Next Release | |
| ########################################################################################## | |
| prep_next_release: | |
| name: Prep Next Release | |
| if: github.ref != 'refs/heads/development' | |
| runs-on: ubuntu-latest | |
| needs: [build] | |
| permissions: | |
| checks: write | |
| pull-requests: write | |
| contents: write | |
| issues: write | |
| steps: | |
| - name: Checkout Development Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: development | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: boxlang-build | |
| path: .tmp | |
| - name: Copy Changelog | |
| run: | | |
| cp .tmp/changelog.md changelog.md | |
| - name: Bump Version | |
| run: | | |
| ./gradlew bumpMinorVersion --stacktrace --console=plain | |
| git pull | |
| - name: Commit Version Bump | |
| uses: EndBug/add-and-commit@v9.1.4 | |
| with: | |
| author_name: Github Actions | |
| author_email: info@ortussolutions.com | |
| message: "Version bump" | |
| add: | | |
| gradle.properties | |
| changelog.md |