{"id":15517038,"url":"https://github.com/deric/capistrano-parcel","last_synced_at":"2025-06-20T15:36:03.269Z","repository":{"id":12158199,"uuid":"14752895","full_name":"deric/capistrano-parcel","owner":"deric","description":"Awesome tool for compiling at multiple machines and your dish washer at the same time! (if your dish washer has ssh access)","archived":false,"fork":false,"pushed_at":"2015-03-25T09:25:03.000Z","size":532,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T10:33:34.872Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/deric.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-27T16:47:50.000Z","updated_at":"2015-03-25T09:25:04.000Z","dependencies_parsed_at":"2022-09-23T04:40:38.828Z","dependency_job_id":null,"html_url":"https://github.com/deric/capistrano-parcel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/deric/capistrano-parcel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fcapistrano-parcel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fcapistrano-parcel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fcapistrano-parcel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fcapistrano-parcel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deric","download_url":"https://codeload.github.com/deric/capistrano-parcel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fcapistrano-parcel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260971561,"owners_count":23090749,"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-02T10:11:00.332Z","updated_at":"2025-06-20T15:35:58.254Z","avatar_url":"https://github.com/deric.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Capistrano::Parcel\n\nDistributed building tool, originally inspired by Python's Parcel, just written in Ruby and with many improvements. Parcel is taking advantage of [Capistrano 3](https://github.com/capistrano/capistrano), [SSHkit](https://github.com/capistrano/sshkit) and [FPM](https://github.com/jordansissel/fpm).\n\nThe idea is simple:\n\n  * we want to deploy native packages packed with all dependencies\n  * support multiple releases/distribution\n  * fast and reliable deployment\n  * updating N production servers with `git pull` + package dependencies doesn't scale well\n  * package should be tested before going to production\n\n\nProject structure looks like this:\n\n```\n├── lib\n├── config\n│   ├── deploy\n│   │   ├── build.rb\n│   │   ├── production.rb\n│   │   └── staging.rb\n│   └── deploy.rb\n├── Capfile\n├── Gemfile\n├── Gemfile.lock\n\n```\nIn `Capfile` we specify which plugins should be used during package making process.\n\nCapfile: (note: we're not using standard Capistrano `deploy` task)\n```ruby\n# Load DSL and Setup Up Stages\nrequire 'capistrano/setup'\nrequire 'capistrano/parcel'\n# build package with fpm\nrequire 'capistrano/parcel/fpm'\n```\n\nBasic scenario expects few categories of servers:\n\n  * build - for each distribution you can have one\n  * staging\n  * production\n\nFor each category you can you different settings (ssh keys, user account, etc.)\n\nThis will build package on remote server and transfer package back to your machnine (over `scp`)\n\n```\n$ cap build parcel\n```\n\n### Build process\n\nEach phase is a separate Rake task. You can use `before` and `after` hooks to execute any code before/after.\n\n 1. starting\n 2. updating\n 3. compiling\n 4. packaging\n 5. finishing\n\n\n### Rsync\n\nRsync is used for copying files to build server. This way we can easily copy a git repository with submodules.\n\nYou can control which files will be packaged with\n\n```ruby\nset :rsync_exclude, [ '.git', 'some-other-dir' ]\n```\n\n### Plugins\n\nPlugins are usually simple tasks that are executed in several steps during building process. Plugins can't rely on each other, rather use variables, that are accessible with `set(:var)` and for reading `fetch(:var)`.\n\nEach plugin can be enabled in `Capfile`:\n\n```ruby\nrequire 'capistrano/parcel/plugin_name'\n```\n\n#### fpm\n\nUsed for packaging whole directory as a deb package. Could be used also for RPM or other packages.\n\n#### uwsgi\n\nSimple application server configuration.\n\nEnable with:\n\n```ruby\nrequire 'capistrano/parcel/uwsgi'\n```\n\n#### nginx\n\nCurrently allows only intialization of nginx scripts.\n\nEnable with:\n\n```ruby\nrequire 'capistrano/parcel/nginx'\n```\n#### supervisor\n\n(experimental)\n\n#### virtualenv\n\n(experimental)\n\n\n### Package metadata\n\nMeta information about package is fetched from a `package.yml` file which must be located on local filesystem (in directory where is `cap` command executed).\n\n```yml\nversion: '0.0.1'\narch: 'all'\nlicense: 'MIT'\ncategory: 'misc'\nmaintainer: 'john.doe@example.com'\nvendor: 'Jon Doe et al.'\ndescription: 'Package description'\nurl: 'http://example.com'\n```\n\n\n## Installation\n\nrequirements:\n\n  * some version of Ruby (\u003e 1.8.7 is recommended)\n  * Bundler (`gem install bundler`)\n\nCreate a `Gemfile` with following content:\n\n```ruby\nsource 'https://rubygems.org'\n\ngem 'capistrano-parcel', github: 'deric/capistrano-parcel'\n```\n\nand run `bundle install`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderic%2Fcapistrano-parcel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderic%2Fcapistrano-parcel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderic%2Fcapistrano-parcel/lists"}