From 2a821f69e4afc6f347c41c9e56e9f601a4e0233a Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 14:25:56 -0500 Subject: [PATCH 01/37] Moving sfdx-project.json into packages/ directories --- .../managed/sfdx-project.json | 0 packages/unlocked/sfdx-project.json | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+) rename sfdx-project.json => packages/managed/sfdx-project.json (100%) create mode 100644 packages/unlocked/sfdx-project.json diff --git a/sfdx-project.json b/packages/managed/sfdx-project.json similarity index 100% rename from sfdx-project.json rename to packages/managed/sfdx-project.json diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json new file mode 100644 index 00000000..0f994e44 --- /dev/null +++ b/packages/unlocked/sfdx-project.json @@ -0,0 +1,34 @@ +{ + "packageDirectories": [ + { + "path": "force-app", + "default": true, + "package": "apex-database-layer", + "versionName": "ver 2.5.1", + "versionNumber": "2.5.1.NEXT", + "versionDescription": "New Soql.PreAndPostProcessor Plugin" + } + ], + "name": "apex-database-layer", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0", + "packageAliases": { + "apex-database-layer": "0HoDn000000kAONKA2", + "apex-database-layer@0.1.0-1": "04tDn0000006z4LIAQ", + "apex-database-layer@1.0.0-2": "04tDn0000011O0pIAE", + "apex-database-layer@2.0.0-1": "04tDn0000011OKyIAM", + "apex-database-layer@2.1.0-1": "04tDn0000011OPVIA2", + "apex-database-layer@2.2.0-1": "04tDn0000011OQJIA2", + "apex-database-layer@2.2.1-1": "04tDn0000011OQYIA2", + "apex-database-layer@2.2.2-1": "04tDn0000011OQdIAM", + "apex-database-layer@2.3.0-1": "04tDn0000011OQsIAM", + "apex-database-layer@2.4.0-1": "04tDn0000011OR7IAM", + "apex-database-layer@2.4.1-1": "04tDn0000011ORHIA2", + "apex-database-layer@2.4.2-2": "04tDn0000011ORbIAM", + "apex-database-layer@2.4.3-1": "04tDn0000011ORgIAM", + "apex-database-layer@2.4.4-1": "04tDn0000011ORvIAM", + "apex-database-layer@2.5.0-2": "04tDn0000011OS5IAM", + "apex-database-layer@2.5.1-1": "04tDn0000011OSAIA2" + } +} From 6ed05501b96df9eaf9aedd39f5467e7e663bedee Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 14:30:11 -0500 Subject: [PATCH 02/37] adding temporary sfdx-project.json file for deployment purposes --- sfdx-project.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 sfdx-project.json diff --git a/sfdx-project.json b/sfdx-project.json new file mode 100644 index 00000000..71544920 --- /dev/null +++ b/sfdx-project.json @@ -0,0 +1,12 @@ +{ + "packageDirectories": [ + { + "path": "force-app", + "default": true + } + ], + "name": "apex-database-layer", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0" +} From 8ca55bf38aad04535e470bd41a6265846922c360 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 14:55:26 -0500 Subject: [PATCH 03/37] experimenting with package structures --- packages/managed/sfdx-project.json | 31 +++++---------------- packages/unlocked/sfdx-project.json | 42 ++++++++++++++--------------- sfdx-project.json | 12 +++++++-- 3 files changed, 38 insertions(+), 47 deletions(-) diff --git a/packages/managed/sfdx-project.json b/packages/managed/sfdx-project.json index 0f994e44..46626844 100644 --- a/packages/managed/sfdx-project.json +++ b/packages/managed/sfdx-project.json @@ -3,32 +3,15 @@ { "path": "force-app", "default": true, - "package": "apex-database-layer", - "versionName": "ver 2.5.1", - "versionNumber": "2.5.1.NEXT", - "versionDescription": "New Soql.PreAndPostProcessor Plugin" + "package": "apex-database-layer-managed", + "versionName": "ver 3.0.0", + "versionNumber": "3.0.0.NEXT", + "versionDescription": "Removing deprecated methods, introducing managed package" } ], - "name": "apex-database-layer", - "namespace": "", + "name": "apex-database-layer-managed", + "namespace": "apxsp", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "64.0", - "packageAliases": { - "apex-database-layer": "0HoDn000000kAONKA2", - "apex-database-layer@0.1.0-1": "04tDn0000006z4LIAQ", - "apex-database-layer@1.0.0-2": "04tDn0000011O0pIAE", - "apex-database-layer@2.0.0-1": "04tDn0000011OKyIAM", - "apex-database-layer@2.1.0-1": "04tDn0000011OPVIA2", - "apex-database-layer@2.2.0-1": "04tDn0000011OQJIA2", - "apex-database-layer@2.2.1-1": "04tDn0000011OQYIA2", - "apex-database-layer@2.2.2-1": "04tDn0000011OQdIAM", - "apex-database-layer@2.3.0-1": "04tDn0000011OQsIAM", - "apex-database-layer@2.4.0-1": "04tDn0000011OR7IAM", - "apex-database-layer@2.4.1-1": "04tDn0000011ORHIA2", - "apex-database-layer@2.4.2-2": "04tDn0000011ORbIAM", - "apex-database-layer@2.4.3-1": "04tDn0000011ORgIAM", - "apex-database-layer@2.4.4-1": "04tDn0000011ORvIAM", - "apex-database-layer@2.5.0-2": "04tDn0000011OS5IAM", - "apex-database-layer@2.5.1-1": "04tDn0000011OSAIA2" - } + "packageAliases": {} } diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index 0f994e44..a4fd149e 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -3,32 +3,32 @@ { "path": "force-app", "default": true, - "package": "apex-database-layer", - "versionName": "ver 2.5.1", - "versionNumber": "2.5.1.NEXT", - "versionDescription": "New Soql.PreAndPostProcessor Plugin" + "package": "apex-database-layer-unlocked", + "versionName": "ver 3.0.0", + "versionNumber": "3.0.0.NEXT", + "versionDescription": "Removing deprecated methods, introducing managed package" } ], - "name": "apex-database-layer", + "name": "apex-database-layer-unlocked", "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "64.0", "packageAliases": { - "apex-database-layer": "0HoDn000000kAONKA2", - "apex-database-layer@0.1.0-1": "04tDn0000006z4LIAQ", - "apex-database-layer@1.0.0-2": "04tDn0000011O0pIAE", - "apex-database-layer@2.0.0-1": "04tDn0000011OKyIAM", - "apex-database-layer@2.1.0-1": "04tDn0000011OPVIA2", - "apex-database-layer@2.2.0-1": "04tDn0000011OQJIA2", - "apex-database-layer@2.2.1-1": "04tDn0000011OQYIA2", - "apex-database-layer@2.2.2-1": "04tDn0000011OQdIAM", - "apex-database-layer@2.3.0-1": "04tDn0000011OQsIAM", - "apex-database-layer@2.4.0-1": "04tDn0000011OR7IAM", - "apex-database-layer@2.4.1-1": "04tDn0000011ORHIA2", - "apex-database-layer@2.4.2-2": "04tDn0000011ORbIAM", - "apex-database-layer@2.4.3-1": "04tDn0000011ORgIAM", - "apex-database-layer@2.4.4-1": "04tDn0000011ORvIAM", - "apex-database-layer@2.5.0-2": "04tDn0000011OS5IAM", - "apex-database-layer@2.5.1-1": "04tDn0000011OSAIA2" + "apex-database-layer-unlocked": "0HoDn000000kAONKA2", + "apex-database-layer-unlocked@0.1.0-1": "04tDn0000006z4LIAQ", + "apex-database-layer-unlocked@1.0.0-2": "04tDn0000011O0pIAE", + "apex-database-layer-unlocked@2.0.0-1": "04tDn0000011OKyIAM", + "apex-database-layer-unlocked@2.1.0-1": "04tDn0000011OPVIA2", + "apex-database-layer-unlocked@2.2.0-1": "04tDn0000011OQJIA2", + "apex-database-layer-unlocked@2.2.1-1": "04tDn0000011OQYIA2", + "apex-database-layer-unlocked@2.2.2-1": "04tDn0000011OQdIAM", + "apex-database-layer-unlocked@2.3.0-1": "04tDn0000011OQsIAM", + "apex-database-layer-unlocked@2.4.0-1": "04tDn0000011OR7IAM", + "apex-database-layer-unlocked@2.4.1-1": "04tDn0000011ORHIA2", + "apex-database-layer-unlocked@2.4.2-2": "04tDn0000011ORbIAM", + "apex-database-layer-unlocked@2.4.3-1": "04tDn0000011ORgIAM", + "apex-database-layer-unlocked@2.4.4-1": "04tDn0000011ORvIAM", + "apex-database-layer-unlocked@2.5.0-2": "04tDn0000011OS5IAM", + "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2" } } diff --git a/sfdx-project.json b/sfdx-project.json index 71544920..ade996ec 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -2,11 +2,19 @@ "packageDirectories": [ { "path": "force-app", - "default": true + "default": true, + "package": "apex-database-layer", + "versionName": "ver 3.0.0" } ], "name": "apex-database-layer", "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "64.0" + "sourceApiVersion": "64.0", + "packageAliases": { + "apex-database-layer-managed": "", + "apex-database-layer-unlocked": "0HoDn000000kAONKA2", + "apex-database-layer-managed@latest": "", + "apex-database-layer-unlocked@latest": "" + } } From 620191281d75c49e36adfbe73ad2a3787a307784 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 15:06:02 -0500 Subject: [PATCH 04/37] checkpoint --- packages/managed/sfdx-project.json | 14 ++++++++------ packages/unlocked/sfdx-project.json | 2 +- sfdx-project.json | 10 ++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/managed/sfdx-project.json b/packages/managed/sfdx-project.json index 46626844..3da5f9eb 100644 --- a/packages/managed/sfdx-project.json +++ b/packages/managed/sfdx-project.json @@ -1,17 +1,19 @@ { "packageDirectories": [ { + "versionName": "v3.0.0", + "versionNumber": "3.0.0.NEXT", "path": "force-app", "default": true, - "package": "apex-database-layer-managed", - "versionName": "ver 3.0.0", - "versionNumber": "3.0.0.NEXT", - "versionDescription": "Removing deprecated methods, introducing managed package" + "package": "Apex Database Layer (Managed)", + "versionDescription": "A slim, extensible DML & SOQL Mocking Library." } ], - "name": "apex-database-layer-managed", + "name": "Apex Database Layer (Managed)", "namespace": "apxsp", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "64.0", - "packageAliases": {} + "packageAliases": { + "Apex Database Layer (Managed)": "0HoDn0000010wCnKAI" + } } diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index a4fd149e..dd6595ef 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -4,7 +4,7 @@ "path": "force-app", "default": true, "package": "apex-database-layer-unlocked", - "versionName": "ver 3.0.0", + "versionName": "v3.0.0", "versionNumber": "3.0.0.NEXT", "versionDescription": "Removing deprecated methods, introducing managed package" } diff --git a/sfdx-project.json b/sfdx-project.json index ade996ec..13bd7f5f 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -3,8 +3,8 @@ { "path": "force-app", "default": true, - "package": "apex-database-layer", - "versionName": "ver 3.0.0" + "versionName": "v3.0.0", + "versionNumber": "3.0.0.NEXT" } ], "name": "apex-database-layer", @@ -12,9 +12,7 @@ "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "64.0", "packageAliases": { - "apex-database-layer-managed": "", - "apex-database-layer-unlocked": "0HoDn000000kAONKA2", - "apex-database-layer-managed@latest": "", - "apex-database-layer-unlocked@latest": "" + "apex-database-layer-managed": "0HoDn0000010wCnKAI", + "apex-database-layer-unlocked": "0HoDn000000kAONKA2" } } From 32bbde0022659e7aca0002460bb52e0e40835b30 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:15:24 -0500 Subject: [PATCH 05/37] checkpoint --- .github/workflows/ci.yml | 2 +- .github/workflows/packaging.yml | 71 +++++++++++++++++++---------- packages/unlocked/sfdx-project.json | 4 +- 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22c14144..744a0e81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: id-token: write steps: - - name: Checkout repository + - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 7b6b7158..a90722fd 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -1,43 +1,46 @@ name: Packaging on: - push: - branches: - - main - paths: - - "force-app/**" + workflow_call: + inputs: + package: + description: Package Directory + required: true + type: string + version: + description: Version Number (#.#.#) + required: false + type: string workflow_dispatch: inputs: - version-number: - description: "Version Number (#.#.#): Do not include the 'v'" + package: + description: Package Directory + required: true + version: + description: Version Number (#.#.#) required: false -concurrency: - group: packaging-${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - PACKAGE_ALIAS: "apex-database-layer" - jobs: - create-unlocked-package: - name: Create Unlocked Package Version - permissions: - contents: write + create-package-version: + name: runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - name: Checkout uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ github.token }} + + - name: Switch Package Context + shell: bash + run: | + # Swap the sfdx-project.json file for the one listed in the package directory: + # - 1. Create a tmp/ directory + # - 2. Move the existing sfdx-project.json file into the tmp/ directory + # - 3. Move the specified ${{ inputs.package }} directory's sfdx-project.json file into the project root - name: Get Version Number id: get-version env: - INPUT_VERSION: ${{ inputs.version-number }} + 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 @@ -49,6 +52,16 @@ jobs: 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 on both tmp/sfdx-project.json and sfdx-project.json: + VERSION_NAME="v$VERSION_NUMBER" + # - 1. Update the version number/name on sfdx-project.json + # - 2. Update the version number/name on tmp/sfdx-project.json + - name: Setup SF CLI uses: ./.github/actions/setup-sf-cli @@ -57,6 +70,7 @@ jobs: 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 @@ -70,6 +84,7 @@ jobs: - name: Create New Package Version env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} + shell: bash run: | sf package version create \ --code-coverage \ @@ -78,6 +93,14 @@ jobs: --version-number "$VERSION_NUMBER" \ --wait 29 + - name: Cleanup + shell: bash + run: | + # Relocate root & package's project files back to their original location + # - 1. Move the root's sfdx-project.json back to the directory specified in ${{ inputs.package }} + # - 2. Move tmp/sfdx-project.json back to the root + # - 3. Delete the tmp/ directory, and any other temporary files created by this process + - name: Tag & Commit Changes uses: "stefanzweifel/git-auto-commit-action@v6" with: diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index dd6595ef..fcec0f35 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -4,8 +4,8 @@ "path": "force-app", "default": true, "package": "apex-database-layer-unlocked", - "versionName": "v3.0.0", - "versionNumber": "3.0.0.NEXT", + "versionName": "v2.5.1", + "versionNumber": "2.5.1.NEXT", "versionDescription": "Removing deprecated methods, introducing managed package" } ], From f2d57c6eeacee54182e6d252de934f1b021d0db5 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:16:07 -0500 Subject: [PATCH 06/37] contd. --- .github/workflows/packaging.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index a90722fd..d190ec6d 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -31,7 +31,7 @@ jobs: - name: Switch Package Context shell: bash run: | - # Swap the sfdx-project.json file for the one listed in the package directory: + # TODO: Swap the sfdx-project.json file for the one listed in the package directory: # - 1. Create a tmp/ directory # - 2. Move the existing sfdx-project.json file into the tmp/ directory # - 3. Move the specified ${{ inputs.package }} directory's sfdx-project.json file into the project root @@ -57,7 +57,7 @@ jobs: env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} run: | - # Update the version number/name on both tmp/sfdx-project.json and sfdx-project.json: + # TODO: Update the version number/name on both tmp/sfdx-project.json and sfdx-project.json: VERSION_NAME="v$VERSION_NUMBER" # - 1. Update the version number/name on sfdx-project.json # - 2. Update the version number/name on tmp/sfdx-project.json @@ -96,7 +96,7 @@ jobs: - name: Cleanup shell: bash run: | - # Relocate root & package's project files back to their original location + # TODO: Relocate root & package's project files back to their original location # - 1. Move the root's sfdx-project.json back to the directory specified in ${{ inputs.package }} # - 2. Move tmp/sfdx-project.json back to the root # - 3. Delete the tmp/ directory, and any other temporary files created by this process From 42b6a045c001ae9875216d2e0d9d6f1275602e57 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:25:49 -0500 Subject: [PATCH 07/37] first draft --- .github/workflows/packaging.yml | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index d190ec6d..414b6ed7 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -22,7 +22,7 @@ on: jobs: create-package-version: - name: + name: Create Package Version runs-on: ubuntu-latest steps: - name: Checkout @@ -31,10 +31,10 @@ jobs: - name: Switch Package Context shell: bash run: | - # TODO: Swap the sfdx-project.json file for the one listed in the package directory: - # - 1. Create a tmp/ directory - # - 2. Move the existing sfdx-project.json file into the tmp/ directory - # - 3. Move the specified ${{ inputs.package }} directory's sfdx-project.json file into the project root + # Swap the sfdx-project.json file for the one listed in the package directory + mkdir -p tmp + mv sfdx-project.json tmp/ + cp "${{ inputs.package }}/sfdx-project.json" . - name: Get Version Number id: get-version @@ -57,10 +57,16 @@ jobs: env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} run: | - # TODO: Update the version number/name on both tmp/sfdx-project.json and sfdx-project.json: + # Update the version number/name in both project files: VERSION_NAME="v$VERSION_NUMBER" - # - 1. Update the version number/name on sfdx-project.json - # - 2. Update the version number/name on tmp/sfdx-project.json + # 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 @@ -86,6 +92,9 @@ jobs: 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 \ @@ -96,10 +105,10 @@ jobs: - name: Cleanup shell: bash run: | - # TODO: Relocate root & package's project files back to their original location - # - 1. Move the root's sfdx-project.json back to the directory specified in ${{ inputs.package }} - # - 2. Move tmp/sfdx-project.json back to the root - # - 3. Delete the tmp/ directory, and any other temporary files created by this process + # Relocate root & package's project files back to their original location + cp sfdx-project.json "${{ inputs.package }}/" + mv tmp/sfdx-project.json . + rm -rf tmp/ - name: Tag & Commit Changes uses: "stefanzweifel/git-auto-commit-action@v6" From 27b6148681a54e985489897b0fdd9c57b4e7917a Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:30:37 -0500 Subject: [PATCH 08/37] reworking package input --- .github/workflows/packaging.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 414b6ed7..e16082f7 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -4,8 +4,9 @@ on: workflow_call: inputs: package: - description: Package Directory - required: true + description: Package Directory ("managed" or "unlocked") + default: "unlocked" + required: false type: string version: description: Version Number (#.#.#) @@ -14,8 +15,9 @@ on: workflow_dispatch: inputs: package: - description: Package Directory - required: true + description: Package Directory ("managed" or "unlocked") + default: "unlocked" + required: false version: description: Version Number (#.#.#) required: false @@ -32,9 +34,10 @@ jobs: 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 "${{ inputs.package }}/sfdx-project.json" . + cp "packages/${{ inputs.package }}/sfdx-project.json" . - name: Get Version Number id: get-version @@ -106,7 +109,7 @@ jobs: shell: bash run: | # Relocate root & package's project files back to their original location - cp sfdx-project.json "${{ inputs.package }}/" + cp sfdx-project.json "packages/${{ inputs.package }}/" mv tmp/sfdx-project.json . rm -rf tmp/ From 562b4a37012d7e2374aeb8aeeb44dd0ea4f4712a Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:32:34 -0500 Subject: [PATCH 09/37] removing pwd --- .github/workflows/packaging.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index e16082f7..7039e004 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -34,7 +34,6 @@ jobs: 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" . From b069f3709ae250767e95d993aaeee2af55ae16b5 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:34:30 -0500 Subject: [PATCH 10/37] fixing permissions --- .github/workflows/packaging.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 7039e004..a5a20ac0 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -25,6 +25,8 @@ on: jobs: create-package-version: name: Create Package Version + permissions: + contents: write runs-on: ubuntu-latest steps: - name: Checkout From c81af33147689bc0141e560804a8e5978345f5b1 Mon Sep 17 00:00:00 2001 From: jasonsiders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 02:37:29 +0000 Subject: [PATCH 11/37] Requested new package version v3.0.0.NEXT --- packages/unlocked/sfdx-project.json | 67 +++++++++++++++-------------- sfdx-project.json | 32 +++++++------- 2 files changed, 50 insertions(+), 49 deletions(-) diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index fcec0f35..a09b8b8b 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -1,34 +1,35 @@ { - "packageDirectories": [ - { - "path": "force-app", - "default": true, - "package": "apex-database-layer-unlocked", - "versionName": "v2.5.1", - "versionNumber": "2.5.1.NEXT", - "versionDescription": "Removing deprecated methods, introducing managed package" - } - ], - "name": "apex-database-layer-unlocked", - "namespace": "", - "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "64.0", - "packageAliases": { - "apex-database-layer-unlocked": "0HoDn000000kAONKA2", - "apex-database-layer-unlocked@0.1.0-1": "04tDn0000006z4LIAQ", - "apex-database-layer-unlocked@1.0.0-2": "04tDn0000011O0pIAE", - "apex-database-layer-unlocked@2.0.0-1": "04tDn0000011OKyIAM", - "apex-database-layer-unlocked@2.1.0-1": "04tDn0000011OPVIA2", - "apex-database-layer-unlocked@2.2.0-1": "04tDn0000011OQJIA2", - "apex-database-layer-unlocked@2.2.1-1": "04tDn0000011OQYIA2", - "apex-database-layer-unlocked@2.2.2-1": "04tDn0000011OQdIAM", - "apex-database-layer-unlocked@2.3.0-1": "04tDn0000011OQsIAM", - "apex-database-layer-unlocked@2.4.0-1": "04tDn0000011OR7IAM", - "apex-database-layer-unlocked@2.4.1-1": "04tDn0000011ORHIA2", - "apex-database-layer-unlocked@2.4.2-2": "04tDn0000011ORbIAM", - "apex-database-layer-unlocked@2.4.3-1": "04tDn0000011ORgIAM", - "apex-database-layer-unlocked@2.4.4-1": "04tDn0000011ORvIAM", - "apex-database-layer-unlocked@2.5.0-2": "04tDn0000011OS5IAM", - "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2" - } -} + "packageDirectories": [ + { + "path": "force-app", + "default": true, + "package": "apex-database-layer-unlocked", + "versionName": "v3.0.0.NEXT", + "versionNumber": "3.0.0.NEXT", + "versionDescription": "Removing deprecated methods, introducing managed package" + } + ], + "name": "apex-database-layer-unlocked", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0", + "packageAliases": { + "apex-database-layer-unlocked": "0HoDn000000kAONKA2", + "apex-database-layer-unlocked@0.1.0-1": "04tDn0000006z4LIAQ", + "apex-database-layer-unlocked@1.0.0-2": "04tDn0000011O0pIAE", + "apex-database-layer-unlocked@2.0.0-1": "04tDn0000011OKyIAM", + "apex-database-layer-unlocked@2.1.0-1": "04tDn0000011OPVIA2", + "apex-database-layer-unlocked@2.2.0-1": "04tDn0000011OQJIA2", + "apex-database-layer-unlocked@2.2.1-1": "04tDn0000011OQYIA2", + "apex-database-layer-unlocked@2.2.2-1": "04tDn0000011OQdIAM", + "apex-database-layer-unlocked@2.3.0-1": "04tDn0000011OQsIAM", + "apex-database-layer-unlocked@2.4.0-1": "04tDn0000011OR7IAM", + "apex-database-layer-unlocked@2.4.1-1": "04tDn0000011ORHIA2", + "apex-database-layer-unlocked@2.4.2-2": "04tDn0000011ORbIAM", + "apex-database-layer-unlocked@2.4.3-1": "04tDn0000011ORgIAM", + "apex-database-layer-unlocked@2.4.4-1": "04tDn0000011ORvIAM", + "apex-database-layer-unlocked@2.5.0-2": "04tDn0000011OS5IAM", + "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2", + "apex-database-layer-unlocked@3.0.0-2": "04tDn0000011OSeIAM" + } +} \ No newline at end of file diff --git a/sfdx-project.json b/sfdx-project.json index 13bd7f5f..8cd2ea40 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -1,18 +1,18 @@ { - "packageDirectories": [ - { - "path": "force-app", - "default": true, - "versionName": "v3.0.0", - "versionNumber": "3.0.0.NEXT" - } - ], - "name": "apex-database-layer", - "namespace": "", - "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "64.0", - "packageAliases": { - "apex-database-layer-managed": "0HoDn0000010wCnKAI", - "apex-database-layer-unlocked": "0HoDn000000kAONKA2" - } + "packageDirectories": [ + { + "path": "force-app", + "default": true, + "versionName": "v3.0.0.NEXT", + "versionNumber": "3.0.0.NEXT" + } + ], + "name": "apex-database-layer", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0", + "packageAliases": { + "apex-database-layer-managed": "0HoDn0000010wCnKAI", + "apex-database-layer-unlocked": "0HoDn000000kAONKA2" + } } From 808798b7c98210f201f74e1a79adb8acf34ac18c Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:44:40 -0500 Subject: [PATCH 12/37] adding prettier --- .github/workflows/packaging.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index a5a20ac0..1ef7c8f6 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -56,7 +56,7 @@ jobs: fi echo "version-number=$VERSION_NUMBER" >> "$GITHUB_OUTPUT" - - name: Increment Version Number + - name: Update Version Number shell: bash env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} @@ -106,6 +106,13 @@ jobs: --version-number "$VERSION_NUMBER" \ --wait 29 + # Note: Packaging updates sfdx-project.json, but the formatting is often non-compliant + # This action updates the changed project files to their original format + - name: Run Prettier + uses: creyD/prettier_action@v4.6 + with: + prettier_options: --write **/*.{json} + - name: Cleanup shell: bash run: | @@ -117,5 +124,5 @@ jobs: - 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 }}" + commit_message: "Packaged new ${{ inputs.package }} version v${{ steps.get-version.outputs.version-number }}" tagging_message: "v${{ steps.get-version.outputs.version-number }}" From 3e52857e33325db66d25616eb62261f8eac324f7 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:49:34 -0500 Subject: [PATCH 13/37] tweaking prettier action --- .github/workflows/packaging.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 1ef7c8f6..93fcf49a 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -106,12 +106,14 @@ jobs: --version-number "$VERSION_NUMBER" \ --wait 29 - # Note: Packaging updates sfdx-project.json, but the formatting is often non-compliant - # This action updates the changed project files to their original format - name: Run Prettier - uses: creyD/prettier_action@v4.6 - with: - prettier_options: --write **/*.{json} + shell: bash + run: | + # Packaging causes project file's formatting to be overwritten + # Before committing, re-run prettier on these files: + npm i prettier + prettier -w sfdx-project.json + prettier -w tmp/sfdx-project.json - name: Cleanup shell: bash From 4e3be6968eb5c21d6be99d2d4a634ba135b719ff Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:53:55 -0500 Subject: [PATCH 14/37] contd. --- .github/workflows/packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 93fcf49a..1d1cf63c 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -111,7 +111,7 @@ jobs: run: | # Packaging causes project file's formatting to be overwritten # Before committing, re-run prettier on these files: - npm i prettier + npm install prettier prettier -w sfdx-project.json prettier -w tmp/sfdx-project.json From 3e46c363ad2eac3acc54255771f6a545fa3d64f4 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:58:42 -0500 Subject: [PATCH 15/37] contd. --- .github/workflows/packaging.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 1d1cf63c..37966aeb 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -72,6 +72,12 @@ jobs: '.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 Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Setup SF CLI uses: ./.github/actions/setup-sf-cli From 073fefdeeb85f05d1320c2468d66148bbebdbf96 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:58:57 -0500 Subject: [PATCH 16/37] contd. --- .github/workflows/packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 37966aeb..7b1f1f9b 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -76,7 +76,7 @@ jobs: uses: actions/setup-node@v4 with: node-version: 20 - cache: "npm" + cache: npm - name: Setup SF CLI uses: ./.github/actions/setup-sf-cli From 2398b41e79570f4f2d9435a1666be9a9b36d3318 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Sun, 3 Aug 2025 22:04:33 -0500 Subject: [PATCH 17/37] running prettier --- .github/workflows/packaging.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 7b1f1f9b..eb76dde5 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -115,11 +115,9 @@ jobs: - name: Run Prettier shell: bash run: | - # Packaging causes project file's formatting to be overwritten - # Before committing, re-run prettier on these files: - npm install prettier - prettier -w sfdx-project.json - prettier -w tmp/sfdx-project.json + # Run Prettier on sfdx-project.json files, since packaging overwrites spacing: + npx prettier -w sfdx-project.json + npx prettier -w tmp/sfdx-project.json - name: Cleanup shell: bash From f98908919a59bacf5d14e50b877b8f248cb7c06c Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 07:42:07 -0500 Subject: [PATCH 18/37] not testing actually creating package versions for right now --- .github/workflows/packaging.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index eb76dde5..2e9efd97 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -98,6 +98,9 @@ jobs: trap 'rm -f server.key' EXIT - name: Create New Package Version + if: | + # TODO: Remove this when the limit is lifted + ${{ '0' == '1' }} env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} shell: bash From 090e489660495eb7e103257cef66f43b2d20987f Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 07:43:56 -0500 Subject: [PATCH 19/37] contd. --- .github/workflows/packaging.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 2e9efd97..92c65988 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -97,10 +97,9 @@ jobs: --username "$USERNAME" trap 'rm -f server.key' EXIT + # TODO: Remove this if statement when the limit is lifted - name: Create New Package Version - if: | - # TODO: Remove this when the limit is lifted - ${{ '0' == '1' }} + if: ${{ false }} env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} shell: bash From 0726f219534e760492670f24aade9df79f204bfc Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 07:50:21 -0500 Subject: [PATCH 20/37] troubleshooting node --- .github/workflows/packaging.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 92c65988..c4c9542c 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -32,6 +32,13 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Setup Node + shell: bash + run: npm ci + + - name: Setup SF CLI + uses: ./.github/actions/setup-sf-cli + - name: Switch Package Context shell: bash run: | @@ -72,15 +79,6 @@ jobs: '.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 Node - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - - - name: Setup SF CLI - uses: ./.github/actions/setup-sf-cli - - name: Authenticate Devhub env: CLIENT_ID: ${{ secrets.SALESFORCE_CONSUMER_KEY }} From c2c03431dc5063da7864e83a4f2a69632e5df149 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 07:53:41 -0500 Subject: [PATCH 21/37] fix package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0af2e49f..d42de8c2 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "lint": "eslint **/{aura,lwc}/**/*.js", "test": "npm run test:unit", - "test:unit": "sfdx-lwc-jest --passWithNoTests", + "test:unit": "sfdx-lwc-jest -- --passWithNoTests", "test:unit:watch": "sfdx-lwc-jest --watch", "test:unit:debug": "sfdx-lwc-jest --debug", "test:unit:coverage": "sfdx-lwc-jest --coverage", From 680e74f3534a1a17acf4b772fa3a556c421b8483 Mon Sep 17 00:00:00 2001 From: jasonsiders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 12:55:05 +0000 Subject: [PATCH 22/37] Packaged new unlocked version v3.0.0.NEXT --- .husky/pre-commit | 5 +-- packages/unlocked/sfdx-project.json | 68 ++++++++++++++--------------- sfdx-project.json | 32 +++++++------- 3 files changed, 51 insertions(+), 54 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index feac116a..72c4429b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -npm run precommit \ No newline at end of file +npm test diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index a09b8b8b..348257d5 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -1,35 +1,35 @@ { - "packageDirectories": [ - { - "path": "force-app", - "default": true, - "package": "apex-database-layer-unlocked", - "versionName": "v3.0.0.NEXT", - "versionNumber": "3.0.0.NEXT", - "versionDescription": "Removing deprecated methods, introducing managed package" - } - ], - "name": "apex-database-layer-unlocked", - "namespace": "", - "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "64.0", - "packageAliases": { - "apex-database-layer-unlocked": "0HoDn000000kAONKA2", - "apex-database-layer-unlocked@0.1.0-1": "04tDn0000006z4LIAQ", - "apex-database-layer-unlocked@1.0.0-2": "04tDn0000011O0pIAE", - "apex-database-layer-unlocked@2.0.0-1": "04tDn0000011OKyIAM", - "apex-database-layer-unlocked@2.1.0-1": "04tDn0000011OPVIA2", - "apex-database-layer-unlocked@2.2.0-1": "04tDn0000011OQJIA2", - "apex-database-layer-unlocked@2.2.1-1": "04tDn0000011OQYIA2", - "apex-database-layer-unlocked@2.2.2-1": "04tDn0000011OQdIAM", - "apex-database-layer-unlocked@2.3.0-1": "04tDn0000011OQsIAM", - "apex-database-layer-unlocked@2.4.0-1": "04tDn0000011OR7IAM", - "apex-database-layer-unlocked@2.4.1-1": "04tDn0000011ORHIA2", - "apex-database-layer-unlocked@2.4.2-2": "04tDn0000011ORbIAM", - "apex-database-layer-unlocked@2.4.3-1": "04tDn0000011ORgIAM", - "apex-database-layer-unlocked@2.4.4-1": "04tDn0000011ORvIAM", - "apex-database-layer-unlocked@2.5.0-2": "04tDn0000011OS5IAM", - "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2", - "apex-database-layer-unlocked@3.0.0-2": "04tDn0000011OSeIAM" - } -} \ No newline at end of file + "packageDirectories": [ + { + "path": "force-app", + "default": true, + "package": "apex-database-layer-unlocked", + "versionName": "v3.0.0.NEXT", + "versionNumber": "3.0.0.NEXT", + "versionDescription": "Removing deprecated methods, introducing managed package" + } + ], + "name": "apex-database-layer-unlocked", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0", + "packageAliases": { + "apex-database-layer-unlocked": "0HoDn000000kAONKA2", + "apex-database-layer-unlocked@0.1.0-1": "04tDn0000006z4LIAQ", + "apex-database-layer-unlocked@1.0.0-2": "04tDn0000011O0pIAE", + "apex-database-layer-unlocked@2.0.0-1": "04tDn0000011OKyIAM", + "apex-database-layer-unlocked@2.1.0-1": "04tDn0000011OPVIA2", + "apex-database-layer-unlocked@2.2.0-1": "04tDn0000011OQJIA2", + "apex-database-layer-unlocked@2.2.1-1": "04tDn0000011OQYIA2", + "apex-database-layer-unlocked@2.2.2-1": "04tDn0000011OQdIAM", + "apex-database-layer-unlocked@2.3.0-1": "04tDn0000011OQsIAM", + "apex-database-layer-unlocked@2.4.0-1": "04tDn0000011OR7IAM", + "apex-database-layer-unlocked@2.4.1-1": "04tDn0000011ORHIA2", + "apex-database-layer-unlocked@2.4.2-2": "04tDn0000011ORbIAM", + "apex-database-layer-unlocked@2.4.3-1": "04tDn0000011ORgIAM", + "apex-database-layer-unlocked@2.4.4-1": "04tDn0000011ORvIAM", + "apex-database-layer-unlocked@2.5.0-2": "04tDn0000011OS5IAM", + "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2", + "apex-database-layer-unlocked@3.0.0-2": "04tDn0000011OSeIAM" + } +} diff --git a/sfdx-project.json b/sfdx-project.json index 8cd2ea40..a0ac4116 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -1,18 +1,18 @@ { - "packageDirectories": [ - { - "path": "force-app", - "default": true, - "versionName": "v3.0.0.NEXT", - "versionNumber": "3.0.0.NEXT" - } - ], - "name": "apex-database-layer", - "namespace": "", - "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "64.0", - "packageAliases": { - "apex-database-layer-managed": "0HoDn0000010wCnKAI", - "apex-database-layer-unlocked": "0HoDn000000kAONKA2" - } + "packageDirectories": [ + { + "path": "force-app", + "default": true, + "versionName": "v3.0.0.NEXT", + "versionNumber": "3.0.0.NEXT" + } + ], + "name": "apex-database-layer", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0", + "packageAliases": { + "apex-database-layer-managed": "0HoDn0000010wCnKAI", + "apex-database-layer-unlocked": "0HoDn000000kAONKA2" + } } From 259b17f93fa76c815e8d5f3fc391323727cd75cb Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 07:58:36 -0500 Subject: [PATCH 23/37] alternate approach --- .github/workflows/packaging.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index c4c9542c..ae1316c0 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -33,7 +33,11 @@ jobs: uses: actions/checkout@v4 - name: Setup Node - shell: bash + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'npm' + - shell: bash run: npm ci - name: Setup SF CLI From a3d2c74a87ed3061554887825a1da5022c042e03 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:00:47 -0500 Subject: [PATCH 24/37] cleanup --- .github/workflows/packaging.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index ae1316c0..2ebe11f5 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -32,15 +32,17 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup Node + - name: Install Node uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' - - shell: bash + + - name: Install Dependencies + shell: bash run: npm ci - - name: Setup SF CLI + - name: Install SF CLI uses: ./.github/actions/setup-sf-cli - name: Switch Package Context From ad0008e92804be519cd7eb23d074b38f8d118122 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:01:27 -0500 Subject: [PATCH 25/37] renaming steps --- .github/workflows/packaging.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 2ebe11f5..a83e2b3e 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -32,17 +32,17 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Node + - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' - - name: Install Dependencies + - name: Setup NPM shell: bash run: npm ci - - name: Install SF CLI + - name: Setup SF CLI uses: ./.github/actions/setup-sf-cli - name: Switch Package Context From 4117dd70b8a37378f30e9a19b1530f95c693b3ee Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:01:53 -0500 Subject: [PATCH 26/37] use latest version of node --- .github/workflows/packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index a83e2b3e..2409605d 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -35,7 +35,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v4 with: - node-version: 20 + node-version: lts/* cache: 'npm' - name: Setup NPM From 446e16f14fa3486b862ce63ff8714b34a5ca1682 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:24:40 -0500 Subject: [PATCH 27/37] fixing commit message and package version name --- .github/workflows/packaging.yml | 10 ++++++---- sfdx-project.json | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 2409605d..e471d8fd 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -67,15 +67,18 @@ jobs: VERSION_NUMBER="${INPUT_VERSION}.NEXT" echo "Using specified version number: $VERSION_NUMBER" fi + # Create version name by removing .NEXT suffix + VERSION_NAME="v${VERSION_NUMBER%.NEXT}" echo "version-number=$VERSION_NUMBER" >> "$GITHUB_OUTPUT" + echo "version-name=$VERSION_NAME" >> "$GITHUB_OUTPUT" - - name: Update Version Number + - name: Update Package Version shell: bash env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} + VERSION_NAME: ${{ steps.get-version.outputs.version-name }} 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' \ @@ -136,5 +139,4 @@ jobs: - name: Tag & Commit Changes uses: "stefanzweifel/git-auto-commit-action@v6" with: - commit_message: "Packaged new ${{ inputs.package }} version v${{ steps.get-version.outputs.version-number }}" - tagging_message: "v${{ steps.get-version.outputs.version-number }}" + commit_message: "Packaged new ${{ inputs.package }} version v${{ steps.get-version.outputs.version-name }}" diff --git a/sfdx-project.json b/sfdx-project.json index a0ac4116..13bd7f5f 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -3,7 +3,7 @@ { "path": "force-app", "default": true, - "versionName": "v3.0.0.NEXT", + "versionName": "v3.0.0", "versionNumber": "3.0.0.NEXT" } ], From 5addd9979a5e3f387c5e086a5df58d3048e7b749 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:27:58 -0500 Subject: [PATCH 28/37] resetting package versions --- packages/managed/sfdx-project.json | 2 +- packages/unlocked/sfdx-project.json | 5 ++--- sfdx-project.json | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/managed/sfdx-project.json b/packages/managed/sfdx-project.json index 3da5f9eb..3b3f72e1 100644 --- a/packages/managed/sfdx-project.json +++ b/packages/managed/sfdx-project.json @@ -2,7 +2,7 @@ "packageDirectories": [ { "versionName": "v3.0.0", - "versionNumber": "3.0.0.NEXT", + "versionNumber": "2.5.1.NEXT", "path": "force-app", "default": true, "package": "Apex Database Layer (Managed)", diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index 348257d5..da83e976 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -5,7 +5,7 @@ "default": true, "package": "apex-database-layer-unlocked", "versionName": "v3.0.0.NEXT", - "versionNumber": "3.0.0.NEXT", + "versionNumber": "2.5.1.NEXT", "versionDescription": "Removing deprecated methods, introducing managed package" } ], @@ -29,7 +29,6 @@ "apex-database-layer-unlocked@2.4.3-1": "04tDn0000011ORgIAM", "apex-database-layer-unlocked@2.4.4-1": "04tDn0000011ORvIAM", "apex-database-layer-unlocked@2.5.0-2": "04tDn0000011OS5IAM", - "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2", - "apex-database-layer-unlocked@3.0.0-2": "04tDn0000011OSeIAM" + "apex-database-layer-unlocked@2.5.1-1": "04tDn0000011OSAIA2" } } diff --git a/sfdx-project.json b/sfdx-project.json index 13bd7f5f..81e478e4 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -4,7 +4,7 @@ "path": "force-app", "default": true, "versionName": "v3.0.0", - "versionNumber": "3.0.0.NEXT" + "versionNumber": "2.5.1.NEXT" } ], "name": "apex-database-layer", From a59e09d64e7f5e21304ae988fe879a04fee0d8cf Mon Sep 17 00:00:00 2001 From: jasonsiders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 13:31:07 +0000 Subject: [PATCH 29/37] Packaged new unlocked version vv2.5.2 --- packages/unlocked/sfdx-project.json | 4 ++-- sfdx-project.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index da83e976..2b99fda0 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -4,8 +4,8 @@ "path": "force-app", "default": true, "package": "apex-database-layer-unlocked", - "versionName": "v3.0.0.NEXT", - "versionNumber": "2.5.1.NEXT", + "versionName": "v2.5.2", + "versionNumber": "2.5.2.NEXT", "versionDescription": "Removing deprecated methods, introducing managed package" } ], diff --git a/sfdx-project.json b/sfdx-project.json index 81e478e4..6876840c 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -3,8 +3,8 @@ { "path": "force-app", "default": true, - "versionName": "v3.0.0", - "versionNumber": "2.5.1.NEXT" + "versionName": "v2.5.2", + "versionNumber": "2.5.2.NEXT" } ], "name": "apex-database-layer", From b29f2f0ea1ecea00140437801a5114f9d3598cdd Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:32:37 -0500 Subject: [PATCH 30/37] fixing commit message --- .github/workflows/packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index e471d8fd..d4230cd3 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -139,4 +139,4 @@ jobs: - name: Tag & Commit Changes uses: "stefanzweifel/git-auto-commit-action@v6" with: - commit_message: "Packaged new ${{ inputs.package }} version v${{ steps.get-version.outputs.version-name }}" + commit_message: "Packaged new ${{ inputs.package }} version ${{ steps.get-version.outputs.version-name }}" From 5c7e9901f1c2018706363f1ed6b30e6bef0cda73 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:38:46 -0500 Subject: [PATCH 31/37] removing temporary skip --- .github/workflows/packaging.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index d4230cd3..b2ab3e2c 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -104,9 +104,7 @@ jobs: --username "$USERNAME" trap 'rm -f server.key' EXIT - # TODO: Remove this if statement when the limit is lifted - name: Create New Package Version - if: ${{ false }} env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} shell: bash From 49a92768c3d06a38144d2b8d924c031e562d7352 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:39:01 -0500 Subject: [PATCH 32/37] adding timeout-minutes --- .github/workflows/packaging.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index b2ab3e2c..033ff6e2 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -28,6 +28,7 @@ jobs: permissions: contents: write runs-on: ubuntu-latest + timeout-minutes: 30 steps: - name: Checkout uses: actions/checkout@v4 From 211587435b104b5e4755a6b8f1bf46dc0808f6fb Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:00:53 -0500 Subject: [PATCH 33/37] creating release action --- .github/workflows/packaging.yml | 23 +++++- .github/workflows/release.yml | 128 ++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 033ff6e2..7b4f37e3 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -29,6 +29,8 @@ jobs: contents: write runs-on: ubuntu-latest timeout-minutes: 30 + outputs: + version-id: ${{ steps.create-package.outputs.version-id }} steps: - name: Checkout uses: actions/checkout@v4 @@ -37,7 +39,7 @@ jobs: uses: actions/setup-node@v4 with: node-version: lts/* - cache: 'npm' + cache: "npm" - name: Setup NPM shell: bash @@ -106,19 +108,32 @@ jobs: trap 'rm -f server.key' EXIT - name: Create New Package Version + id: create-package env: VERSION_NUMBER: ${{ steps.get-version.outputs.version-number }} + WIKI_URL: "https://github.com/jasonsiders/apex-database-layer/wiki" 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 \ + # Create package version and capture JSON output + RESULT=$(sf package version create \ --code-coverage \ --installation-key-bypass \ + --json \ --package "$PACKAGE_ALIAS" \ - --version-number "$VERSION_NUMBER" \ - --wait 29 + --post-install-url "$WIKI_URL" \ + --wait 29) + echo "$RESULT" + # Extract SubscriberPackageVersionId from JSON response + VERSION_ID=$(echo "$RESULT" | jq -r '.result.SubscriberPackageVersionId') + echo "Package Version ID: $VERSION_ID" + echo "version-id=$VERSION_ID" >> "$GITHUB_OUTPUT" + if [[ -z "$VERSION_ID" || "$VERSION_ID" == "null" ]]; then + echo "ERROR: Missing Package Version ID" + exit 1 + fi - name: Run Prettier shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..9eb19cfd --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,128 @@ +name: Release New Version + +on: + push: + branches: + - main + paths: + - force-app + workflow_dispatch: + +concurrency: + # Queue releases to prevent version collisions - don't cancel, let them run sequentially + group: release-${{ github.repository }} + cancel-in-progress: false + +jobs: + versioning: + name: Versioning + outputs: + version-number: ${{ steps.determine-version.outputs.version-number }} + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Did sfdx-project.json Change? + id: check-changes + run: | + # Check if sfdx-project.json was modified in the latest commit + if git diff --name-only HEAD~1 HEAD | grep -q "^sfdx-project.json$"; then + echo "sfdx-project.json was modified" + echo "changed=true" >> "$GITHUB_OUTPUT" + else + echo "sfdx-project.json was not modified" + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + + - name: Determine Version + id: determine-version + run: | + # Get current version from sfdx-project.json (without .NEXT) + CURRENT_VERSION=$(jq -r '.packageDirectories[] | select(.default == true) | .versionNumber' sfdx-project.json | sed 's/\.NEXT$//') + echo "Current version: $CURRENT_VERSION" + if [[ "${{ steps.check-changes.outputs.changed }}" == "false" ]]; then + # Increment patch version (e.g., 2.5.1 -> 2.5.2) + IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" + MAJOR=${VERSION_PARTS[0]} + MINOR=${VERSION_PARTS[1]} + PATCH=${VERSION_PARTS[2]} + NEW_PATCH=$((PATCH + 1)) + NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH" + echo "Auto-incremented version to: $NEW_VERSION" + else + # Use current version as-is + NEW_VERSION="$CURRENT_VERSION" + echo "Using current version: $NEW_VERSION" + fi + echo "version-number=$NEW_VERSION" >> "$GITHUB_OUTPUT" + + create-managed-package-version: + name: Create Managed Package Version + needs: versioning + uses: ./.github/workflows/packaging.yml + secrets: inherit + with: + package: managed + version: ${{ needs.versioning.outputs.version-number }} + + create-unlocked-package-version: + name: Create Unlocked Package Version + needs: versioning + uses: ./.github/workflows/packaging.yml + secrets: inherit + with: + package: unlocked + version: ${{ needs.versioning.outputs.version-number }} + + create-release: + name: Create Release + needs: [versioning, create-managed-package-version, create-unlocked-package-version] + permissions: + contents: write + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Draft Release Body + id: release-body + run: | + VERSION="${{ needs.versioning.outputs.version-number }}" + MANAGED_ID="${{ needs.create-managed-package-version.outputs.version-id }}" + UNLOCKED_ID="${{ needs.create-unlocked-package-version.outputs.version-id }}" + # Start building release body + { + echo "## Installation" + echo "" + echo "### Managed Package" + echo "**Package Version**: \`$MANAGED_ID\`" + echo "\`\`\`bash" + echo "sf package install --package $MANAGED_ID --wait 20" + echo "\`\`\`" + echo "" + echo "### Unlocked Package" + echo "**Package Version**: \`$UNLOCKED_ID\`" + echo "\`\`\`bash" + echo "sf package install --package $UNLOCKED_ID --wait 20" + echo "\`\`\`" + echo "" + } > release_body.md + + # Set as output for next step + { + echo 'body<> "$GITHUB_OUTPUT" + + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v2.3.2 + with: + body: ${{ steps.release-body.outputs.body }} + generate_release_notes: true + make_latest: true + tag_name: v${{ needs.versioning.outputs.version-number }} + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 7da4a69036e1eb035ea36e4d223c7412ad2dcfc5 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:27:14 -0500 Subject: [PATCH 34/37] solidifying release action --- .github/workflows/packaging.yml | 10 ++++++---- .github/workflows/release.yml | 21 ++++++++++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 7b4f37e3..39e8faad 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -5,7 +5,7 @@ on: inputs: package: description: Package Directory ("managed" or "unlocked") - default: "unlocked" + default: unlocked required: false type: string version: @@ -16,21 +16,23 @@ on: inputs: package: description: Package Directory ("managed" or "unlocked") - default: "unlocked" + default: unlocked required: false + type: string version: description: Version Number (#.#.#) required: false + type: string jobs: create-package-version: name: Create Package Version + outputs: + version-id: ${{ steps.create-package.outputs.version-id }} permissions: contents: write runs-on: ubuntu-latest timeout-minutes: 30 - outputs: - version-id: ${{ steps.create-package.outputs.version-id }} steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9eb19cfd..43bc628d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,6 +7,11 @@ on: paths: - force-app workflow_dispatch: + inputs: + version: + description: Version Number (#.#.#) + required: false + type: string concurrency: # Queue releases to prevent version collisions - don't cancel, let them run sequentially @@ -27,6 +32,7 @@ jobs: fetch-depth: 2 - name: Did sfdx-project.json Change? + if: ${{ github.event_name == 'push' }} id: check-changes run: | # Check if sfdx-project.json was modified in the latest commit @@ -41,11 +47,11 @@ jobs: - name: Determine Version id: determine-version run: | - # Get current version from sfdx-project.json (without .NEXT) + # Get current version from sfdx-project.json: CURRENT_VERSION=$(jq -r '.packageDirectories[] | select(.default == true) | .versionNumber' sfdx-project.json | sed 's/\.NEXT$//') echo "Current version: $CURRENT_VERSION" - if [[ "${{ steps.check-changes.outputs.changed }}" == "false" ]]; then - # Increment patch version (e.g., 2.5.1 -> 2.5.2) + if [[ "${{ github.event_name }}" == "push" && "${{ steps.check-changes.outputs.changed }}" == "false" ]]; then + # 1. On push AND sfdx-project.json was NOT updated - increment the version IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" MAJOR=${VERSION_PARTS[0]} MINOR=${VERSION_PARTS[1]} @@ -53,8 +59,12 @@ jobs: NEW_PATCH=$((PATCH + 1)) NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH" echo "Auto-incremented version to: $NEW_VERSION" + elif [[ "${{ github.event_name }}" == "workflow_dispatch" && -n "${{ inputs.version }}" ]]; then + # 2. On workflow dispatch & a version input is provided - use the version input + NEW_VERSION="${{ inputs.version }}" + echo "Using input version: $NEW_VERSION" else - # Use current version as-is + # 3. Else - use the existing version number NEW_VERSION="$CURRENT_VERSION" echo "Using current version: $NEW_VERSION" fi @@ -71,7 +81,7 @@ jobs: create-unlocked-package-version: name: Create Unlocked Package Version - needs: versioning + needs: [versioning, create-managed-package-version] uses: ./.github/workflows/packaging.yml secrets: inherit with: @@ -81,6 +91,7 @@ jobs: create-release: name: Create Release needs: [versioning, create-managed-package-version, create-unlocked-package-version] + if: ${{ success() && needs.create-managed-package-version.outputs.version-id != '' && needs.create-unlocked-package-version.outputs.version-id != '' }} permissions: contents: write runs-on: ubuntu-latest From 3cddc1e8bdbe84e15a274cce3769c860c12b7804 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:33:42 -0500 Subject: [PATCH 35/37] cleanup --- .github/workflows/packaging.yml | 4 ++++ .github/workflows/release.yml | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 39e8faad..6bf9dc6d 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -12,6 +12,10 @@ on: description: Version Number (#.#.#) required: false type: string + outputs: + version-id: + description: "Package Version ID" + value: ${{ jobs.create-package-version.outputs.version-id }} workflow_dispatch: inputs: package: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43bc628d..f671a3f8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,6 +70,15 @@ jobs: fi echo "version-number=$NEW_VERSION" >> "$GITHUB_OUTPUT" + - name: Validate Package Version + env: + VERSION: ${{ steps.determine-version.outputs.version-number }} + run: | + if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "ERROR: Version '$VERSION' is not valid semver format. Expected 'MAJOR.MINOR.PATCH'" + exit 1 + fi + create-managed-package-version: name: Create Managed Package Version needs: versioning From 090eae53028a1050db578fdebf095680c4071fb2 Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:36:36 -0500 Subject: [PATCH 36/37] cleaning up project files --- packages/managed/sfdx-project.json | 10 +++++----- packages/unlocked/sfdx-project.json | 8 ++++---- sfdx-project.json | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/managed/sfdx-project.json b/packages/managed/sfdx-project.json index 3b3f72e1..92eff622 100644 --- a/packages/managed/sfdx-project.json +++ b/packages/managed/sfdx-project.json @@ -1,12 +1,12 @@ { "packageDirectories": [ { - "versionName": "v3.0.0", - "versionNumber": "2.5.1.NEXT", "path": "force-app", "default": true, - "package": "Apex Database Layer (Managed)", - "versionDescription": "A slim, extensible DML & SOQL Mocking Library." + "package": "apex-database-layer-managed", + "versionName": "v3.0.0", + "versionNumber": "3.0.0.NEXT", + "versionDescription": "Introducing managed package" } ], "name": "Apex Database Layer (Managed)", @@ -14,6 +14,6 @@ "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "64.0", "packageAliases": { - "Apex Database Layer (Managed)": "0HoDn0000010wCnKAI" + "apex-database-layer-managed": "0HoDn0000010wCnKAI" } } diff --git a/packages/unlocked/sfdx-project.json b/packages/unlocked/sfdx-project.json index 2b99fda0..4d86dd29 100644 --- a/packages/unlocked/sfdx-project.json +++ b/packages/unlocked/sfdx-project.json @@ -4,12 +4,12 @@ "path": "force-app", "default": true, "package": "apex-database-layer-unlocked", - "versionName": "v2.5.2", - "versionNumber": "2.5.2.NEXT", - "versionDescription": "Removing deprecated methods, introducing managed package" + "versionName": "v3.0.0", + "versionNumber": "3.0.0.NEXT", + "versionDescription": "Introducing managed package" } ], - "name": "apex-database-layer-unlocked", + "name": "Apex Database Layer (Unlocked)", "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "64.0", diff --git a/sfdx-project.json b/sfdx-project.json index 6876840c..13bd7f5f 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -3,8 +3,8 @@ { "path": "force-app", "default": true, - "versionName": "v2.5.2", - "versionNumber": "2.5.2.NEXT" + "versionName": "v3.0.0", + "versionNumber": "3.0.0.NEXT" } ], "name": "apex-database-layer", From ddfcb1fa9d0b978c7ecf17dfc810b3a080b8710b Mon Sep 17 00:00:00 2001 From: Jason Siders <41714875+jasonsiders@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:50:21 -0500 Subject: [PATCH 37/37] adding input validation --- .github/workflows/packaging.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index 6bf9dc6d..101607a6 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -57,6 +57,11 @@ jobs: - name: Switch Package Context shell: bash run: | + # Validate package directory and sfdx-project.json file exist + if [[ ! -f "packages/${{ inputs.package }}/sfdx-project.json" ]]; then + echo "ERROR: 'packages/${{ inputs.package }}/sfdx-project.json' not found" + exit 1 + fi # Swap the sfdx-project.json file for the one listed in the package directory mkdir -p tmp mv sfdx-project.json tmp/