{"id":13840367,"url":"https://github.com/target/winnaker","last_synced_at":"2025-07-11T07:33:26.066Z","repository":{"id":48119895,"uuid":"68241019","full_name":"target/winnaker","owner":"target","description":"An audit tool that tests the whole system functionality of Spinnaker","archived":true,"fork":false,"pushed_at":"2021-08-05T18:40:15.000Z","size":62,"stargazers_count":33,"open_issues_count":0,"forks_count":13,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-08-05T17:25:00.262Z","etag":null,"topics":["spinnaker"],"latest_commit_sha":null,"homepage":null,"language":"Python","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/target.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-14T20:32:41.000Z","updated_at":"2024-01-17T21:47:04.000Z","dependencies_parsed_at":"2022-08-12T19:00:56.756Z","dependency_job_id":null,"html_url":"https://github.com/target/winnaker","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/target%2Fwinnaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/target%2Fwinnaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/target%2Fwinnaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/target%2Fwinnaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/target","download_url":"https://codeload.github.com/target/winnaker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225705383,"owners_count":17511285,"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":["spinnaker"],"created_at":"2024-08-04T17:00:46.566Z","updated_at":"2024-11-21T09:31:24.183Z","avatar_url":"https://github.com/target.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":["Tutorials"],"readme":"## Winnaker\n[![](https://images.microbadger.com/badges/image/medyagh/winnaker.svg)](https://microbadger.com/images/medyagh/winnaker \"Get your own image badge on microbadger.com\")\n\n\n```\n____    __    ____  __  .__   __. .__   __.      ___       __  ___  _______ .______\n\\   \\  /  \\  /   / |  | |  \\ |  | |  \\ |  |     /   \\     |  |/  / |   ____||   _  \\\n \\   \\/    \\/   /  |  | |   \\|  | |   \\|  |    /  ^  \\    |  '  /  |  |__   |  |_)  |\n  \\            /   |  | |  . `  | |  . `  |   /  /_\\  \\   |    \u003c   |   __|  |      /\n   \\    /\\    /    |  | |  |\\   | |  |\\   |  /  _____  \\  |  .  \\  |  |____ |  |\\  \\----.\n    \\__/  \\__/     |__| |__| \\__| |__| \\__| /__/     \\__\\ |__|\\__\\ |_______|| _| `._____|\n\n\n```\n\n## Archive notice\n\nIn August of 2021, this project was archived. \n\n## What is Winnaker?\nWinnaker is an auditing tool for Spinnaker. Real testing in a real browser!\n\n## What do you need on your work station?\n1. python 2.7\n2. a copy of [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/home) in your PATH\n\n## What do you need in your system under test?\n1. a spinnaker url\n2. a sample app\n3. a sample pipeline\n\n## Run headlessly in Docker\n1. Build Docker:\n\n\n\t```\n\tdocker build -t winnaker .\n\t```\n\n\n\n2. Config : copy the sample env file and edit it.\n\n\n\t```\n\tcp winnaker/.env-sample .env\n\n\t```\n\n3. Run :\n\t```\n\tdocker run --env-file .env -it -v $(pwd)/winnaker-screenshots:/winnaker-screenshots/ winnaker\n\t```\n\n4. Add [options](#options) as needed.\n\n\n## Run GUI mode\n\n1. run\n```\n./run.sh\n```\n1. Add [options](#options) as needed.\n\n\n\n## What does the default run do?\n- Logs in to `spinnaker` through chromium browser\n- Searches for `sampleapp` app\n- Searches for `samplepipeline` the pipeline\n- Gets the last build status\n- Generates screenshot :\n\t- `./applications.png`\n\t- `./pipelines.png`\n\t- `./last_build_status.png`\n\t- `./login.png`\n\t- `./stage1.png`\n- Any error will result in a non-zero code to the system.\n- Error screenshots will be timestamped.\n\n\n## Screenshots\n\n- screenshot folder by default is winnaker-screenshots\n\n\n## Options\nThe config file is located at ./src/config.sh but you can simply add any of the options below to your run.sh command.\n\n```\noptional arguments:\n  -h, --help            show this help message and exit\n  -s, --start           starts manual execution of the pipeline\n  -fb, --forcebake      force bake, to be used wth --start\n  -a APP, --app APP     the name of application to look for\n  -p PIPELINE, --pipeline PIPELINE\n                        the name of pipeline to test\n  -nl, --nologin        will not attempt to login\n  -hl, --headless       will run in an xvfb display\n```\n\n\n## Examples:\n##### Example 1: Gets the last build status of the default pipeline\n`./run.sh`\n\n\n##### Example 2: Starts default pipeline execution\n\n`./run.sh -s`\n\n##### Example 3: Start the pipeline with force rebake\n\n`./run.sh -s -fb`\n\n##### Example 4: Start build execution on different pipeline than config file\n\n`./run.sh -s -p \"deploy to npe\"`\n\n##### Example 5: override default app specified in the config file\n\nuse with --caution--, will override the sample app.\n\n`./run.sh -a \"differentapp\" -p \"different pipeline\"`\n\n\n## How tos\n\n\n\n#### How to setup a Winnaker Hipchat bot\n- create a hipchat bot\n- grab the post url\nit should look like\n`https://INSERT_HIPCHAT_BASE_URL.com/v2/room/INSERT_ROOM_ID/notification?auth_token=INSERT_TOKEN`\n\n\n#### How to import the Winnaker python package\n- `pip install git+git://github.com/target/winnaker`\n- Then in your python script you can import the Winnaker modules. For example you can import the `models` module via `from winnaker import models`\n\n#### How to deploy to minikube\n- Start minikube\n\n\t```\n\tminikube start\n\t```\n\n- Activate minikube docker in your bash\n\n\t```\n\teval $(minikube docker-env)\n\t```\n- build docker\n\n\t```\n\tmake build-docker-nocache\n\t```\n- Fill out secret and configmaps and change default 5 minute cronjob to your needs. (edit configmap and secret inside kube folder)\n\n- apply kube files\n\n\t```\n\tkubectl apply -f kube\n\t```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarget%2Fwinnaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftarget%2Fwinnaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarget%2Fwinnaker/lists"}