diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..0a7922e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,64 @@ +name: Tag, Release, & Publish + +on: + push: + branches: + - master + +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + steps: + # Checkout updated source code + - uses: actions/checkout@v2 + + # If the version has changed, create a new git tag for it. + - name: Tag + id: autotagger + uses: butlerlogic/action-autotag@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # The remaining steps all depend on whether or not + # a new tag was created. There is no need to release/publish + # updates until the code base is in a releaseable state. + + # If the new version/tag is a pre-release (i.e. 1.0.0-beta.1), create + # an environment variable indicating it is a prerelease. + - name: Pre-release + if: steps.autotagger.outputs.tagname != '' + run: | + if [[ "${{ steps.autotagger.output.version }}" == *"-"* ]]; then echo "::set-env IS_PRERELEASE=true";else echo "::set-env IS_PRERELEASE=''";fi + + # Create a github release + # This will create a snapshot of the module, + # available in the "Releases" section on Github. + - name: Release + id: create_release + if: steps.autotagger.outputs.tagname != '' + uses: actions/create-release@v1.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.autotagger.outputs.tagname }} + release_name: ${{ steps.autotagger.outputs.tagname }} + body: ${{ steps.autotagger.outputs.tagmessage }} + draft: false + prerelease: env.IS_PRERELEASE != '' + + # Use this action to publish a single module to npm. + - name: Publish + id: publish_npm + if: steps.autotagger.outputs.tagname != '' + uses: author/action-publish@master + env: + REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} + + - name: Rollback Release + if: failure() && steps.create_release.outputs.id != '' + uses: author/action-rollback@stable + with: + tag: ${{ steps.autotagger.outputs.tagname }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7c35cf8..a18e71c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules .* !.gitignore !.npmignore +!.github