Packaging #9
Workflow file for this run
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
| name: Packaging | |
| on: | |
| workflow_call: | |
| inputs: | |
| package: | |
| description: Package Directory ("managed" or "unlocked") | |
| default: "unlocked" | |
| required: false | |
| type: string | |
| version: | |
| description: Version Number (#.#.#) | |
| required: false | |
| type: string | |
| workflow_dispatch: | |
| inputs: | |
| package: | |
| description: Package Directory ("managed" or "unlocked") | |
| default: "unlocked" | |
| required: false | |
| version: | |
| description: Version Number (#.#.#) | |
| required: false | |
| jobs: | |
| create-package-version: | |
| name: Create Package Version | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Switch Package Context | |
| shell: bash | |
| run: | | |
| # Swap the sfdx-project.json file for the one listed in the package directory | |
| pwd | |
| mkdir -p tmp | |
| mv sfdx-project.json tmp/ | |
| cp "packages/${{ inputs.package }}/sfdx-project.json" . | |
| - name: Get Version Number | |
| id: get-version | |
| env: | |
| INPUT_VERSION: ${{ inputs.version }} | |
| shell: bash | |
| run: | | |
| # If an input version number isn't set, use the current version defined in sfdx-project.json: | |
| if [[ -z "$INPUT_VERSION" ]]; then | |
| VERSION_NUMBER=$(jq -r '.packageDirectories[] | select(.default == true) | .versionNumber' sfdx-project.json) | |
| echo "Using the version number defined in sfdx-project.json: $VERSION_NUMBER" | |
| else | |
| VERSION_NUMBER="${INPUT_VERSION}.NEXT" | |
| echo "Using specified version number: $VERSION_NUMBER" | |
| fi | |
| echo "version-number=$VERSION_NUMBER" >> "$GITHUB_OUTPUT" | |
| - name: Increment Version Number | |
| shell: bash | |
| env: | |
| VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} | |
| run: | | |
| # Update the version number/name in both project files: | |
| VERSION_NAME="v$VERSION_NUMBER" | |
| # Update the package file | |
| jq --arg vn "$VERSION_NUMBER" --arg vnm "$VERSION_NAME" \ | |
| '.packageDirectories[0].versionNumber = $vn | .packageDirectories[0].versionName = $vnm' \ | |
| sfdx-project.json > sfdx-project.json.tmp && mv sfdx-project.json.tmp sfdx-project.json | |
| # Update version in the original root file | |
| jq --arg vn "$VERSION_NUMBER" --arg vnm "$VERSION_NAME" \ | |
| '.packageDirectories[0].versionNumber = $vn | .packageDirectories[0].versionName = $vnm' \ | |
| tmp/sfdx-project.json > tmp/sfdx-project.json.tmp && mv tmp/sfdx-project.json.tmp tmp/sfdx-project.json | |
| - name: Setup SF CLI | |
| uses: ./.github/actions/setup-sf-cli | |
| - name: Authenticate Devhub | |
| env: | |
| CLIENT_ID: ${{ secrets.SALESFORCE_CONSUMER_KEY }} | |
| JWT_KEY: ${{ secrets.SALESFORCE_JWT_KEY }} | |
| USERNAME: ${{ secrets.SALESFORCE_DEVHUB_USERNAME }} | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| echo "${JWT_KEY}" > server.key | |
| sf org login jwt \ | |
| --client-id "$CLIENT_ID" \ | |
| --jwt-key-file server.key \ | |
| --set-default-dev-hub \ | |
| --username "$USERNAME" | |
| trap 'rm -f server.key' EXIT | |
| - name: Create New Package Version | |
| env: | |
| VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} | |
| shell: bash | |
| run: | | |
| # Get package alias from sfdx-project.json | |
| PACKAGE_ALIAS=$(jq -r '.packageDirectories[] | select(.default == true) | .package' sfdx-project.json) | |
| echo "Creating package version for: $PACKAGE_ALIAS" | |
| sf package version create \ | |
| --code-coverage \ | |
| --installation-key-bypass \ | |
| --package "$PACKAGE_ALIAS" \ | |
| --version-number "$VERSION_NUMBER" \ | |
| --wait 29 | |
| - name: Cleanup | |
| shell: bash | |
| run: | | |
| # Relocate root & package's project files back to their original location | |
| cp sfdx-project.json "packages/${{ inputs.package }}/" | |
| mv tmp/sfdx-project.json . | |
| rm -rf tmp/ | |
| - name: Tag & Commit Changes | |
| uses: "stefanzweifel/git-auto-commit-action@v6" | |
| with: | |
| commit_message: "Requested new package version v${{ steps.get-version.outputs.version-number }}" | |
| tagging_message: "v${{ steps.get-version.outputs.version-number }}" |