{"id":20095820,"url":"https://github.com/pr00xxy/shipper","last_synced_at":"2026-04-29T01:02:40.637Z","repository":{"id":176189071,"uuid":"161091222","full_name":"Pr00xxy/shipper","owner":"Pr00xxy","description":"extendable, pluggable, atomic deployment script written in python","archived":false,"fork":false,"pushed_at":"2020-09-14T17:24:42.000Z","size":56,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T00:42:46.393Z","etag":null,"topics":["delivery","deployment","magento","magento2","python3","revision","website-deploy","wordpress"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"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/Pr00xxy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2018-12-09T23:27:38.000Z","updated_at":"2020-08-27T18:47:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"d7d7968c-d84c-47db-869e-762a8103e7c5","html_url":"https://github.com/Pr00xxy/shipper","commit_stats":null,"previous_names":["pr00xxy/shipper"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Pr00xxy/shipper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pr00xxy%2Fshipper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pr00xxy%2Fshipper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pr00xxy%2Fshipper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pr00xxy%2Fshipper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pr00xxy","download_url":"https://codeload.github.com/Pr00xxy/shipper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pr00xxy%2Fshipper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32405904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: 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":["delivery","deployment","magento","magento2","python3","revision","website-deploy","wordpress"],"created_at":"2024-11-13T16:56:34.750Z","updated_at":"2026-04-29T01:02:40.617Z","avatar_url":"https://github.com/Pr00xxy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shipper\n\nThis project is based on the concept of atomic deployments with emphasising scalability and modularity.\nShipper does nothing except creating and maintaining the atomic deployment structure.\nAny implementation or custom integrations are done by you with the use of plugins\n\nShipper was built to be run on Linux.\n\n## Requirements\n\n- python3\n\n### Options\n\n- `--revision` string of whatever you want the revision directory name to be\n- `--deploy-dir` path to where Shipper should work. (default: where it's executed)\n- `--deploy-cache-dir` location of you soon to be latest release (default: `cache` within `deploy-dir`)\n- `--revisions-to-keep` number of old revisions to keep in addition to the current revision (default: `5`)\n- `--symlinks`\n    This can either be a JSON hash of symlinks or\n    the filepath to a file containing json data\n- `--help` prints help and usage instructions\n- `--plugin-file` path to plugin file\n- `--plugin-json` json hash that will be passed to the plugin\n\n#### Plugins\n\nPlugins are user made modules that can be hooked into the code at will.\n\nTo define a new plugin one must create a json file and pass it to shipper with\n`--plugin`\u001c\nPlugins are executed by dispatching events in the shipper code.\nLooking inside the `Shipper.run()` we can find plugin dispatchers such as:\n\n    self.dispatchEvent('before:initDirectories', pluginPath)\n\nTo add plugin to this event one must add the following structure to `plugin.json`:\n\n    {\n        \"action\": {\n            \"before:initDirectories\": {\n                \"execute\": [\n                    \"plugin.module_name.class_name.function_name\"\n                ]\n            }\n        }\n    }\nAll events are objects in `action`\nThe `execute` directive tells Shipper what to execute and in what order.\nIn the example above Shipper will try to include `module_name` in the folder `plugin` and from that import `class_name` and then execute `function_name`\n\nwhen instantiating the plugin class the `Shipper` class will be passed to the plugin class as the single argument, making Shipper available to the plugin class's functions.\n\nMultiple instructions can be added to the `execute` array. They will be executed in ASC order\n\n#### Symlinks\n\nSymlinks are specified as `{\"source\":\"link\"}` and passed to the shipper script using the `--symlinks` parameter\n\n- `source` is relative to the `--deploy-dir` path\n- `link` is relative to the revision path\n\nSymlinks can be specified as strings or as the path to json file containing the json hash.\n\n**NOTE!** Files and directories that exist at the link location will be removed without notice.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpr00xxy%2Fshipper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpr00xxy%2Fshipper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpr00xxy%2Fshipper/lists"}