Skip to content

feat: add GitHub action outputs #401

Description

@jkowalleck

Description

Current GitHub action has some inputs, then it does something, but it has not usable outputs to check what the results were.
As a user of the GitHub action, i want several outputs, so that i can use them programmatically in GitHub workflows.

  • released: bool(-ish) value that indicates whether a released happened
  • version: (new) semantic version that was calculated. if released was false than this would be the current version detected.
  • tag: VCS tag-name was used for the release. if released was false than this would be empty string.
  • url: Github.com URL for the release. if released is false, then this value is empty string
  • id: Release ID. if released is false, then this value is null
  • assets: JSON array containing information about each uploaded asset, in the format given here (minus the uploader field). if released is false, then this value is an empty JSON list
  • assets-dist: JSON object containing information about each uploaded dist asset, in the format given here (minus the uploader field). if released is false, then this value is an empty JSON object
  • upload_url: URL for uploading assets to the release. if released is false, then this value is an empty string

output inspired by https://github.com/softprops/action-gh-release

Use cases

  • released: python-semantic-release GitHub action might detect that no release should happen. To indicate this, you can check this value. As an example, you can use ${{ steps.<step-id>.outputs.released }} to check if a release happened and control other steps based on that information. For example, a DockerHub release can be skipped, if python-semantic-release did not happen, although the GitHub action ended with success() state.
  • version: As an example, you can use ${{ steps.<step-id>.outputs.version }} to get the version that was currently detected/used for the release.
  • tag: As an example, you can use ${{ steps.<step-id>.outputs.tag }} as an input for https://github.com/marketplace/actions/upload-files-to-a-github-release
  • assets: As an example, you can use ${{ fromJSON(steps.<step-id>.outputs.assets-dist)[0].browser_download_url }} to get the download URL of the first asset. This file can then be downloaded and put in a docker image.
  • asset-dist: As an example, you can use ${{ fromJSON(steps.<step-id>.outputs.assets-dist).wheel.browser_download_url }} to get the download URL of the wheel-dist asset. This file can then be downloaded and put in a docker image.
  • upload_url: As an example, you can use ${{ steps.<step-id>.outputs.upload_url }} as an input for https://github.com/actions/upload-release-asset

Possible implementation

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    confirmedPrevent from becoming stalefeatureA new feature or a feature requestgood first issuea good start point for new contributorsneeds-updateNeeds status update from maintainers

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions