name: Release on: push: branches: - main # or whatever branch you want to use jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Check for changes in package.json run: | git diff --cached --diff-filter=d package.json || { echo "No changes to package.json" exit 1 } - name: Get version number from package.json id: get_version run: | VERSION=$(jq -r '.version' package.json) echo "::set-output name=version::$VERSION" - name: Create GitHub release uses: actions/github-script@v5 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const release = await github.rest.repos.createRelease({ owner: context.repo.owner, repo: context.repo.repo, tag_name: `v${{ steps.get_version.outputs.version }}`, name: `v${{ steps.get_version.outputs.version }}`, body: 'Automatically created new release', }) console.log(`Created release ${release.data.html_url}`) - name: Upload package to GitHub release uses: actions/upload-artifact@v3 with: name: package path: . env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}