diff --git a/.github/workflows/create-github-release.yml b/.github/workflows/create-github-release.yml new file mode 100644 index 0000000..d739fdc --- /dev/null +++ b/.github/workflows/create-github-release.yml @@ -0,0 +1,27 @@ +name: create-github-release + +on: + push: + branches: + - main + - prerelease/** + tags-ignore: + - "*" + workflow_dispatch: + inputs: + prerelease: + type: string + description: "Name to use for the prerelease: beta, dev, etc. NOTE: If this is already set in the package.json, it does not need to be passed in here." + +jobs: + release: + uses: salesforcecli/github-workflows/.github/workflows/create-github-release.yml@main + secrets: + SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + with: + prerelease: ${{ inputs.prerelease }} + # If this is a push event, we want to skip the release if there are no semantic commits + # However, if this is a manual release (workflow_dispatch), then we want to disable skip-on-empty + # This helps recover from forgetting to add semantic commits ('fix:', 'feat:', etc.) + skip-on-empty: ${{ github.event_name == 'push' }} + generate-readme: false diff --git a/.github/workflows/failureNotifications.yml b/.github/workflows/failureNotifications.yml index 9243031..319ed49 100644 --- a/.github/workflows/failureNotifications.yml +++ b/.github/workflows/failureNotifications.yml @@ -1,13 +1,11 @@ name: failureNotifications - on: workflow_run: workflows: - - version, tag and github release - publish + - create-github-release types: - completed - jobs: failure-notify: runs-on: ubuntu-latest diff --git a/.github/workflows/manualRelease.yml b/.github/workflows/manualRelease.yml deleted file mode 100644 index 8d8f05c..0000000 --- a/.github/workflows/manualRelease.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: manual release - -on: - workflow_dispatch: - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - - name: Conventional Changelog Action - id: changelog - uses: TriPSs/conventional-changelog-action@d360fad3a42feca6462f72c97c165d60a02d4bf2 - # overriding some of the basic behaviors to just get the changelog - with: - git-user-name: svc-cli-bot - git-user-email: svc_cli_bot@salesforce.com - github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - output-file: false - # always do the release, even if there are no semantic commits - skip-on-empty: false - tag-prefix: '' - - uses: notiz-dev/github-action-json-property@7a701887f4b568b23eb7b78bb0fc49aaeb1b68d3 - id: packageVersion - with: - path: 'package.json' - prop_path: 'version' - - name: Create Github Release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - with: - tag_name: ${{ steps.packageVersion.outputs.prop }} - release_name: ${{ steps.packageVersion.outputs.prop }} diff --git a/.github/workflows/onPushToMain.yml b/.github/workflows/onPushToMain.yml deleted file mode 100644 index 61eda8a..0000000 --- a/.github/workflows/onPushToMain.yml +++ /dev/null @@ -1,18 +0,0 @@ -# test -name: version, tag and github release - -on: - push: - branches: [main] - -jobs: - release: - uses: oclif/github-workflows/.github/workflows/githubRelease.yml@main - secrets: inherit - - # most repos won't use this - # depends on previous job to avoid git collisions, not for any functionality reason - # docs: - # uses: salesforcecli/github-workflows/.github/workflows/publishTypedoc.yml@main - # secrets: inherit - # needs: release diff --git a/.github/workflows/onRelease.yml b/.github/workflows/onRelease.yml index 8876db4..3c56eeb 100644 --- a/.github/workflows/onRelease.yml +++ b/.github/workflows/onRelease.yml @@ -1,19 +1,32 @@ name: publish - on: release: - types: [released] + # both release and prereleases + types: [published] # support manual release in case something goes wrong and needs to be repeated or tested workflow_dispatch: inputs: tag: - description: tag that needs to publish + description: github tag that needs to publish type: string required: true jobs: + # parses the package.json version and detects prerelease tag (ex: beta from 4.4.4-beta.0) + getDistTag: + outputs: + tag: ${{ steps.distTag.outputs.tag }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.release.tag_name || inputs.tag }} + - uses: salesforcecli/github-workflows/.github/actions/getPreReleaseTag@main + id: distTag npm: - uses: oclif/github-workflows/.github/workflows/npmPublish.yml@main + uses: salesforcecli/github-workflows/.github/workflows/npmPublish.yml@main + needs: [getDistTag] with: - tag: latest + tag: ${{ needs.getDistTag.outputs.tag || 'latest' }} githubTag: ${{ github.event.release.tag_name || inputs.tag }} - secrets: inherit + secrets: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }}