Skip to content

Allow enums in complex arguments (#34) (#35) #12

Allow enums in complex arguments (#34) (#35)

Allow enums in complex arguments (#34) (#35) #12

name: Release Package
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'src/**'
env:
SFDX_CLI_URL: https://developer.salesforce.com/media/salesforce-cli/sfdx/channels/stable/sfdx-linux-x64.tar.xz
DEVHUB_ALIAS: devhub
jobs:
packaging:
name: 'Create and release a new package version'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 'Restore node_modules cache'
id: cache-npm
uses: actions/cache@v1
with:
path: node_modules
key: npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
npm-${{ env.cache-name }}-
npm-
- name: 'Install npm dependencies'
if: steps.cache-npm.outputs.cache-hit != 'true'
run: npm i
- name: 'Install jq'
run: sudo apt update && sudo apt -y install jq
- name: 'Install Salesforce CLI'
run: |
wget ${{ env.SFDX_CLI_URL }}
mkdir ~/sfdx
tar xJf sfdx-linux-x64.tar.xz -C ~/sfdx --strip-components 1
echo "$HOME/sfdx/bin" >> $GITHUB_PATH
~/sfdx/bin/sfdx version
- name: 'Checkout source code'
uses: actions/checkout@v3
- name: 'Authenticate Dev Hub'
shell: bash
run: |
echo ${{ secrets.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt
secretFileSize=$(wc -c "./DEVHUB_SFDX_URL.txt" | awk '{print $1}')
if [ $secretFileSize == 1 ]; then
echo "Missing DEVHUB_SFDX_URL secret. Is this workflow running on a fork?";
exit 1;
fi
sfdx auth:sfdxurl:store -f ./DEVHUB_SFDX_URL.txt -a ${{ env.DEVHUB_ALIAS }} -d
- name: 'Define release version'
run: |
cat sfdx-project.json | jq '.packageDirectories[] | select(.default == true) | { name: .package, versionName: .versionName, version: .versionNumber }' > release-definition.json
echo "PACKAGE_NAME=$(cat release-definition.json | jq .name -r)" >> $GITHUB_ENV
echo "PACKAGE_RELEASE_VERSION=$(cat release-definition.json | jq .version -r)" >> $GITHUB_ENV
echo "PACKAGE_RELEASE_VERSION_SHORT=$(cat release-definition.json | jq .version -r | cut -d '.' -f 1,2)" >> $GITHUB_ENV
echo "PACKAGE_RELEASE_VERSION_NAME=$(cat release-definition.json | jq .versionName -r)" >> $GITHUB_ENV
- name: 'Create package version'
run: |
echo "Preparing release for ${{ env.PACKAGE_NAME }}@${{ env.PACKAGE_RELEASE_VERSION }}"
echo "CURRENT_PACKAGE_VERSION_ID=$(cat sfdx-project.json | jq '.packageAliases | to_entries | last.value' -r)" >> $GITHUB_ENV
sfdx package:version:create -p ${{ env.PACKAGE_NAME }} -x -w 10 -c -v ${{ env.DEVHUB_ALIAS }} --json > package-create-result.json
echo "NEW_PACKAGE_VERSION_ID=$(cat package-create-result.json | jq ".result.SubscriberPackageVersionId" -r)" >> $GITHUB_ENV
- name: 'Promote package version'
run: |
echo "Created a new package version with Id: ${{ env.NEW_PACKAGE_VERSION_ID }}"
sfdx package:version:promote -p ${{ env.NEW_PACKAGE_VERSION_ID }} -v ${{ env.DEVHUB_ALIAS }} -n
- name: 'Delete created package version'
if: ${{ (failure() || cancelled()) && env.NEW_PACKAGE_VERSION_ID != '' }}
run: sfdx package:version:delete -v ${{ env.DEVHUB_ALIAS }} -p ${{ env.NEW_PACKAGE_VERSION_ID }} -n
- name: 'Update README and Docs with the new package version Id'
run: |
sed -i 's/${{ env.CURRENT_PACKAGE_VERSION_ID }}/${{ env.NEW_PACKAGE_VERSION_ID }}/g' ./README.md
sed -i 's/Unreleased$/${{ env.PACKAGE_RELEASE_VERSION_NAME }}\n\nSFDX package name and version: ${{ env.PACKAGE_NAME }}@${{ env.PACKAGE_RELEASE_VERSION }}\nPackage Id: ${{ env.NEW_PACKAGE_VERSION_ID }}/' ./docs/CHANGELOG.md
npm run prettier -- ./README.md ./docs/CHANGELOG.md ./sfdx-project.json
- uses: stefanzweifel/git-auto-commit-action@v4
with:
file_pattern: '*.md ./docs/**.md sfdx-project.json'
commit_message: Bump to v${{ env.PACKAGE_RELEASE_VERSION }}
- name: 'Generate GitHub release contents'
run: sed -n '/^# ${{ env.PACKAGE_RELEASE_VERSION_NAME }}$/,/^# Version/ { /^# Version/d; p; }' ./docs/CHANGELOG.md > release-description.md
- name: 'Create GitHub release'
uses: actions/create-release@v1
env:
# This token is provided by Actions, you do not need to create your own token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.PACKAGE_RELEASE_VERSION_SHORT }}
release_name: ${{ env.PACKAGE_RELEASE_VERSION_NAME }}
body_path: ./release-description.md