Github Release
The github
release type creates a new GitHub release and uploads any artifacts produced from the configured target as release
assets.
Config
Field | Description | Type | Required | Default |
---|---|---|---|---|
name |
The name to use for the release | string | yes | N/A |
prefix |
The prefix to use for naming assets | string | yes | N/A |
token |
The GitHub token to use for creating a release | secret | yes | N/A |
How it Works
The github
release calls the configured Earthly target and expects artifacts to be generated (using SAVE ARTIFACT
).
Any number of artifacts may be generated and they do not need to be saved with a specific name.
After the target successfully completes, the release will validate that at least one artifact was produced by the target.
It is an error for the target to produce zero artifacts.
At this point, if there is no currently triggered event, the release will stop.
In the case where a release event is firing, all artifacts are archived and compressed in a .tar.gz
file.
The file name consists of the configured prefix
plus the current platform (e.g., prefix-linux-amd64.tar.gz
).
In the case where multiple platforms were specified in the target configuration, an archive is created and uploaded for each
platform.
Finally, the release uses the GitHub API (using the provided token
) to create a new release and upload the artifacts gathered in
the previous step.
The name of the release is determined by the name
field.
Authentication
The github
release needs a valid GitHub token with write permissions to the target repository.
The default CI pipeline run by Forge will ensure the generated GITHUB_TOKEN
has sufficient write permissions.
The token
field is of the secret
type and matches the format of secrets used elsewhere in blueprints.
To use the GITHUB_TOKEN
present in the current context, configure the token
field as seen below:
project: {
release: {
github: {
on: tag: {}
config: {
token: {
provider: "env"
path: "GITHUB_TOKEN"
}
}
}
}
}
Triggering
It's recommended to always use the tag
event type when configuring the release's on
field.
This is because the release expects a git tag to exist in the current context so that it can properly configure the GitHub release.
If the release fails to find a tag it will stop execution and fail.