{"id":19078350,"url":"https://github.com/kickstarter/egads","last_synced_at":"2025-04-15T03:54:14.892Z","repository":{"id":6359969,"uuid":"7597040","full_name":"kickstarter/egads","owner":"kickstarter","description":"Extensible Git Archive Deploy Strategy","archived":false,"fork":false,"pushed_at":"2024-09-09T18:08:08.000Z","size":148,"stargazers_count":11,"open_issues_count":2,"forks_count":1,"subscribers_count":135,"default_branch":"main","last_synced_at":"2025-04-15T03:54:09.397Z","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/kickstarter.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}},"created_at":"2013-01-14T02:17:04.000Z","updated_at":"2024-09-09T18:07:36.000Z","dependencies_parsed_at":"2022-09-13T00:14:26.400Z","dependency_job_id":"9294d719-dbc2-4fc0-9b00-ce7116dde515","html_url":"https://github.com/kickstarter/egads","commit_stats":{"total_commits":143,"total_committers":7,"mean_commits":"20.428571428571427","dds":0.07692307692307687,"last_synced_commit":"432179a97228da55733f1045af1ce8ae8e46571f"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kickstarter%2Fegads","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kickstarter%2Fegads/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kickstarter%2Fegads/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kickstarter%2Fegads/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kickstarter","download_url":"https://codeload.github.com/kickstarter/egads/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249003955,"owners_count":21196794,"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-11-09T02:08:34.468Z","updated_at":"2025-04-15T03:54:14.873Z","avatar_url":"https://github.com/kickstarter.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# egads!!!\n# *Extensible Git-Archive Deploy Strategy*\n\n[![Test and Release](https://github.com/kickstarter/egads/actions/workflows/test-release.yml/badge.svg)](https://github.com/kickstarter/egads/actions/workflows/test-release.yml)\n\negads is a set of commands for deploying applications without depending on a git\nserver.\n\n[![Build\nStatus](https://travis-ci.org/kickstarter/egads.svg)](https://travis-ci.org/kickstarter/egads)\n[![Code\nClimate](https://d3s6mut3hikguw.cloudfront.net/github/kickstarter/egads.svg)](https://codeclimate.com/github/kickstarter/egads)\n\n## Install\n\nPut `egads` in your Gemfile:\n\n```ruby\n# ./Gemfile\ngem 'egads', require: nil\n```\n\nOn remote machines (to which you deploy), `egads` must be in your PATH.\nSo install `egads` as a system gem:\n\n```bash\ngem install egads\n```\n\n## Commands\n\nSee `egads -h` for the most robust \u0026 up-to-date info. Here's a whirlwind tour.\n\nEgads has two types of commands. *Local* commands run on your development machine or continuous integration environment. *Remote* commands run on deployed servers.\n\nCommands are either *porcelain* commands that you should call directly as part of a typical workflow; or *plumbing* commands that are invoked by porcelain commands, and rarely invoked directly.\n\n### Local commands\n\n* `egads check SHA` - checks if a deployable tarball of the current commit exists on S3.\n* `egads build SHA` - makes a deployable tarball of the current commit and upload it to S3 (if missing).\n* `egads upload SHA` - (plumbing, called by `build`) Uploads a pre-built tarball.\n\n### Remote commands\n\n* `egads stage SHA` - Prepares an extracted tarball for release: runs bundler, copies config files, etc.\n* `egads release SHA` - Symlinks a staged release to current, restarts services\n* `egads extract SHA` - (plumbing, called by `stage`) Downloads and untars a tarball from S3.\n* `egads clean` - (plumbing, called by `release`) Deletes old releases to free space.\n\n## Configuration\n\nThere are two config files:\n\n* `egads.yml` ([example](example/egads.yml)) is in your git repo and tarballs. It has instructions for building, staging, and releasing tarballs.\n* `/etc/egads.yml` ([example](example/egads_remote.yml)) on remote servers has some configuration for downloading and extracting tarballs from S3; and some environment variables that could vary across environments. This file is presumably provisioned by a tool like Chef or Puppet.\n\n## Deploy process\n\nThe deploy process is:\n\n* Run `egads build` from a server with a full git checkout (e.g. your local machine). This ensures there's a tarball for the remote servers to download.\n* Run `egads stage SHA` on all the remote servers to download, extract, and configure the SHA for release.\n* Run `egads release SHA` on all the remote servers to symlink the staged SHA to 'current', and restart services.\n\n## Publishing a New Gem Version\n\nTo publish a new version of `egads`:\n\n1. Update [`Egads::VERSION`](./lib/egads/version.rb)\n2. Commit and push to GitHub\n3. Create a new [GitHub release](https://github.com/kickstarter/egads/releases)\n4. Monitor the [Test and Release](https://github.com/kickstarter/egads/actions/workflows/test-release.yml) action to ensure the gem is published successfully\n\n## License\n\nCopyright (c) 2013 Kickstarter, Inc\n\nReleased under an [MIT License](http://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkickstarter%2Fegads","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkickstarter%2Fegads","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkickstarter%2Fegads/lists"}