{"id":25431983,"url":"https://github.com/vojtechmares/argocd-poc-kargo-advanced","last_synced_at":"2025-07-03T00:06:45.858Z","repository":{"id":261029415,"uuid":"883033193","full_name":"vojtechmares/argocd-poc-kargo-advanced","owner":"vojtechmares","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-04T12:40:17.000Z","size":438,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-14T15:53:42.886Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vojtechmares.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2024-11-04T09:06:46.000Z","updated_at":"2024-11-16T14:04:34.000Z","dependencies_parsed_at":"2025-05-15T03:31:14.115Z","dependency_job_id":null,"html_url":"https://github.com/vojtechmares/argocd-poc-kargo-advanced","commit_stats":null,"previous_names":["vojtechmares/argocd-poc-kargo-advanced"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vojtechmares/argocd-poc-kargo-advanced","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vojtechmares%2Fargocd-poc-kargo-advanced","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vojtechmares%2Fargocd-poc-kargo-advanced/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vojtechmares%2Fargocd-poc-kargo-advanced/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vojtechmares%2Fargocd-poc-kargo-advanced/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vojtechmares","download_url":"https://codeload.github.com/vojtechmares/argocd-poc-kargo-advanced/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vojtechmares%2Fargocd-poc-kargo-advanced/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263234953,"owners_count":23434920,"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":"2025-02-17T04:42:41.494Z","updated_at":"2025-07-03T00:06:45.811Z","avatar_url":"https://github.com/vojtechmares.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kargo Advanced Example\n\nThis is a GitOps repository of an Kargo example that showcases advanced Kargo\ntechniques and features. This example will create multiple Argo CD Applications\nand Kargo Stages with a pipeline to progress both Git and image changes through\nmultiple Stages.\n\n## Features\n\n* A Warehouse which monitors both a container repository for new images and manifest changes in Git\n* Stage deploy pipeline with A/B testing\n* Promotion of Git changes and image tags\n* Verification with analysis of an HTTP REST endpoint\n* Argo CD Application syncing\n* Control flow Stage to coordinate promotion to multiple Stages\n* Rendered branches\n\n## Requirements\n\n* Kargo v0.9.x (for older Kargo versions, switch to the release-X.Y branch)\n* An Argo CD instance\n* GitHub and a container registry (GHCR.io)\n* `git` and `docker` installed\n\n## Instructions\n\n1. Fork this repo, then clone it locally (from your fork).\n2. Run the `personalize.sh` to customize the manifests to use your GitHub\n   username and Argo CD destination:\n\n   ```shell\n   ./personalize.sh\n   ```\n3. `git commit` the personalized changes:\n\n   ```shell\n   git commit -a -m \"personalize manifests\"\n   git push\n   ```\n4. Create a guestbook container image repository in your GitHub account. \n\n   The easiest way to create a new ghcr.io image repository, is by retagging and\n   pushing an existing image with your GitHub username:\n\n   ```shell\n   docker buildx imagetools create \\\n     ghcr.io/akuity/guestbook:latest \\\n     -t ghcr.io/\u003cyourgithubusername\u003e/guestbook:v0.0.1\n   ```\n\n   You will now have a `guestbook` container image repository. e.g.:\n   https://github.com/yourgithubusername/guestbook/pkgs/container/guestbook\n\n5. Change guestbook container image repository to public.\n\n   In the GitHub UI, navigate to the \"guestbook\" container repository, Package \n   settings, and change the visibility of the package to public. This will allow\n   Kargo to monitor this repository for new images, without requiring you to\n   configuring Kargo with container image repository credentials.\n\n   ![change-package-visibility](docs/change-package-visibility.png)\n\n6. Download and install the latest CLI from [Kargo Releases](https://github.com/akuity/kargo/releases) and Argo CD:\n\n   ```shell\n   ./download-cli.sh /usr/local/bin/kargo\n   ```\n\n7. Login to Kargo and Argo CD:\n\n   ```shell\n   kargo login https://\u003ckargo-url\u003e --admin\n   argocd login \u003cargocd-hostname\u003e\n   ```\n\n8. Create the Argo CD `guestbook` Project and Applications\n\n   ```shell\n   argocd proj create -f ./argocd/appproj.yaml\n   argocd appset create ./argocd/appset.yaml\n   ```\n\n9. Create the Kargo resources\n\n   ```shell\n   kargo apply -f ./kargo\n   ```\n\n10. Add git repository credentials to Kargo (replace `\u003cyourgithubusername\u003e`\n    with your username).\n\n    ```shell\n    kargo create credentials github-creds \\\n      --project kargo-advanced \\\n      --git \\\n      --username \u003cyourgithubusername\u003e \\\n      --repo-url https://github.com/\u003cyourgithubusername\u003e/kargo-advanced.git\n    ```\n\n    As part of the promotion process, Kargo requires privileges to commit changes\n    to your Git repository. Ensure that the given token has these privileges.\n\n11. Promote the image!\n\n    You now have a Kargo Pipeline which promotes images from the guestbook\n    container image repository, through a multi-stage deploy pipeline.\n    Visit the`kargo-advanced` Project in the Kargo UI to see the deploy pipeline.\n\n    ![pipeline](docs/pipeline.png)\n\n    To promote, click the target icon to the left of the `dev` Stage, select the\n    detected Freight, and click `Yes` to promote. Once promoted, the freight will\n    be qualified to be promoted to downstream Stages (`staging`, `prod`).\n\n## Simulating a release\n\nTo simulate a release, simply retag an image with a newer semantic version. e.g.:\n\n```shell\ndocker buildx imagetools create \\\n  ghcr.io/akuity/guestbook:latest \\\n  -t ghcr.io/\u003cyourgithubusername\u003e/guestbook:v0.0.2\n```\n\nThen refresh the Warehouse in the UI to detect the new Freight.\n\n## Promoting Manifest Changes\n\nTo promote a manifest change, edit the contents under the [`base`](./base)\ndirectory. For example, you modify `guestbook-deploy.yaml` with an additional\nenvironment variable:\n\n```yaml\n        env:\n        - name: FOO\n          value: bar\n```\n\nKargo will promote the environment variable in the same manner as with image tags.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvojtechmares%2Fargocd-poc-kargo-advanced","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvojtechmares%2Fargocd-poc-kargo-advanced","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvojtechmares%2Fargocd-poc-kargo-advanced/lists"}