Skip to content
Use this GitHub Action with your project

Add this Action to an existing workflow or create a new one.

View on Marketplace
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

author/action-rollback

This action will rollback/delete a Github release. It is designed as a failsafe for workflows that do not complete, produce errors, fail to publish, or any other circumstance where removing a release is applicable.

For example, consider the lifecycle of a Javascript package being published to npm.

test-->build-->tag-->release-->publish

In the scenario where publishing fails, it may be desirable to rollback the release.

Workflow

The following is an example .github/publish.yml that will rollback a release when a publish fails.

Configuring the action is straightforward:

- name: Rollback Release
  if: failure()
  uses: author/action-rollback@stable
  with:
    # Using a known release ID
    id: ${{ steps.create_release.id }}
    # Using a tag name
    tag: 'v1.0.1'
    # Always delete the tag, even if a release is not associated with it.
    always_delete_tag: true
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

It's a bit easier to understand in context of a complete workflow:

name: Publish

on:
  push:
    branches:
      - master

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Tag
        id: autotagger
        uses: butlerlogic/action-autotag@stable
        with:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
      
      - 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: Version ${{ steps.autotagger.outputs.version }}
          body: ${{ steps.autotagger.outputs.tagmessage }}
          draft: false
          prerelease: true

      - name: Publish
        id: publish_npm
        if: steps.autotagger.outputs.tagname != ''
        uses: author/action-publish@stable
        env:
          REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}

      - name: Rollback Release
        if: failure() && steps.create_release.outputs.id != ''
        uses: author/action-rollback@stable
        with:
          # Using a known release ID
          id: ${{ steps.create_release.id }}
          # Using a tag name
          tag: ${{ steps.autotagger.outputs.tagname }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Only the id or tag need to be specified. If a publish fails, the release will be removed.

What is the purpose of delete_orphan_tag?

It's a way to clean up messy processes.

It may seem unnecessary at first. However; it is useful when a release is removed through other means, leaving an orphan tag.

Technically, this attribute could be used if you only need to rollback tags of any kind (regardless of whether a release exists).


Credits

This action was written and is primarily maintained by Corey Butler.

Our Ask...

If you use this or find value in it, please consider contributing in one or more of the following ways:

  1. Click the "Sponsor" button at the top of the page.
  2. Star it!
  3. Tweet about it!
  4. Fix an issue.
  5. Add a feature (post a proposal in an issue first!).

Copyright © 2020 Author.io, Corey Butler, and Contributors.

About

A Github action to rollback/delete a release.

Resources

License

Packages

No packages published
You can’t perform that action at this time.