{"id":18044822,"url":"https://github.com/will/incdeploy_webx","last_synced_at":"2025-04-05T03:27:08.877Z","repository":{"id":66425546,"uuid":"11751298","full_name":"will/incdeploy_webx","owner":"will","description":null,"archived":false,"fork":false,"pushed_at":"2013-07-29T23:10:56.000Z","size":108,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-10T11:45:41.682Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/will.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}},"created_at":"2013-07-29T22:34:40.000Z","updated_at":"2018-03-06T17:27:06.000Z","dependencies_parsed_at":"2023-02-20T04:00:52.600Z","dependency_job_id":null,"html_url":"https://github.com/will/incdeploy_webx","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/will%2Fincdeploy_webx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/will%2Fincdeploy_webx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/will%2Fincdeploy_webx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/will%2Fincdeploy_webx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/will","download_url":"https://codeload.github.com/will/incdeploy_webx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284927,"owners_count":20913689,"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-10-30T18:10:54.307Z","updated_at":"2025-04-05T03:27:08.831Z","avatar_url":"https://github.com/will.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Incremental Deploys on Heroku with WEBX\n\nI have this app, with these releases:\n\n    ➤ h releases\n    === incdeploy Releases\n    v7  Deploy 82b7eff        will@heroku.com  2013/07/29 13:37:59 (~ 10m ago)\n    v6  Deploy 51309c4        will@heroku.com  2013/07/29 13:23:32 (~ 24m ago)\n\n    ➤ git lg\n    * 82b7eff - (HEAD, heroku/master, master) purple (12 minutes ago) \u003cWill Leinweber\u003e\n    * 51309c4 - blue (26 minutes ago) \u003cWill Leinweber\u003e\n\nThat's all fine and dandy, but I'd really like to try out that `v7` release with various proportions of my traffic, before calling it shipped. **Now I can**.\n\n### Half traffic from one release, half from the other\n\n    ➤ h run --version 6 'bundle exec rackup -p $PORT'\n    ➤ h run --version 7 'bundle exec rackup -p $PORT'\n\n    ➤ for run in {1..100}; do curl -s incdeploy.webxapp.io; echo; done | sort | uniq -c\n      49 \u003ch1 style=\"color:blue\"\u003eBLUE\u003c/h1\u003e\n      51 \u003ch1 style=\"color:purple\"\u003ePURPLE\u003c/h1\u003e\n\n### 1/3 traffic from one release, 2/3 from the other\n\n    ➤ h run --version 6 'bundle exec rackup -p $PORT'\n    ➤ h run --version 7 'bundle exec rackup -p $PORT'\n    ➤ h run --version 7 'bundle exec rackup -p $PORT'\n\n    ➤ for run in {1..100}; do curl -s incdeploy.webxapp.io; echo; done | sort | uniq -c\n      33 \u003ch1 style=\"color:blue\"\u003eBLUE\u003c/h1\u003e\n      67 \u003ch1 style=\"color:purple\"\u003ePURPLE\u003c/h1\u003e\n\n\n### 1/4 traffic from one release, 3/4 from the other\n\n    ➤ h ps -a incdeploy\n    === run: one-off processes\n    run.1221: v6 up 2013/07/29 13:40:20 (~ 22m ago): `bundle exec rackup -p $PORT`\n    run.2943: v7 up 2013/07/29 14:02:39 (~ 11s ago): `bundle exec rackup -p $PORT`\n    run.5199: v7 up 2013/07/29 13:58:43 (~ 4m ago): `bundle exec rackup -p $PORT`\n    run.8352: v7 up 2013/07/29 13:40:58 (~ 21m ago): `bundle exec rackup -p $PORT`\n\n    ➤ for run in {1..100}; do curl -s incdeploy.webxapp.io; echo; done | sort | uniq -c\n      27 \u003ch1 style=\"color:blue\"\u003eBLUE\u003c/h1\u003e\n      73 \u003ch1 style=\"color:purple\"\u003ePURPLE\u003c/h1\u003e\n\n### Ok new release looking good, let's go with it 100%\n\n    ➤ h ps:stop run.1221 -a incdeploy\n    Stopping run.1221 dyno... done\n    ➤ h ps -a incdeploy\n    === run: one-off processes\n    run.2943: v7 up 2013/07/29 14:02:39 (~ 3m ago): `bundle exec rackup -p $PORT`\n    run.5199: v7 up 2013/07/29 13:58:43 (~ 7m ago): `bundle exec rackup -p $PORT`\n    run.8352: v7 up 2013/07/29 13:40:57 (~ 25m ago): `bundle exec rackup -p $PORT`\n\n    ➤ for run in {1..100}; do curl -s incdeploy.webxapp.io; echo; done | sort | uniq -c\n      100 \u003ch1 style=\"color:purple\"\u003ePURPLE\u003c/h1\u003e\n\n## Serve some traffic from EU, and auto failover to EU\n\n    ➤ h run:detached --version 5 'bundle exec rackup -p $PORT' -a incdeploy-eu\n    ➤ for run in {1..100}; do curl -s incdeploy.webxapp.io; echo; done | sort | uniq -c\n      49 \u003ch1 style=\"color:blue\"\u003eBLUE\u003c/h1\u003e\n      15 \u003ch1 style=\"color:purple\"\u003ePURPLE-eu\u003c/h1\u003e\n      36 \u003ch1 style=\"color:purple\"\u003ePURPLE\u003c/h1\u003e\n\n**OH NO US-EAST OUTAGE**\n\n     ➤ h stop run -a incdeploy\n     Stopping run dynos... done\n     ➤ for run in {1..100}; do curl -s incdeploy.webxapp.io; echo; done | sort | uniq -c\n       100 \u003ch1 style=\"color:purple\"\u003ePURPLE-eu\u003c/h1\u003e\n\n## Summary\n\nNot using web dynos, and having instead having run dynos connect out to a router is pretty sweet.\n\n### Prior Art\n* [webx](https://github.com/kr/webx)\n* [sticky releases](https://github.com/heroku/heroku-sticky-releases)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwill%2Fincdeploy_webx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwill%2Fincdeploy_webx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwill%2Fincdeploy_webx/lists"}