Skip to content

Missing support for Immutable releases #151

@MiliDurasovic

Description

@MiliDurasovic

Describe the bug

Github has introduced "Immutable releases" and this new logic is not implemented yet in this resource.
I ran into it on Github Enterprise Cloud, but I imagine this will affect all future Github releases.

After creation of a release, during upload of assets you get a cryptic timeout error:

error running command: Get "https://REDACTED/repos/Owner/Repo/releases/4725437/assets?per_page=100": read tcp 10.80.0.38:41666->20.240.211.209:443: read: connection timed out

Because I was not able to find the root cause, I rebuilt the logic with curl and ran again into a similar error.

curl: (22) The requested URL returned error: 422
curl: (28) Operation timed out after 900000 milliseconds with 0 bytes received

Observing the logs I saw:

{"message":"Cannot upload assets to an immutable release.","request_id":"xxx","documentation_url":"https://docs.github.com/rest"}

If I see it correctly, the only possibility to create releases with github-release-resource, if immutable releases are enforced, is to create the release as draft with the resource and then to publish the release via seperate API request afterwards.

It is not possible to publish an already existing draft release with this resource.
According to official Github Docs, this is now best practice:

  • Best practices for publishing immutable releases
    • We recommend you use the following workflow for publishing an immutable release.
      • Create the release as a draft.
      • Attach all associated assets to the draft release.
      • Publish the draft release.

Sources:

Setting in question:
Image

Reproduction steps

  1. Try to create a non-draft release and upload an asset to a repo where the setting "Enable release immutability" is enabled.

...

Expected behavior

Either there should be an argument like "immutable" for example, which leads github-release-resource to automatically create the release as draft, upload assets and then publish it.
Or adding the possibility extract existing release id and publish them after draft release creation.

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Icebox

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions