{"id":15171821,"url":"https://github.com/nbedos/cistern","last_synced_at":"2025-12-12T00:47:06.009Z","repository":{"id":57496286,"uuid":"200203900","full_name":"nbedos/cistern","owner":"nbedos","description":"A terminal UI for Unix to monitor Continuous Integration pipelines from the command line. Current integrations include GitLab, Azure DevOps, Travis CI, AppVeyor and CircleCI.","archived":true,"fork":false,"pushed_at":"2020-06-16T11:03:28.000Z","size":1051,"stargazers_count":173,"open_issues_count":8,"forks_count":12,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-17T05:11:51.931Z","etag":null,"topics":["appveyor","azure-devops","ci","circleci","cli","gitlab","golang","travis","tui","unix"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nbedos.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}},"created_at":"2019-08-02T09:10:03.000Z","updated_at":"2025-01-07T13:49:15.000Z","dependencies_parsed_at":"2022-09-03T02:30:20.506Z","dependency_job_id":null,"html_url":"https://github.com/nbedos/cistern","commit_stats":null,"previous_names":["nbedos/citop"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbedos%2Fcistern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbedos%2Fcistern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbedos%2Fcistern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbedos%2Fcistern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nbedos","download_url":"https://codeload.github.com/nbedos/cistern/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234837112,"owners_count":18894541,"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":["appveyor","azure-devops","ci","circleci","cli","gitlab","golang","travis","tui","unix"],"created_at":"2024-09-27T09:04:09.684Z","updated_at":"2025-10-01T06:32:05.263Z","avatar_url":"https://github.com/nbedos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"**Note: As of June 2020 I do not have time to maintain this repository anymore and I've thus made it read-only.**\n\n# cistern\nA top-like utility for Unix to monitor Continuous Integration pipelines from\nthe command line. Current integrations include GitLab, Azure DevOps, Travis CI,\nAppVeyor and CircleCI. Think of `cistern` as the receptacle that holds the\nresults of your CI pipelines.  `cistern` stands for **C**ontinous\n**I**ntegration **S**ervices **Ter**minal for U**n**ix.\n\n![Animated demonstration](demo.svg)\n\n# Project status\n`cistern` is currently in the initial development phase. Anything may change at any time and the API\nshould not be considered stable.\n\n# Features\n\n* **List pipelines associated to a commit of a GitHub or GitLab repository**: pipelines are shown in\na tree view where expanding a pipeline will reveal its stages, jobs and tasks\n* **Monitor status changes in quasi real time and view job logs** \n* **Integration with Travis CI, AppVeyor, CircleCI, GitLab CI and Azure DevOps**: `cistern` is\ntargeted at open source developers\n\n# Limitations\n\n* **Starting, restarting or canceling a pipeline is not possible for now** ([issue #14](https://github.com/nbedos/cistern/issues/14))\n* **Compatibility is restricted to Unix systems**: all dependencies and the majority of the code base\nshould work on Windows, but there are still a few Unixisms here and there.\n* **No integration with GitHub Actions**: GitHub does not currently allow access to action logs\nvia their API\n* **Integrations are limited to CI providers**: Integration with Netlify, code coverage services, etc\nis currently considered out of scope \n* **Git is the only version-control system supported**\n\n\n# Installation\n## Binary releases\nBinary releases are made available for each version of `cistern` \n[here](https://github.com/nbedos/cistern/releases).\n\nEach release archive contains a statically linked executable named `cistern`, the manual page\nin HTML and groff man format, a copy of the license and a sample configuration file.\n\n## Building from source\n### Building automatically from source (recommended)\nThis method requires a UNIX system with golang \u003e= 1.11, git and [pandoc](https://pandoc.org/installing.html).\n```shell\ngit clone git@github.com:nbedos/cistern.git\ncd cistern\n# Compile and run build script\nexport GO111MODULE=on\ngo run ./cmd/make cistern\n```\n\nIf all went well you should find the following content in the `./build/` directory: \n\nFilename           | Content\n------------------ | ---\n`cistern`          | statically linked executable\n`cistern.man.1`    | manual page (groff man format)\n`cistern.man.html` | manual page (HTML format)\n`cistern.toml`     | sample configuration file\n`LICENSE`          | copy of the license\n\n### Building manually from source\nThis method is provided for users that do not wish to install [pandoc](https://pandoc.org/installing.html)\non their system. It requires a UNIX system with golang \u003e= 1.11 and git.\n```shell\ngit clone git@github.com:nbedos/cistern.git\ncd cistern\nmkdir build\nexport CISTERN_VERSION=\"$(git describe --tags --dirty)_$(go env GOOS)/$(go env GOARCH)\"\nexport GO111MODULE=on\ngo build -ldflags \"-X main.Version=$CISTERN_VERSION\" -o build/cistern ./cmd/cistern\n```\n\nAt this point you should find the executable located at `./build/cistern`.\n\n\n\n### Building a Docker image\nThis method requires access to Docker 17.05 or higher since it relies on a multi-stage build.\n```shell\ngit clone git@github.com:nbedos/cistern.git\ncd cistern\nexport CISTERN_DOCKER_IMAGE=\"cistern:$(git describe --tags --dirty)\"\ndocker build -t \"$CISTERN_DOCKER_IMAGE\" .\n\n# Mount a local repository as a volume mapped to `/cistern` to monitor its pipelines \ndocker run -it -v \"$PWD:/cistern\" \"$CISTERN_DOCKER_IMAGE\"\n\n# Monitor a non local repository by specifying a URL:\ndocker run -it \"$CISTERN_DOCKER_IMAGE\" -r github.com/nbedos/cistern\n```\n\n# Configuration\n`cistern` requires access to various APIs and the corresponding credentials should be stored in a\nconfiguration file. A minimal example is given in the [manual page](https://nbedos.github.io/cistern/cistern.man)\nand a full example (which is also included in every release archive) is available\n[here](https://github.com/nbedos/cistern/blob/master/cmd/cistern/cistern.toml).\n\nIf the configuration file is missing, `cistern` will run with the following limitations:\n* `cistern` will likely reach the [rate limit of the GitHub API](https://developer.github.com/v3/#rate-limiting)\nfor unauthenticated clients in a few minutes\n* `cistern` will not be able to access pipeline jobs on GitLab without an API access token\n    \nIn most cases running without a configuration file should still work well enough for quickly\ntesting the application without having to bother with personal access tokens.\n\n# Usage\nSee the [manual page](https://nbedos.github.io/cistern/cistern.man) for more detailed information.\n\n```\nusage: cistern [-r REPOSITORY | --repository REPOSITORY] [COMMIT]\n       cistern -h | --help\n       cistern --version\n\nMonitor CI pipelines associated to a specific commit of a git repository\n\nPositional arguments:\n  COMMIT        Specify the commit to monitor. COMMIT is expected to be\n                the SHA identifier of a commit, or the name of a tag or\n                a branch. If this option is missing cistern will monitor\n                the commit referenced by HEAD.\n\nOptions:\n  -r REPOSITORY, --repository REPOSITORY\n                Specify the git repository to monitor. If REPOSITORY is\n                the path of a local repository, cistern will monitor all\n                the associated remotes. If REPOSITORY is a URL, cistern\n                will monitor the corresponding online repository.\n                If this option is not set, cistern will behave as if it\n                had been set to the path of the current directory.\n                Note that cistern will only monitor repositories hosted\n                on GitLab or GitHub.\n\n  -h, --help    Show usage\n\n  --version     Print the version of cistern being run\n```\n\n## Examples\nMonitor pipelines of the current git repository\n```shell\n# Move to a directory containing a git repository of your choosing\ngit clone git@github.com:nbedos/cistern.git \u0026\u0026 cd cistern\n# Run cistern to list the pipelines associated to the last commit of the repository \ncistern\n\n# Show pipelines associated to a specific commit, tag or branch\ncistern a24840c\ncistern 0.1.0\ncistern master\n```\n\nMonitor pipelines of other repositories\n```shell\n# Show pipelines of a repository identified by a URL or path\ncistern -r https://gitlab.com/nbedos/cistern        # Web URL\ncistern -r git@github.com:nbedos/cistern.git        # Git URL\ncistern -r github.com/nbedos/cistern                # URL without scheme\ncistern -r /home/user/repos/repo                    # Path to a repository\n\n# Specify both repository and git reference\ncistern -r github.com/nbedos/cistern master\n```\n\n## Support\nQuestions, bug reports and feature requests are welcome and should be submitted as\n[issues](https://github.com/nbedos/cistern/issues).\n\n\n## Contributing\nPull requests are welcome. If you foresee that a PR will take any significant amount of your time,\nyou probably want to open an issue first to discuss your changes and make sure they are\nlikely to be accepted.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnbedos%2Fcistern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnbedos%2Fcistern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnbedos%2Fcistern/lists"}