{"id":13478211,"url":"https://github.com/openshift/cincinnati","last_synced_at":"2025-04-04T14:06:33.322Z","repository":{"id":37977481,"uuid":"141004926","full_name":"openshift/cincinnati","owner":"openshift","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-18T15:03:36.000Z","size":83541,"stargazers_count":105,"open_issues_count":13,"forks_count":60,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-03-28T13:07:22.322Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/openshift.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-15T06:45:59.000Z","updated_at":"2025-03-18T15:03:48.000Z","dependencies_parsed_at":"2023-11-08T13:28:07.134Z","dependency_job_id":"c14b7206-a6c9-4c1b-8b59-6fb65815a211","html_url":"https://github.com/openshift/cincinnati","commit_stats":{"total_commits":1182,"total_committers":31,"mean_commits":38.12903225806452,"dds":0.7250423011844331,"last_synced_commit":"1e2321eeb2f96f7ac0cb364f14b1dd5f47fe1bb4"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcincinnati","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcincinnati/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcincinnati/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcincinnati/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openshift","download_url":"https://codeload.github.com/openshift/cincinnati/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247190250,"owners_count":20898702,"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":[],"created_at":"2024-07-31T16:01:54.062Z","updated_at":"2025-04-04T14:06:33.292Z","avatar_url":"https://github.com/openshift.png","language":"Rust","readme":"# Cincinnati\n\nCincinnati is an update protocol designed to facilitate automatic updates. It describes a particular method for representing transitions between releases of a project and allowing a client to perform automatic updates between these releases.\n\n## Quick Start\n\nPrepare custom environment variables\n\n```console\n# Please change these accordingly\nexport CINCINNATI_REGISTRY=\"https://quay.io\"\nexport CINCINNATI_REPO=\"redhat/openshift-cincinnati-test-public-manual\"\n```\n\n### Executables on the build host\n\n```console\ncargo run --package graph-builder -- --service.address 0.0.0.0 --upstream.registry.url \"${CINCINNATI_REGISTRY}\" --upstream.registry.repository \"${CINCINNATI_REPO}\" \u0026\ncargo run --package policy-engine -- --service.address 0.0.0.0 \u0026\n curl --verbose --header 'Accept:application/json' http://localhost:8081/graph\\?channel=a\n{\n    \"nodes\":\n    [{\n        \"version\":\"0.0.0\",\n        \"payload\":\"quay.io/redhat/openshift-cincinnati-test-public-manual@sha256:a264db3ac5288c9903dc3db269fca03a0b122fe4af80b57fc5087b329995013d\",\n        \"metadata\":{\n            \"io.openshift.upgrades.graph.release.channels\":\"a\",\n            \"io.openshift.upgrades.graph.release.manifestref\":\"sha256:a264db3ac5288c9903dc3db269fca03a0b122fe4af80b57fc5087b329995013d\"\n        }\n    },\n    {\n        \"version\":\"0.0.1\",\n        \"payload\":\"quay.io/redhat/openshift-cincinnati-test-public-manual@sha256:73df5efa869eaf57d4125f7655e05e1a72b59d05e55fea06d3701ea5b59234ff\",\n        \"metadata\":{\n            \"io.openshift.upgrades.graph.release.manifestref\":\"sha256:73df5efa869eaf57d4125f7655e05e1a72b59d05e55fea06d3701ea5b59234ff\",\n            \"io.openshift.upgrades.graph.release.channels\":\"a\",\n            \"kind\":\"test\"\n        }\n    }],\n    \"edges\":[[0,1]]\n}\n```\n\n***Note:*** the default configuration of the policy-engine requires the `channel` parameter to be present in each request.\n\n## Tests\nThere are several ways of testing various parts of the Cincinnati stack.\n\n### Offline\n\n#### Language-Level\nThe language-level tests can be run using `cargo --test` in the repository's root directory:\n\n```console\ncargo test\n```\n\n### Online\nThe online tests for the graph-builder depend on a curated set of repositories to be available on *quay.io* in the *redhat* organization.\nThe build instructions for (re-)populating the repositories are available at *graph-builder/tests/images/build-n-push.sh*.\nThe script must run be run from its directory to function:\n\n```console\ncd graph-builder/tests/images\n./build-n-push.sh test-*\n```\n\n#### Language-Level\nThe graph-builder package currently has network dependent tests which gated behind the feature `test-net` and `test-net-private`.\nThe latter requires setting the environment variable `CINCINNATI_TEST_CREDENTIALS_PATH` which is equivalent to *graph-builder's* `--credentials-path`.\n\nAssuming you have access to images under the *quay.io/redhat* organization, and have an appropriate *$HOME/.docker/config.json* in place, this might work on your machine:\n\n```console\ncd graph-builder\nexport CINCINNATI_TEST_CREDENTIALS_PATH=\"$HOME/.docker/config.json\"\ncargo test --features test-net,test-net-private\n```\n\n### CI/CD\nThe *dist/* directory contains various CI/CD related files.\n\n#### Openshift Dev\n* Uses *dist/Dockerfile.build/Dockerfile* as the build container image\n* Run the following scripts on PR\n    * `dist/prow_yaml_lint.sh`\n    * `dist/prow_rustfmt.sh`\n    * `dist/cargo_test.sh`\n\nFor details please see [github.com/openshift/release/(...)/openshift-cincinnati-master.yaml][1].\n\n#### App-SRE\n* Uses *dist/Dockerfile.build/Dockerfile* as the build container image\n* Runs `dist/build_deploy.sh` for successful merges to the *master* branch and pushes the result to the staging environment *(URL is not yet publicly available)*\n\n\n## Development\n\nFor developing Cincinnati refer to [the developer documentation](./docs/developer/developing.md) document.\n\n### Updating the Plugin-Interface Scheme\nThe interface for external plugins is defined as a Protobuf v3 scheme in the file [cincinnati/src/plugins/interface.proto][./cincinnati/src/plugins/interface.proto].\nIn order to regenerate the files the *cincinnati* crate must be built with the `codegen-protoc` feature:\n\n```console\ncd cincinnati\ncargo build --features=codegen-protoc\n```\n\nThe CI/CD system doesn't do this and it relies on the generated code being committed to the repository; please do so after generating new code!\n\n[1]: https://github.com/openshift/release/blob/master/ci-operator/config/openshift/cincinnati/openshift-cincinnati-master.yaml\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift%2Fcincinnati","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenshift%2Fcincinnati","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift%2Fcincinnati/lists"}