{"id":16805940,"url":"https://github.com/pkgw/cranko","last_synced_at":"2026-01-23T07:30:37.240Z","repository":{"id":42463765,"uuid":"275670029","full_name":"pkgw/cranko","owner":"pkgw","description":"Turn the release crank.","archived":false,"fork":false,"pushed_at":"2024-02-13T14:49:37.000Z","size":2004,"stargazers_count":27,"open_issues_count":11,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-27T17:18:16.447Z","etag":null,"topics":["continuous-deployment","continuous-integration","release-automation","semantic-release"],"latest_commit_sha":null,"homepage":"https://pkgw.github.io/cranko/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pkgw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-MIT","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-06-28T21:20:19.000Z","updated_at":"2024-06-29T16:37:46.000Z","dependencies_parsed_at":"2024-02-13T04:24:58.466Z","dependency_job_id":"6a34d6fe-7007-48fe-84d8-42155bdb8def","html_url":"https://github.com/pkgw/cranko","commit_stats":{"total_commits":351,"total_committers":1,"mean_commits":351.0,"dds":0.0,"last_synced_commit":"f2862bde675bc800d71fe980b17fbd8bbce73f59"},"previous_names":[],"tags_count":65,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Fcranko","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Fcranko/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Fcranko/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgw%2Fcranko/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pkgw","download_url":"https://codeload.github.com/pkgw/cranko/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243841203,"owners_count":20356443,"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":["continuous-deployment","continuous-integration","release-automation","semantic-release"],"created_at":"2024-10-13T09:49:41.090Z","updated_at":"2026-01-23T07:30:37.189Z","avatar_url":"https://github.com/pkgw.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://dev.azure.com/peter-bulk/Misc/_apis/build/status/pkgw.cranko?branchName=master)](https://dev.azure.com/peter-bulk/Misc/_build/latest?definitionId=2\u0026branchName=master)\n[![](https://meritbadge.herokuapp.com/cranko)](https://crates.io/crates/cranko)\n\n# cranko\n\nCranko is a release automation tool implementing the [just-in-time\nversioning][jitv] workflow. It is cross-platform, installable as a\nsingle executable, supports multiple languages and packaging systems, and is\ndesigned from the ground up to work with [monorepos].\n\n[jitv]: https://pkgw.github.io/cranko/book/latest/jit-versioning/\n[monorepos]: https://en.wikipedia.org/wiki/Monorepo\n\nTo learn more, check out [the book]!\n\n[the book]: https://pkgw.github.io/cranko/book/latest/\n\nIn order to use Cranko, it has to have explicit support for the\nlanguage/project/package type(s) that you're using. It currently supports:\n\n- NPM / Node.js\n- Python (PyPA standards)\n- Rust\n- Visual Studio C# projects\n\nIn order to add support for new languages, one has to implement a \"loader\" that\ndetects project files and extracts metadata, and one or more \"rewriters\" that\ncan update those files with the new versions that Cranko determines. Simple\nsupport can usually be accomplished with a few hundred lines of Rust code.\n\n\n## Installation\n\nCranko is delivered as a single standalone executable for easy installation on\ncontinuous integration systems. On Unix-like systems (including macOS), the\nfollowing command will drop an executable named `cranko` in the current\ndirectory:\n\n```shell\ncurl --proto '=https' --tlsv1.2 -sSf https://pkgw.github.io/cranko/fetch-latest.sh | sh\n```\n\nOn Windows systems, the following command will do the same in a PowerShell window:\n\n```pwsh\n[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072\niex ((New-Object System.Net.WebClient).DownloadString('https://pkgw.github.io/cranko/fetch-latest.ps1'))\n```\n\nFor more details and additional methods, see [the Installation\nsection][installation] of [the book].\n\n[installation]: https://pkgw.github.io/cranko/book/latest/installation/\n\n\n## Getting Started\n\nBecause Cranko is a workflow tool, to really start using it you’ll need to learn\na bit about how it works and then think about how to integrate it into your\ndevelopment processes. To learn more, check out the [Getting\nStarted][getting-started] and [Just-in-Time Versioning][jitv] sections of the\nbook.\n\n[getting-started]: https://pkgw.github.io/cranko/book/latest/getting-started/\n\n\n## Future Directions\n\nCranko is still a new project and is lacking many features that would be useful.\nHere are some potential directions for future work:\n\n- Support for more project types (languages), CI frameworks, etc.\n- A mode to manually define projects and rewrites so that Cranko can be used with\n  projects that don't currently have built-in integrations\n- Figure out how we're going to make a test suite for this beast\n- Split the main implementation into multiple crates\n- Pluggable framework for auto-generating release notes (e.g., taking advantage\n  of Conventional Commit formats, auto-linking to GitHub pull requests)\n- Pluggable framework for knowing when releases should be made and/or\n  determining how to bump version numbers (e.g., Conventional Commits plus\n  semantic-release type standards)\n- Pluggable framework for deciding which commits affect which projects\n- Additional templates for release notes, tag names, etc. etc.\n- More robust CLI interface for querying the project/release graph so that\n  external tools can build on Cranko as a base layer.\n\n## cargo Features\n\nThe `cranko` Cargo package provides the following optional [features]:\n\n- `vendored-openssl` — builds the [git2] dependency with its `vendored-openssl`\n  feature, which uses a builtin [OpenSSL] library rather than attempting to link\n  with the system version. This is useful when cross-compiling because often the\n  target environment lacks OpenSSL.\n\n[features]: https://doc.rust-lang.org/cargo/reference/features.html\n[git2]: https://crates.io/crates/git2\n[OpenSSL]: https://www.openssl.org/\n\n\n## Contributions\n\nAre welcome! Please open pull requests or issues against the [pkgw/cranko] repository.\n\n[pkgw/cranko]: https://github.com/pkgw/cranko\n\n\n## Legalities\n\nCranko copyrights are held by Peter Williams and the Cranko project\ncontributors. Source code is licensed under [the MIT License][mit-license].\n\n[mit-license]: https://opensource.org/licenses/MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgw%2Fcranko","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkgw%2Fcranko","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgw%2Fcranko/lists"}