Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Adding Release Automation #1122

Merged
merged 12 commits into from
Feb 2, 2023
35 changes: 35 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,38 @@ jobs:

- name: Show Cache
run: du -h ${{ github.workspace }}/.cache/* || true

release-pr:
runs-on: ubuntu-latest
needs: [test]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this only needs to run on push after the tests have succeeded. Creates a release-pr based on conventional-commits commit strategy (which we already follow)

This defines what a release PR is: https://github.com/google-github-actions/release-please-action#whats-a-release-pr

steps:
- uses: google-github-actions/release-please-action@v3
with:
release-type: node
package-name: ipfs-companion
changelog-notes-type: github
command: release-pr
Comment on lines +103 to +106
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • auto-increments the computed semver
  • names the package
  • creates changelog
  • only creates the release PR

This PR can stay around for as long as it's needed, as soon as that gets merged it pushes the release tags.


release-assets:
runs-on: ubuntu-latest
needs: [test]
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
lidel marked this conversation as resolved.
Show resolved Hide resolved
steps:
- uses: actions/checkout@v2

- uses: actions/download-artifact@v3
with:
name: built-on-ubuntu-latest
path: ~/Downloads/

- name: Release
uses: softprops/action-gh-release@v1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ @whizzzkid any reason why we are not reusing google-github-actions/release-please-action here with command set to github-release?

Not a blocker, but softprops/action-gh-release being a personal account of an individual has a higher risk of being compromised, and that could inject code that would ship to our users.

If we have to use it, please pin it to a specific revision before merging this PR:

Suggested change
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844

For future reference, remember to add to the safelist at https://github.com/ipfs/ipfs-companion/settings/actions:

2023-01-31-231838_819x604_scrot

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the callout on adding specific version and whitelisting this.

Not a blocker, but softprops/action-gh-release being a personal account of an individual has a higher risk of being compromised, and that could inject code that would ship to our users.

google-github-actions/release-please-action doesn't seem to have documentation on creating a draft release. It just pushes the release (that's what i tested on other repo).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like https://github.com/google-github-actions/release-please-action/pull/398/files seems to suggest there is draft: boolean but it does not support uploading files, which we want, I'll try creating documentation for them.

if: startsWith(github.ref, 'refs/tags/')
with:
files: ~/Downloads/*.zip
fail_on_unmatched_files: true
generate_release_notes: true
draft: true
append_body: true
body: 'Automated Release, please upload artifacts to respective webstores and mark this draft as released.'