{"id":21356773,"url":"https://github.com/rousan/releez","last_synced_at":"2025-06-23T11:35:14.656Z","repository":{"id":57659648,"uuid":"257665998","full_name":"rousan/releez","owner":"rousan","description":"An utility tool to run application release-checklist safely","archived":false,"fork":false,"pushed_at":"2020-04-26T16:35:01.000Z","size":16251,"stargazers_count":14,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-23T07:41:48.265Z","etag":null,"topics":["checklist","checklist-application","release-automation","release-management","runner-script"],"latest_commit_sha":null,"homepage":null,"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/rousan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-21T17:28:32.000Z","updated_at":"2022-06-17T01:20:41.000Z","dependencies_parsed_at":"2022-09-08T00:12:06.745Z","dependency_job_id":null,"html_url":"https://github.com/rousan/releez","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/rousan/releez","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rousan%2Freleez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rousan%2Freleez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rousan%2Freleez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rousan%2Freleez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rousan","download_url":"https://codeload.github.com/rousan/releez/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rousan%2Freleez/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261469506,"owners_count":23163110,"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":["checklist","checklist-application","release-automation","release-management","runner-script"],"created_at":"2024-11-22T04:36:08.371Z","updated_at":"2025-06-23T11:35:09.642Z","avatar_url":"https://github.com/rousan.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rousan/releez\"\u003e\n    \u003cimg width=\"200\" height=\"200\" src=\"https://raw.githubusercontent.com/rousan/releez/master/media/logo.png\"\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n[![Crate](https://img.shields.io/crates/v/releez.svg)](https://crates.io/crates/releez)\n[![Contributors](https://img.shields.io/github/contributors/rousan/releez.svg)](https://github.com/rousan/releez/graphs/contributors)\n[![MIT](https://img.shields.io/crates/l/releez.svg)](./LICENSE)\n\n\n# releez\n\nAn utility tool to run application `release-checklist` safely.\n\n## Why to use releez?\n\nWe all document a checklist prior to an application release to avoid any mistakes. Somebody writes them to a file called `release-checklist.txt` or someone documents them somewhere else.\n\nSo, two types of tasks can be involved during a release:\n1. **Automated**: These tasks are automated through running scripts.\n2. **Manual**: These tasks require manual efforts as these can't be automated or very difficult to automate.\n\nThis way, we have to remember which step we just finished, and also if some automated tasks breaks somewhere, it is difficult to find the fault point.\nWe make mistakes and it's normal.\n\nBut if some tool runs those automated and manual tasks instead, and if it tracks the release progress so that if some tasks\nfailed to completion it stores the state and it allows to resume the release process from where THE FAULT happened, then it would be a life saver.\n\nHere, comes the `releez` tool which does exactly what it means. It requires a config file named `releez.yml` containing the release checklist.\n\nThis config file is kind of alternative to our `release-checklis.txt` file or whatever we use to document the checklist. You have to just mention the task name and the task type (`auto` or `manual`), if it's an automated task then\nyou have to mention the commands to run or if it's a manual task, then you have to write the instructions or guide to do that task manually. That's it, it will run your checklist and tracks\nthe progress and it can also resume the release if it fails at some point.\n\n**Fun Fact**: _This project itself uses `releez` to release itself._\n\n## Install\n\n### macOS\n\n```sh\n $ bash -c \"$(curl -fsSL https://git.io/JfL6G)\"\n```\n\n### Linux\n\n```sh\n $ bash -c \"$(curl -fsSL https://git.io/JfL6G)\"\n```\n\n### Windows\n\nPlease download it from [releases](https://github.com/rousan/releez/releases) page.\n\n## Getting Started\n\nAfter installation, you can follow the steps below to get started with the `releez` tool.\n\nFirst, you need to create a file named `releez.yml` at the root directory of the project and write the `release-checklist` in the following format:\n\nAn example `releez.yml` file:\n```yaml\nversion: 1.0.0\nchecklist:\n  - name: A Manual Task\n    type: manual\n    instructions:\n      - Write the instructions or guides to do this manual task\n      - Another instruction\n      - You can access next release version as $VERSION here\n      - You can also  embed system environment variables in here e.g. $USER or $PWD\n  - name: You can also write instructions based on operating systems\n    type: manual\n    instructions:\n      macos + linux:\n        - This instruction will be shown on linux and macOS system\n      windows:\n        - This instruction will be shown on Windows system only\n  - name: An automated task e.g. Building the project\n    type: auto\n    run:\n      - echo \"Build the project\"\n      - npm build\n      - echo \"You can also access release version as $VERSION\"\n  - name: You can also write different commands for different Operating Systems\n    type: auto\n    run:\n      macos + linux:\n        - echo \"commands for macOS and linux\"\n        - echo \"commands for macOS and linux\"\n      windows:\n        - echo \"commands for Windows only\"\n  - name: Another auto task, but it will ask to confirm before executing commands\n    confirm: Do you want to proceed this task to be run?\n    type: auto\n    run:\n      - echo \"Releasing...\"\n      - npm publish\n```\n\nThen ignore `.halt.releez.yml` file in `.gitignore` file as this file is used to store release state and we don't to make our working directory dirty for this.\n\nThen, when you're ready to release the app, you need to run the following command at the root directory of the project with the next release version e.g. `v1.0.2` :\n\n```sh\n$ releez v1.0.2\n```\n\nThat's it. It will now run these checklist and it will make sure to store the release status and if a task failed to run, it can also resume the release process from that breaking point.\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rousan/releez\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rousan/releez/v1.0.3/media/releez-demo.gif\"\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n## Contributing\n\nYour PRs and stars are always welcome.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frousan%2Freleez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frousan%2Freleez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frousan%2Freleez/lists"}