{"id":36549352,"url":"https://github.com/codilime/floodgate","last_synced_at":"2026-01-12T06:30:44.353Z","repository":{"id":53082922,"uuid":"241601238","full_name":"codilime/floodgate","owner":"codilime","description":"Floodgate - Pipelines as Code solution for Spinnaker","archived":false,"fork":false,"pushed_at":"2021-04-07T13:32:07.000Z","size":574,"stargazers_count":16,"open_issues_count":11,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-06-19T01:50:16.282Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/codilime.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-02-19T11:08:54.000Z","updated_at":"2024-04-25T15:14:57.000Z","dependencies_parsed_at":"2022-09-07T16:41:41.587Z","dependency_job_id":null,"html_url":"https://github.com/codilime/floodgate","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/codilime/floodgate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codilime%2Ffloodgate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codilime%2Ffloodgate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codilime%2Ffloodgate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codilime%2Ffloodgate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codilime","download_url":"https://codeload.github.com/codilime/floodgate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codilime%2Ffloodgate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28336316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-12T06:30:43.390Z","updated_at":"2026-01-12T06:30:44.336Z","avatar_url":"https://github.com/codilime.png","language":"Go","readme":"![Floodgate logo](images/Floodgate-logo.png)\n\n# Floodgate\n\n[![codilime/floodgate](https://circleci.com/gh/codilime/floodgate/tree/master.svg?style=svg)](https://app.circleci.com/pipelines/github/codilime/floodgate)\n[![SeriesCI](https://seriesci.com/codilime/floodgate/series/master/coverage.svg)](https://seriesci.com/codilime/floodgate/series/master/coverage)\n\n## Motivation\n\nThis project integrates multiple parts of \"as-code\" experience in Spinnaker, e.g. API, Sponnet, Pipeline Templates for a complete GitOps workflow. \n\n## Features\n\n- [x] Allows creating configuration of applications, pipeline templates and pipelines as file types:\n  - [x] JSONNET\n  - [x] JSON\n  - [x] YAML\n- [x] Updates only the parts of Spinnaker configuration that have actually changed\n- [x] Reports diffs in managed objects \n- [x] Works with all currently supported versions of Spinnaker\n- [x] Is well suited to run in a CI system (single binary!)\n\n## Upcoming features\n\n- [ ] Run as a microservice within Spinnaker installation for seamless integration\n\n## Build process\n\nThis repository contains a \"known-working\" version of `gate-swagger.json` file, which is a definition of Gate's API, used to generate client code in go using `swagger-codegen`.\n\nCircleCI process uses the `swagger-codegen-cli` JAR file to generate the API client at build time.\n\nAs a developer, you can use `generate_swaggerapi.sh` script, which will use Docker to generate go client code for Gate API in the `gateapi` directory. For example:\n\n```\n./generate_swaggerapi.sh gate-swagger.json\n* Using swagger-codegen-cli 2.4.12\n2.4.12: Pulling from swaggerapi/swagger-codegen-cli\ne7c96db7181b: Already exists\nf910a506b6cb: Already exists\nb6abafe80f63: Already exists\n36ebbdce0651: Pull complete\nDigest: sha256:fc24e10784390e27fae893a57da7353d695e641920f3eb58f706ee54af92ebed\nStatus: Downloaded newer image for swaggerapi/swagger-codegen-cli:2.4.12\ndocker.io/swaggerapi/swagger-codegen-cli:2.4.12\n* Cleaning up gateapi directory\n* Generating new gateapi code using gate-swagger.json file...\n[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/gate-swagger.json\n[...]\n```\n\n**Note:** This will remove current contents of `gateapi` directory!\n\nYou can also obtain the same using raw java file, like in CI:\n\n```\n$ SWAGGER_VERSION=$(cat gateapi/.swagger-codegen/VERSION)\n$ wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/${SWAGGER_VERSION}/swagger-codegen-cli-${SWAGGER_VERSION}.jar -O /tmp/swagger-codegen-cli.jar\n$ rm -r gateapi\n$ java -jar /tmp/swagger-codegen-cli.jar generate -l go -i gate-swagger.json -o gateapi\n```\n\n**Note:** This will remove current contents of `gateapi` directory!\n\n## How to run?\n\nFirst, make sure you have some version of Spinnaker running.\n\nDownload proper binary from [releases page](https://github.com/codilime/floodgate/releases).\n\n**Note:** You should download proper binary for your Spinnaker version (gate part in binary name).\n\nCreate a `config.yaml` file. An example one can be found in [examples/config.yaml](https://raw.githubusercontent.com/codilime/floodgate/master/examples/config.yaml).\nFloodgate checks if a config file is present in:\n```bash\n$HOME/.config/floodgate/config.yaml\n```\nYou can also specify a path to the config file using the `--config` flag.\n\nAdditionally, you can find example resources in the `examples/resources` directory.\n\n**Note:** To allow Floodgate to control pipeline templates apply those commands to your environment:\n```bash\nhal config features edit --pipeline-templates true\nhal deploy apply\n```\n\n**Note:** To view pipeline templates in the UI use:\n```bash\nhal config features edit --managed-pipeline-templates-v2-ui true\nhal deploy apply\n```\n\n**Note:** To configure OAuth2 authentication, you need to set callback url in your app to:\n```\nhttp://localhost:8085/callback\n```\n\n## How to use?\n\n`floodgate` has a simple to use CLI:\n```bash\n$ floodgate\nUsage:\n   [command]\n\nAvailable Commands:\n  compare     Compare local resources' definitions with Spinnaker and show discrepancies\n  help        Help about any command\n  hydrate     Hydrate pipeline templates with configurations and preview the result\n  inspect     Inspect resources' status on Spinnaker\n  render      Render Jsonnet files\n  synchronize Synchronize resources to Spinnaker\n\nFlags:\n      --config string   path to config file (default $HOME/.config/floodgate/config.yaml)\n  -h, --help            help for this command\n  -q, --quiet           hide non-essential output\n  -v, --verbose         show extended output\n      --version         version for this command\n\nUse \" [command] --help\" for more information about a command.\n```\n\nJSON comparison is achieved using an external library. For full output specification please check https://github.com/josephburnett/jd#diff-language\n\nSimple example:\n\na.json:\n`{\"hungry\":\"true\", \"pizza\":{\"eat\":\"true\",\"like\":\"true\"},\"pasta\":{\"eat\":\"true\",\"like\":\"false\"}}`\n\nb.json:\n`{\"hungry\":\"false\", \"pizza\":{\"eat\":\"true\",\"like\":\"true\"},\"pasta\":{\"eat\":\"false\",\"like\":\"true\"}}`\n\nDifference between a.json and b.json:\n```\n@ [\"hungry\"]\n- \"true\"\n+ \"false\"\n@ [\"pasta\",\"eat\"]\n- \"true\"\n+ \"false\"\n@ [\"pasta\",\"like\"]\n- \"false\"\n+ \"true\"\n```\n\n## Using JSONNET\n\nFiles that have a `.jsonnet` file extention will be evaluated as JSONNET files. Output of each file should be either a single object or an array of objects.\n\n## License\n\nFloodgate is licensed under Apache 2.0 License, following other Spinnaker's components.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodilime%2Ffloodgate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodilime%2Ffloodgate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodilime%2Ffloodgate/lists"}