# update-tags-action
**Easily create/update one or more Git tags in a GitHub repository.**
[](https://github.com/jimeh/update-tags-action/releases)
[](https://github.com/jimeh/update-tags-action/issues)
[](https://github.com/jimeh/update-tags-action/pulls)
[](https://github.com/jimeh/update-tags-action/blob/main/LICENSE)
Generally useful for moving major (`v1`) and minor (`v1.2`) tags to same commit
as the latest `v1.x.x` tag.
This action
[uses itself](https://github.com/jimeh/update-tags-action/blob/main/.github/workflows/ci.yml)
to move its own major and minor tags.
## Examples
### Basic
```yaml
- uses: jimeh/update-tags-action@v2
with:
tags: v2,v2.2
```
```yaml
- uses: jimeh/update-tags-action@v2
with:
tags: |
v2
v2.2
```
### With Release Please
This example uses
[jimeh/release-please-manifest-action](https://github.com/jimeh/release-please-manifest-action),
but you can just as easily use the official
[google-github-actions/release-please-action](https://github.com/google-github-actions/release-please-action)
instead.
First you'll want the workflow setup to run on push:
```yaml
on: [push]
```
Then you'll want a release-please job which only runs on pushes to your `main`
branch, and exposes relevant outputs from release please:
```yaml
jobs:
# [...]
release-please:
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/main' }}
outputs:
release_created: ${{ steps.release-please.outputs.release_created }}
major: ${{ steps.release-please.outputs.major }}
minor: ${{ steps.release-please.outputs.minor }}
permissions:
contents: write
issues: write
pull-requests: write
steps:
- uses: jimeh/release-please-manifest-action@v3
id: release-please
```
And finally a job to create MAJOR and MINOR release tags, which only runs when
release-please reports having created a release:
```yaml
jobs:
# [...]
release-tags:
runs-on: ubuntu-latest
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
permissions:
contents: write
steps:
- uses: jimeh/update-tags-action@v2
with:
tags: |
v${{ needs.release-please.outputs.major }}
v${{ needs.release-please.outputs.major }}.${{ needs.release-please.outputs.minor }}
```
## Inputs
| name | description | required | default |
| -------------- | --------------------------------------------------------------------------------------------------------------------- | -------- | --------------------- |
| `tags` | List/CSV of tags to create/update.
| `true` | `""` |
| `ref` | The SHA or ref to tag. Defaults to SHA of current commit.
| `false` | `${{ github.sha }}` |
| `when_exists` | What to do if the tag already exists. Must be one of 'update', 'skip', or 'fail'.
| `false` | `update` |
| `annotation` | Optional annotation message for tags. If provided, creates annotated tags. If empty, creates lightweight tags.
| `false` | `""` |
| `github_token` | The GitHub token to use for authentication.
| `false` | `${{ github.token }}` |
## Outputs
| name | description |
| --------- | ---------------------------------------------- |
| `tags` | List of tags that were created/updated.
|
| `created` | List of tags that were created.
|
| `updated` | List of tags that were updated.
|
| `skipped` | List of tags that were skipped.
|
## Runs
This action is a `node24` action.
## License
[MIT](https://github.com/jimeh/update-tags-action/blob/main/LICENSE)