{"id":18810328,"url":"https://github.com/absaoss/version-tag-check","last_synced_at":"2026-04-30T14:31:25.574Z","repository":{"id":259444953,"uuid":"877867493","full_name":"AbsaOSS/version-tag-check","owner":"AbsaOSS","description":"GitHub Action for validating version tag order and enforcing consistent versioning rules.","archived":false,"fork":false,"pushed_at":"2026-04-27T06:20:24.000Z","size":284,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-04-27T08:20:12.237Z","etag":null,"topics":["actions"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbsaOSS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-24T11:36:16.000Z","updated_at":"2026-04-27T06:20:27.000Z","dependencies_parsed_at":"2024-10-25T13:36:33.677Z","dependency_job_id":"afce79db-40d6-48e6-b2b5-5e0f5c63c0dd","html_url":"https://github.com/AbsaOSS/version-tag-check","commit_stats":null,"previous_names":["absaoss/version-tag-check"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/AbsaOSS/version-tag-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fversion-tag-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fversion-tag-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fversion-tag-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fversion-tag-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbsaOSS","download_url":"https://codeload.github.com/AbsaOSS/version-tag-check/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fversion-tag-check/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32468009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions"],"created_at":"2024-11-07T23:19:46.987Z","updated_at":"2026-04-30T14:31:25.569Z","avatar_url":"https://github.com/AbsaOSS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Version Tag Checker\n\n- [Motivation](#motivation)\n- [Requirements](#requirements)\n- [Inputs](#inputs)\n- [Usage](#usage)\n- [Developer Guide](#developer-guide)\n\n- [Contribution Guidelines](#contribution-guidelines)\n- [License Information](#license-information)\n- [Contact or Support Information](#contact-or-support-information)\n\nA GH action for validating version tag sequences and ensuring compliance with versioning standards in repositories.\n\n## Motivation\n\nThis action is designed to help maintainers and contributors ensure that version tags are sequenced correctly and comply with versioning standards. It can be used to prevent common issues such as:\n- Duplicate version tags on input\n- Missing version tags\n- Incorrect version sequences\n- Non-standard version formats\n\n**The action provides two possible regimes, controlled by the `should-exist` flag:**\n- If `should-exist=false` (default): the action checks that the version tag is a valid increment of the latest existing version.\n- If `should-exist=true`: the action checks that the specified tag **already exists** in the repository (and skips increment checks).\n\n## Requirements\n- **GitHub Token**: A GitHub token with permission to fetch repository data such as Issues and Pull Requests.\n- **Python 3.11+**: Ensure you have Python 3.11 installed on your system.\n\n## Inputs\n\n### `github-repository`\n- **Description**: The GitHub repository to check for version tags. Example: `AbsaOSS/version-tag-check`.\n- **Required**: Yes\n\n### `version-tag`\n- **Description**: The version tag to check for in the repository. Example: `v0.1.0`.\n- **Required**: Yes\n\n### `should-exist`\n- **Description**: Flag to indicate if the version tag should exist in the repository. Set to `true` to check if the version tag should exist. **Note:** Setting this to `true` **disables** the increment validity check.\n\n- **Default**: `false`\n- **Required**: No\n\n### `GITHUB_TOKEN`\n- **Description**: Your GitHub token for authentication. Store it as a secret and reference it in the workflow file as secrets.GITHUB_TOKEN.\n- **Required**: Yes\n\n### Behavior Summary\n\nThe action performs three sequential checks:\n\n- **Tag format check** – ensures the tag follows semantic versioning and starts with `v`, e.g., `v1.2.3`.\n- **Presence check** – determines whether the version tag is present in the target GitHub repository.\n- **Increment check** – verifies that the provided version tag is a valid increment over the latest existing version.\n  - ⚠️ This step is **only performed** when `should-exist=false`.\n\n| Tag present in repository (2nd check) | Expected presence of tag in repository | Increment Validity Check (3rd check) | Action final state                                                         |\n|---------------------------------------|----------------------------------------|--------------------------------------|----------------------------------------------------------------------------|\n| **Yes**                               | `true`                                 | *Skipped*                            | ✅ **Success**: The version tag exists as expected.                         |\n| **No**                                | `true`                                 | *Skipped*                            | ❌ **Failure**: The version tag does not exist in the repository.           |\n| **Yes**                               | `false`                                | *Skipped*                            | ❌ **Failure**: The version tag should not exist but does.                  |\n| **No**                                | `false`                                | ✅ *Valid*                            | ✅ **Success**: The version tag does not exist and is a valid increment.    |\n| **No**                                | `false`                                | ❌ *Invalid*                          | ❌ **Failure**: The version tag does not exist and is an **invalid** increment. |\n\n## Usage\n\n### Adding the Action to Your Workflow\n\nSee the default action step definition:\n\n```yaml\n- uses: actions/setup-python@v5.1.1\n  with:\n    python-version: '3.11'\n\n- name: Version Tag Check\n  id: version_tag_check\n  uses: AbsaOSS/version-tag-check@v0.1.0\n  env:\n    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  \n  with:\n    github-repository: \"{ org }/{ repo }\"   # e.g. ${{ github.repository }}\n    version-tag: \"v0.1.0\"\n    should-exist: \"false\"\n```\n\n\u003e To troubleshoot a failing run, re-run the GitHub Actions workflow with \"debug logging\" enabled or run it locally using the script described in [Developer Guide](DEVELOPER.md).\n\n### Supported Version Tags Formats\n\n#### Standard Versions\n- `v1.0.0` - Standard semantic version\n\n#### Pre-release Qualifiers\n- `v1.0.0-SNAPSHOT` - Snapshot pre-release\n- `v1.0.0-ALPHA` - Alpha pre-release\n- `v1.0.0-BETA` - Beta pre-release\n- `v1.0.0-RC1` to `v1.0.0-RC99` - Release candidates (e.g., RC1, RC2, ..., RC99)\n- `v1.0.0-RELEASE` - Release qualifier\n\n#### Hotfix Qualifiers\n- `v1.0.0-HF1` to `v1.0.0-HF99` - Hotfixes (e.g., HF1, HF2, ..., HF99)\n\n### Version Weight Comparison\n\n#### Numeric Precedence\nNumeric versions always take precedence over qualifiers:\n- `v2.0.0-SNAPSHOT` \u003e `v1.9.9-RELEASE`\n- `v1.0.0` \u003c `v1.0.1` \u003c `v1.1.0` \u003c `v2.0.0`\n\n#### Qualifier Precedence (for the same numeric version)\nFor the same numeric version (e.g. `v1.0.0`), qualifiers are ordered as follows:\n\n1. **Pre-release progression:**\n   - `v1.0.0-SNAPSHOT` \u003c `v1.0.0-ALPHA` \u003c `v1.0.0-BETA`\n   - `v1.0.0-BETA` \u003c `v1.0.0-RC1` \u003c `v1.0.0-RC2` \u003c ... \u003c `v1.0.0-RC99`\n   - `v1.0.0-RC99` \u003c `v1.0.0-RELEASE` \u003c `v1.0.0`\n\n2. **Hotfix progression:**\n   - `v1.0.0` \u003c `v1.0.0-HF1` \u003c `v1.0.0-HF2` \u003c ... \u003c `v1.0.0-HF99`\n\n**Example progression:**\n```\nv1.0.0-SNAPSHOT → v1.0.0-ALPHA → v1.0.0-BETA → v1.0.0-RC1 → v1.0.0-RC2 → \nv1.0.0-RELEASE → v1.0.0 → v1.0.0-HF1 → v1.0.0-HF2\n```\n\nFor more details, see the [Version qualifier validation specification](docs/qualifier-spec.md).\n\n## Developer Guide\n\nSee this [Developer Guide](DEVELOPER.md) for more technical, development-related information.\n\n## Documentation\n\n- [Version qualifier validation specification](docs/qualifier-spec.md) – defines the supported version tag format, allowed qualifiers, precedence rules, and validation behavior used by this action.\n\n## Contribution Guidelines\n\nWe welcome contributions to the Version Tag Check Action! Whether you're fixing bugs, improving documentation, or proposing new features, your help is appreciated.\n\n### How to Contribute\n- **Submit Pull Requests**: Feel free to fork the repository, make changes, and submit a pull request. Please ensure your code adheres to the existing style and all tests pass.\n- **Report Issues**: If you encounter any bugs or issues, please report them via the repository's [Issues page](https://github.com/AbsaOSS/version-tag-check/issues).\n- **Suggest Enhancements**: Have ideas on how to make this action better? Open an issue to suggest enhancements.\n\nBefore contributing, please review our [contribution guidelines](https://github.com/AbsaOSS/version-tag-check/blob/master/CONTRIBUTING.md) for more detailed information.\n\n## License Information\n\nThis project is licensed under the Apache License 2.0. It is a liberal license that allows you great freedom in using, modifying, and distributing this software, while also providing an express grant of patent rights from contributors to users.\n\nFor more details, see the [LICENSE](https://github.com/AbsaOSS/version-tag-check/blob/master/LICENSE) file in the repository.\n\n## Contact or Support Information\n\nIf you need help with using or contributing to Generate Release Notes Action, or if you have any questions or feedback, don't hesitate to reach out:\n\n- **Issue Tracker**: For technical issues or feature requests, use the [GitHub Issues page](https://github.com/AbsaOSS/version-tag-check/issues).\n- **Discussion Forum**: For general questions and discussions, join our [GitHub Discussions forum](https://github.com/AbsaOSS/version-tag-check/discussions).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabsaoss%2Fversion-tag-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabsaoss%2Fversion-tag-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabsaoss%2Fversion-tag-check/lists"}