Skip to content

Commit

Permalink
core: add release step in CI to push packed tarballs to GH release
Browse files Browse the repository at this point in the history
As part of #18 this is a test to try to push tarballs generated by
oclif to a Github Release.

The idea for the release process would be in two steps:

- locally on a developer machine: bump the version, commit, tag and
  publish to npm with the following command:

  ```
  npm run publish -- 2.0.1
  ```

  This will not create a github release anymore (due to the added
  `--no-release-draft` tag passed to `np`).

- once the tag is pushed, the CI kicks in with this [github action](https://github.com/softprops/action-gh-release)
  by doing the following:
  - Github draft release creation
  - Upload of standalone tarballs (generated by oclif)

- The developer can then edit the newly created draft release to
  write release notes and publish the release 🚀
  • Loading branch information
paulRbr committed May 26, 2021
1 parent fe8c7f5 commit 5e2a566
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 1 deletion.
62 changes: 62 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Release
on:
workflow_run:
workflows: [ "Developer checks" ]
types: [ completed ]
jobs:
# This 'check_tag' job is a hack because Github doesn't provide the full ref from the
# original triggered workflow. Hopefully in the future we will only have to change
# the condition of the `release` job to:
#
# ${{ github.event.workflow_run.conclusion == 'success' &&
# startsWith(github.event.workflow_run, 'refs/tag/v') }}
check_tag:
runs-on: ubuntu-latest
outputs:
run_release: ${{ steps.check-tag.outputs.run_jobs }}
tag: ${{ steps.check-tag.outputs.ref }}
steps:
- name: check reference of dependent workflow ${{ github.event.workflow_run.head_branch }}
id: check-tag
run: |
if [[ ${{ github.event.workflow_run.head_branch }} =~ v[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
echo "::set-output name=run_jobs::true"
echo "::set-output name=ref::${{ github.event.workflow_run.head_branch }}"
else
echo "::set-output name=run_jobs::false"
fi
release:
needs: [check_tag]
if: ${{ github.event.workflow_run.conclusion == 'success' && needs.check_tag.outputs.run_release == 'true' }}
runs-on: ubuntu-latest
strategy:
matrix:
node_version: [ '15' ]
steps:
- uses: actions/checkout@v2
with:
ref: ${{ needs.check_tag.outputs.tag }}
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: node-${{ matrix.node_version }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
node-${{ matrix.node_version }}-build-${{ env.cache-name }}-
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node_version }}
- run: npm ci
- run: npm run pack
- name: Release
uses: softprops/action-gh-release@v1
with:
files: dist/**/*
draft: true
tag_name: ${{ needs.check_tag.outputs.tag }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: bump-sh/cli
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"postpack": "rm -f oclif.manifest.json",
"prepack": "rm -rf lib && npm run build && oclif-dev manifest && oclif-dev readme",
"pretest": "npm run clean && npm run build && npm run lint",
"publish": "np",
"publish": "np --no-release-draft",
"test": "mocha \"test/**/*.test.ts\"",
"test-coverage": "nyc npm run test",
"test-integration": "node ./test/integration.js",
Expand Down

0 comments on commit 5e2a566

Please sign in to comment.