{"id":17807447,"url":"https://github.com/ansible-community/antsibull-build","last_synced_at":"2025-04-04T12:06:55.207Z","repository":{"id":37033118,"uuid":"252205518","full_name":"ansible-community/antsibull-build","owner":"ansible-community","description":"Tooling for building various things related to ansible","archived":false,"fork":false,"pushed_at":"2025-03-26T01:17:59.000Z","size":2699,"stargazers_count":60,"open_issues_count":24,"forks_count":33,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-03-28T11:07:58.842Z","etag":null,"topics":["ansible","hacktoberfest","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ansible-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-01T14:54:41.000Z","updated_at":"2025-03-26T01:18:03.000Z","dependencies_parsed_at":"2023-02-16T10:15:35.179Z","dependency_job_id":"e8d5d57b-3c73-4e59-b8c5-4e943045284b","html_url":"https://github.com/ansible-community/antsibull-build","commit_stats":{"total_commits":812,"total_committers":25,"mean_commits":32.48,"dds":"0.42610837438423643","last_synced_commit":"def8c24a28465d217061d391b5f0ca28216fff61"},"previous_names":["ansible-community/antsibull-build","ansible-community/antsibull"],"tags_count":65,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fantsibull-build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fantsibull-build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fantsibull-build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fantsibull-build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansible-community","download_url":"https://codeload.github.com/ansible-community/antsibull-build/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174415,"owners_count":20896078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ansible","hacktoberfest","python"],"created_at":"2024-10-27T14:04:27.238Z","updated_at":"2025-04-04T12:06:55.201Z","avatar_url":"https://github.com/ansible-community.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nCopyright (c) Ansible Project\nGNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)\nSPDX-License-Identifier: GPL-3.0-or-later\n--\u003e\n\n# antsibull-build -- Ansible Build Scripts\n[![Discuss on Matrix at #antsibull:ansible.com](https://img.shields.io/matrix/antsibull:ansible.com.svg?server_fqdn=ansible-accounts.ems.host\u0026label=Discuss%20on%20Matrix%20at%20%23antsibull:ansible.com\u0026logo=matrix)](https://matrix.to/#/#antsibull:ansible.com)\n[![Nox badge](https://github.com/ansible-community/antsibull-build/actions/workflows/nox.yml/badge.svg)](https://github.com/ansible-community/antsibull-build/actions/workflows/nox.yml)\n[![dumb PyPI on GH pages badge](https://github.com/ansible-community/antsibull-build/workflows/👷%20dumb%20PyPI%20on%20GH%20pages/badge.svg?event=push\u0026branch=main)](https://github.com/ansible-community/antsibull-build/actions?query=workflow%3A%22👷+dumb+PyPI+on+GH+pages%22+branch%3Amain)\n[![Codecov badge](https://img.shields.io/codecov/c/github/ansible-community/antsibull-build)](https://codecov.io/gh/ansible-community/antsibull-build)\n[![REUSE status](https://api.reuse.software/badge/github.com/ansible-community/antsibull-build)](https://api.reuse.software/info/github.com/ansible-community/antsibull-build)\n\nTooling for building various things related to Ansible\n\nScripts that are here:\n\n* antsibull-build - Builds Ansible 6+ from component collections ([docs](https://github.com/ansible-community/antsibull/blob/main/docs/build-ansible.rst))\n\nRelated projects are [antsibull-changelog](https://pypi.org/project/antsibull-changelog/) and [antsibull-docs](https://pypi.org/project/antsibull-docs/), which are in their own repositories ([antsibull-changelog repository](https://github.com/ansible-community/antsibull-changelog/), [antsibull-docs repository](https://github.com/ansible-community/antsibull-docs/)). Currently antsibull-changelog is a dependency of antsibull-build. Therefore, the scripts contained in it will be available as well when installing antsibull-build.\n\nYou can find a list of changes in [the Antsibull Build changelog](https://github.com/ansible-community/antsibull-build/blob/main/CHANGELOG.md).\n\nantsibull-build is covered by the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).\n\n## Licensing\n\nThis repository abides by the [REUSE specification](https://reuse.software).\nSee the copyright headers in each file for the exact license and copyright.\nSummarily:\n\n- The default license is the GNU Public License v3+\n  ([`GPL-3.0-or-later`](LICENSES/GPL-3.0-or-later.txt)).\n- `src/antsibull/_vendor/shutil.py` includes code derived from CPython, licensed\n  under the Python 2.0 License ([`Python-2.0.1`](LICENSES/Python-2.0.1.txt)).\n\n## Versioning and compatibility\n\nFrom version 0.1.0 on, antsibull-build sticks to semantic versioning and aims at providing no backwards compatibility breaking changes **to the command line API (antsibull-build)** during a major release cycle. We might make exceptions from this in case of security fixes for vulnerabilities that are severe enough.\n\nWe explicitly exclude code compatibility. **antsibull-build is not supposed to be used as a library.** The only exception are potential dependencies with other antsibull projects (currently, none). If you want to use a certain part of antsibull-build as a library, please create an issue so we can discuss whether we add a stable interface for **parts** of the Python code. We do not promise that this will actually happen though.\n\n## Development\n\nInstall and run `nox` to run all tests. That's it for simple contributions!\n`nox` will create virtual environments in `.nox` inside the checked out project\nand install the requirements needed to run the tests there.\n\n---\n\nantsibull-build depends on the sister antsibull-core, antsibull-changelog,\nantsibull-docs-parser, antsibull-docutils, and antsibull-fileutils projects.\nBy default, `nox` will install development versions of these projects from\nGithub.\nIf you're hacking on antsibull-core, antsibull-changelog, antsibull-docs-parser,\nantsibull-docutils and/or antsibull-fileutils alongside antsibull-build,\nnox will automatically install the projects from `../antsibull-core`,\n`../antsibull-changelog`, `../antsibull-docs-parser`, `../antsibull-docutils`,\nand `../antsibull-fileutils` when running tests if those paths exist.\nYou can change this behavior through the `OTHER_ANTSIBULL_MODE` env var:\n\n- `OTHER_ANTSIBULL_MODE=auto` — the default behavior described above\n- `OTHER_ANTSIBULL_MODE=local` — install the projects from `../antsibull-core`,\n  `../antsibull-changelog`, `../antsibull-docs-parser`, `../antsibull-docutils`,\n  and `../antsibull-fileutils`.\n  Fail if those paths don't exist.\n- `OTHER_ANTSIBULL_MODE=git` — install the projects from the Github main branch\n- `OTHER_ANTSIBULL_MODE=pypi` — install the latest version from PyPI\n\n---\n\nTo run specific tests:\n\n1. `nox -e test` to only run unit tests;\n2. `nox -e lint` to run all linters;\n3. `nox -e formatters` to run `isort` and `black`;\n4. `nox -e codeqa` to run `flake8`, `pylint`, `reuse lint`, and `antsibull-changelog lint`;\n5. `nox -e typing` to run `mypy`.\n6. `nox -e coverage_release` to build a test ansible release.\n   This is expensive, so it's not run by default.\n7. `nox -e check_package_files` to run the generate-package-files integration tests.\n   This is somewhat expensive and thus not run by default.\n   Run `nox -e check_package_files -- regen` to regenerate the test fixtures.\n8. `nox -e coverage` to display combined coverage results after running `nox -e\n   test coverage_release check_package_files`;\n\nRun `nox -l` to list all test sessions.\n\nTo create a more complete local development env:\n\n``` console\ngit clone https://github.com/ansible-community/antsibull-changelog.git\ngit clone https://github.com/ansible-community/antsibull-core.git\ngit clone https://github.com/ansible-community/antsibull-docs-parser.git\ngit clone https://github.com/ansible-community/antsibull-docutils.git\ngit clone https://github.com/ansible-community/antsibull-build.git\ncd antsibull-build\npython3 -m venv venv\n. ./venv/bin/activate\npip install -e '.[dev]' -e ../antsibull-changelog -e ../antsibull-core -e ../antsibull-docs-parser -e ../antsibull-docutils\n[...]\nnox\n```\n\n## Creating a new release:\n\n1. Run `nox -e bump -- \u003cversion\u003e \u003crelease_summary_message\u003e`. This:\n   * Bumps the package version in `src/antsibull/__init__.py`.\n   * Creates `changelogs/fragments/\u003cversion\u003e.yml` with a `release_summary` section.\n   * Runs `antsibull-changelog release` and adds the changed files to git.\n   * Commits with message `Release \u003cversion\u003e.` and runs `git tag -a -m 'antsibull-build \u003cversion\u003e' \u003cversion\u003e`.\n   * Runs `hatch build --clean` to build an sdist and wheel in `dist/` and\n     clean up any old artifacts in that directory.\n2. Run `git push` to the appropriate remotes.\n3. Once CI passes on GitHub, run `nox -e publish`. This:\n   * Runs `hatch publish` to publish the sdist and wheel generated during step 1 to PyPI;\n   * Bumps the version to `\u003cversion\u003e.post0`;\n   * Adds the changed file to git and runs `git commit -m 'Post-release version bump.'`;\n4. Run `git push --follow-tags` to the appropriate remotes and create a GitHub release.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansible-community%2Fantsibull-build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansible-community%2Fantsibull-build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansible-community%2Fantsibull-build/lists"}