1
0
mirror of synced 2025-12-19 18:10:59 -05:00

Immutable Releases GA docs update (#57912)

Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
This commit is contained in:
Tina Heidinger
2025-10-14 20:10:08 +02:00
committed by GitHub
parent 57eb456b39
commit 98da48c96b
10 changed files with 44 additions and 21 deletions

View File

@@ -50,7 +50,7 @@ To use a specific action version, users can configure their {% data variables.pr
### Using tags for release management ### Using tags for release management
{% ifversion immutable-releases-preview %} {% ifversion fpt or ghec %}
> [!NOTE] If you have enabled immutable releases to help prevent supply chain attacks and accidental changes to your releases, instead see [AUTOTITLE](/actions/how-tos/create-and-publish-actions/using-immutable-releases-and-tags-to-manage-your-actions-releases). > [!NOTE] If you have enabled immutable releases to help prevent supply chain attacks and accidental changes to your releases, instead see [AUTOTITLE](/actions/how-tos/create-and-publish-actions/using-immutable-releases-and-tags-to-manage-your-actions-releases).
{% endif %} {% endif %}

View File

@@ -55,7 +55,7 @@ To support the developer process in the next section, add two {% data variables.
1. Add a workflow that triggers when a commit is pushed to a feature branch or to `main` or when a pull request is created. Configure the workflow to run your unit and integration tests. For an example, see [this workflow](https://github.com/actions/javascript-action/blob/main/.github/workflows/ci.yml). 1. Add a workflow that triggers when a commit is pushed to a feature branch or to `main` or when a pull request is created. Configure the workflow to run your unit and integration tests. For an example, see [this workflow](https://github.com/actions/javascript-action/blob/main/.github/workflows/ci.yml).
1. Add a workflow that triggers when a release is published or edited. Configure the workflow to ensure semantic tags are in place. You can use an action like [JasonEtco/build-and-tag-action](https://github.com/JasonEtco/build-and-tag-action) to compile and bundle the JavaScript and metadata file and force push semantic major, minor, and patch tags. For more information about semantic tags, see [About semantic versioning](https://docs.npmjs.com/about-semantic-versioning). 1. Add a workflow that triggers when a release is published or edited. Configure the workflow to ensure semantic tags are in place. You can use an action like [JasonEtco/build-and-tag-action](https://github.com/JasonEtco/build-and-tag-action) to compile and bundle the JavaScript and metadata file and force push semantic major, minor, and patch tags. For more information about semantic tags, see [About semantic versioning](https://docs.npmjs.com/about-semantic-versioning).
{% ifversion immutable-releases-preview %} {% ifversion fpt or ghec %}
> [!NOTE] > [!NOTE]
> If you enable immutable releases for your repository, you cannot use this action to force push tags tied to releases on {% data variables.product.github %}. To learn how to manage your releases with immutable releases, see [AUTOTITLE](/actions/how-tos/create-and-publish-actions/using-immutable-releases-and-tags-to-manage-your-actions-releases). > If you enable immutable releases for your repository, you cannot use this action to force push tags tied to releases on {% data variables.product.github %}. To learn how to manage your releases with immutable releases, see [AUTOTITLE](/actions/how-tos/create-and-publish-actions/using-immutable-releases-and-tags-to-manage-your-actions-releases).
{% endif %} {% endif %}

View File

@@ -3,7 +3,8 @@ title: Using immutable releases and tags to manage your action's releases
shortTitle: Use immutable releases shortTitle: Use immutable releases
intro: 'Learn how you can use a combination of immutable releases on {% data variables.product.github %} and Git tags to manage your action''s releases.' intro: 'Learn how you can use a combination of immutable releases on {% data variables.product.github %} and Git tags to manage your action''s releases.'
versions: versions:
feature: immutable-releases-preview fpt: '*'
ghec: '*'
topics: topics:
- Actions - Actions
- Code Security - Code Security
@@ -11,8 +12,6 @@ topics:
- Dependencies - Dependencies
--- ---
{% data reusables.releases.immutable-releases-preview-note %}
If you enable immutable releases on your action's repository, you can manage your action's releases as follows: If you enable immutable releases on your action's repository, you can manage your action's releases as follows:
1. To start the release cycle, develop and validate a potential release for your action on a release branch. 1. To start the release cycle, develop and validate a potential release for your action on a release branch.

View File

@@ -59,7 +59,7 @@ How exactly you sign your build will depend on what sort of code you're writing,
For more information, see [AUTOTITLE](/actions/security-guides/encrypted-secrets){% ifversion fpt or ghec %}, [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect),{% endif %} and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners). For more information, see [AUTOTITLE](/actions/security-guides/encrypted-secrets){% ifversion fpt or ghec %}, [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect),{% endif %} and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
{% ifversion immutable-releases-preview %} {% ifversion fpt or ghec %}
## Use immutable releases ## Use immutable releases

View File

@@ -2,7 +2,8 @@
title: Immutable releases title: Immutable releases
intro: 'Learn about immutable releases and how they can help you maintain the integrity of your software supply chain.' intro: 'Learn about immutable releases and how they can help you maintain the integrity of your software supply chain.'
versions: versions:
feature: immutable-releases-preview fpt: '*'
ghec: '*'
type: overview type: overview
topics: topics:
- Code Security - Code Security
@@ -10,16 +11,34 @@ topics:
- Dependencies - Dependencies
--- ---
{% data reusables.releases.immutable-releases-preview-note %} **Immutable releases** are releases where the assets and associated Git tag cannot be changed after publication. The use of this type of release increases security by blocking supply chain attacks. Attackers cannot:
* Inject vulnerabilities or malware into current project releases.
* Make changes to assets and tags that may break developer workflows.
**Immutable releases** are releases where the assets and associated Git tag cannot be changed after publication. They increase security by blocking: ## What immutable releases protect
* Supply chain attacks where attackers inject vulnerabilities or malware into current project releases
* Accidental changes to assets and tags that may break developer workflows When you enable immutable releases, the following protections are enforced:
* **Git tags cannot be moved or deleted**: Once an immutable release is published, its associated Git tag is locked to a specific commit and cannot be changed or removed.
* **Release assets cannot be modified or deleted**: All files attached to the release (such as binaries and archives) are protected from modification or deletion.
Additionally, creating an immutable release automatically generates a **release attestation**, which is a cryptographically verifiable record of a release containing the release tag, commit SHA, and release assets. Consumers can use this attestation to make sure the releases and artifacts they are using exactly match the published {% data variables.product.github %} releases. Additionally, creating an immutable release automatically generates a **release attestation**, which is a cryptographically verifiable record of a release containing the release tag, commit SHA, and release assets. Consumers can use this attestation to make sure the releases and artifacts they are using exactly match the published {% data variables.product.github %} releases.
> [!NOTE]
> Immutable releases include protection against repository resurrection attacks. Even if you delete a repository and create a new one with the same name, you cannot reuse tags that were associated with immutable releases in the original repository.
If a release is immutable, you will see "{% octicon "lock" aria-hidden="true" %} Immutable" below the title on the release page. If a release is immutable, you will see "{% octicon "lock" aria-hidden="true" %} Immutable" below the title on the release page.
## Best practices for publishing immutable releases
We recommend you use the following workflow for publishing an immutable release.
1. Create the release as a draft.
1. Attach all associated assets to the draft release.
1. Publish the draft release.
This ensures that all assets are in place before the release becomes immutable, preventing the need to work around immutability restrictions.
## Next steps ## Next steps
To learn how to enable immutable releases for your repository or organization, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/preventing-changes-to-your-releases). To learn how to enable immutable releases for your repository or organization, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/preventing-changes-to-your-releases).

View File

@@ -3,7 +3,8 @@ title: Preventing changes to your releases
shortTitle: Prevent release changes shortTitle: Prevent release changes
intro: 'You can enforce immutable releases for a repository or organization to prevent potential vulnerabilities.' intro: 'You can enforce immutable releases for a repository or organization to prevent potential vulnerabilities.'
versions: versions:
feature: immutable-releases-preview fpt: '*'
ghec: '*'
type: overview type: overview
topics: topics:
- Code Security - Code Security
@@ -11,8 +12,6 @@ topics:
- Dependencies - Dependencies
--- ---
{% data reusables.releases.immutable-releases-preview-note %}
## Enforcing immutable releases for your repository ## Enforcing immutable releases for your repository
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-repo %}

View File

@@ -3,7 +3,8 @@ title: Verifying the integrity of a release
shortTitle: Verify release integrity shortTitle: Verify release integrity
intro: 'You can avoid tampering and accidental changes by ensuring the releases you use have not been modified after publication.' intro: 'You can avoid tampering and accidental changes by ensuring the releases you use have not been modified after publication.'
versions: versions:
feature: immutable-releases-preview fpt: '*'
ghec: '*'
type: overview type: overview
topics: topics:
- Code Security - Code Security
@@ -12,8 +13,6 @@ topics:
defaultTool: cli defaultTool: cli
--- ---
{% data reusables.releases.immutable-releases-preview-note %}
{% cli %} {% cli %}
## Prerequisites ## Prerequisites

View File

@@ -31,6 +31,13 @@ You can choose whether {% data variables.large_files.product_name_long %} ({% da
## Creating a release ## Creating a release
{% ifversion fpt or ghec %}
> [!TIP]
> If you have enabled immutable releases for your repository, it's recommended to create releases as drafts first, attach all assets, and then publish. This ensures all assets are in place before the release becomes immutable. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases).
{% endif %}
{% webui %} {% webui %}
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-repo %}
@@ -67,9 +74,11 @@ If you @mention any {% data variables.product.github %} users in the notes, the
## Editing a release ## Editing a release
{% ifversion immutable-releases-preview %} {% ifversion fpt or ghec %}
> [!NOTE] > [!NOTE]
> If you have enabled immutable releases for your repository, you can only edit the title and release notes after a release is published. See [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases). > If you have enabled immutable releases for your repository, you can only edit the title and release notes after a release is published. See [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases).
{% endif %} {% endif %}
{% webui %} {% webui %}

View File

@@ -4,7 +4,7 @@
1. Optionally, if {% data variables.product.prodname_discussions %} is enabled for the repository, create a discussion for the release. 1. Optionally, if {% data variables.product.prodname_discussions %} is enabled for the repository, create a discussion for the release.
* Select **Create a discussion for this release**. * Select **Create a discussion for this release**.
* Select the **Category** dropdown menu, then click a category for the release discussion. * Select the **Category** dropdown menu, then click a category for the release discussion.
1. If you're ready to publicize your release, click **Publish release**. To work on the release later, click **Save draft**. 1. If you're ready to publicize your release, click **Publish release**. To work on the release later, click **Save draft**.{% ifversion fpt or ghec %} If you have enabled immutable releases for the repository, creating a draft first allows you to attach all assets before the release becomes immutable.{% endif %}
{%- ifversion fpt or ghec %} {%- ifversion fpt or ghec %}
You can then view your published or draft releases in the releases feed for your repository. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/viewing-your-repositorys-releases-and-tags). You can then view your published or draft releases in the releases feed for your repository. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/viewing-your-repositorys-releases-and-tags).

View File

@@ -1,2 +0,0 @@
> [!NOTE]
> Immutable releases are currently in {% data variables.release-phases.public_preview %} and subject to change.