{"id":45480078,"url":"https://github.com/netpositive/ndeploy","last_synced_at":"2026-02-22T16:02:01.844Z","repository":{"id":9811167,"uuid":"11792948","full_name":"Netpositive/ndeploy","owner":"Netpositive","description":"nDeploy is a phing based deploy script for symfony2 and yii framework.","archived":false,"fork":false,"pushed_at":"2020-10-09T07:19:20.000Z","size":931,"stargazers_count":14,"open_issues_count":6,"forks_count":3,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-03-26T10:22:20.745Z","etag":null,"topics":["composer","deploy","phing","php","symfony","yii"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/Netpositive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-31T14:36:50.000Z","updated_at":"2024-03-26T10:22:20.746Z","dependencies_parsed_at":"2022-09-24T06:02:20.441Z","dependency_job_id":null,"html_url":"https://github.com/Netpositive/ndeploy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Netpositive/ndeploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netpositive%2Fndeploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netpositive%2Fndeploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netpositive%2Fndeploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netpositive%2Fndeploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Netpositive","download_url":"https://codeload.github.com/Netpositive/ndeploy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netpositive%2Fndeploy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29717883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"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":["composer","deploy","phing","php","symfony","yii"],"created_at":"2026-02-22T16:01:35.721Z","updated_at":"2026-02-22T16:02:01.834Z","avatar_url":"https://github.com/Netpositive.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nDeploy\n\nnDeploy is a phing based deploy script for php ecosystem, some idea borrowed from http://capifony.org.\nCurrently deploy can be started only from a server.\n\n## Basics\n\n### Currently supported frameworks:\n- Symfony 5\n- Symfony 3.x\n- Symfony 2.x [composer based]\n- Symfony 2.0.x [vendors based]\n- Symfony 1.4\n- Yii 1.1.x\n\n### Features:\n- releases support\n- composer support\n- shared file handling (symlink based)\n- maintenance mode ( http://shiftcommathree.com/articles/make-your-rails-maintenance-page-respond-with-a-503 )\n- adding VCS based hash to files\n- process locking\n\n## Setup\n\n### 1, Dependencies\n\n- Phing http://www.phing.info/ `e.g. apt-get install phing`\n- VersionControl_Git http://pear.php.net/package/VersionControl_Git `e.g. pear install VersionControl_Git-alpha`\n- Composer https://getcomposer.org/ (optional, for composer based deployments)\n\n### 2, Install\n\n```\ngit clone https://github.com/Netpositive/ndeploy.git\n```\n\n### 3, Init project\n\nRun command, for config you project:\n\n```\nphing -f /path/where/you/installed/ndeploy/build.xml -q\n```\n\nExample:\n\n```bash\nuser@dev:/srv/example.org$ phing -f /opt/ndeploy/build.xml  -q\n     [echo] Welcome to ndeploy build.properties skeleton generator!\nApplication name? example\nApplication basedir [/srv/example.org]?\nApplication framework (yii,symfony2,symfony,) []?\nReleases kept [100]?\nSCM type (git,svn) [git]?\nSCM repository? ssh://example@git.example.org/example.git\nShared files? vendor,app/config/parameters.yml,app/log.app/data\nVendor type(composer,sf2vendors,custom,none) [composer]?\nVendor command(install,update) [update]?\nndeploy lib [/opt/ndeploy/build.xml]?\n     [echo] Edit /srv/example.org/build.properties\n\nBUILD FINISHED\n\nTotal time: 9.8417 seconds\n```\n\n## Usage\n\nBuild xml is symlinked to the project directory, so you need to run only a phing command.\n\n```bash\nuser@dev:/srv/example.org$ phing\n```\n\nIf something goes wrong, phing can run with ```-verbose``` parameter.\n\n## build.properties examples\n\n### Symfony 2, composer based\n\n```\n;-- deploy basedir --\nbasedir=/srv/example.org\n\n;-- application --\napplication.name=example\napplication.framework=symfony2\napplication.repositorydir=/srv/example.org/src/example\napplication.deploydir=/srv/example.org/current\napplication.releasesdir=/srv/example.org/releases\napplication.releaseskept=20\n\n;-- scm properties --\nscm.type=git\nscm.repository=ssh://example@git.example.org/example.git\nscm.ref=tags/latest\n\n;-- shared files --\nshared.files=vendor,app/config/parameters.yml,app/log.app/data\n\n;-- vendor --\nvendor=composer\nvendor.command=update\n\n;-- maintenance --\nmaintenance=true\nmaintenance.source=app/Resources/maintenance.html\nmaintenance.destination=web/maintenance.html\nmaintenance.remove=true\n\n;-- hash --\nhash=true\nhash.file=app/config/parameters_assets.yml,app/config/parameters_assets_2.yml\n\n;-- lock --\nlock=true\nlock.file=/srv/example.org/releases/ndeploy-example.lock\n\n;-- ndpeloy build target's basedir --\nndeploy.basedir=~/src/ndeploy\n```\n\n### Symfony 2.0.x\n\nThe difference is the vendor=sf2vendors.\n\n```\n;-- deploy basedir --\nbasedir=/srv/example.org\n\n;-- application --\napplication.name=example\napplication.framework=symfony2\napplication.repositorydir=/srv/example.org/src/example\napplication.deploydir=/srv/example.org/current\napplication.releasesdir=/srv/example.org/releases\napplication.releaseskept=20\n\n;-- scm properties --\nscm.type=git\nscm.repository=ssh://example@git.example.org/example.git\nscm.ref=tags/latest\n\n;-- shared files --\nshared.files=vendor,app/config/parameters.yml,app/log.app/data\n\n;-- vendor --\nvendor=sf2vendors\nvendor.command=update\n\n;-- maintenance --\nmaintenance=true\nmaintenance.source=app/Resources/maintenance.html\nmaintenance.destination=web/maintenance.html\nmaintenance.remove=true\n\n;-- hash --\nhash=true\nhash.file=app/config/parameters_assets.yml,app/config/parameters_assets_2.yml\n\n;-- lock --\nlock=true\nlock.file=/srv/example.org/releases/ndeploy-example.lock\n\n;-- ndpeloy build target's basedir --\nndeploy.basedir=~/src/ndeploy\n```\n\n### Yii 1.x\n\n```\n;-- deploy basedir --\nbasedir=/srv/example.org\n\n;-- application --\napplication.name=example\napplication.framework=yii\napplication.repositorydir=/srv/example.org/src/example\napplication.deploydir=/srv/example.org/current\napplication.releasesdir=/srv/example.org/releases\napplication.releaseskept=20\n\n; -- shared files --\nshared.files=project/protected/runtime,project/www/backend/assets,project/www/frontend/assets,project/protected/config/local.php\n\n;-- vendor --\n;vendor=composer\n;vendor.command=update\n\n;-- maintenance --\nmaintenance=true\nmaintenance.source=app/Resources/maintenance.html\nmaintenance.destination=web/maintenance.html\nmaintenance.remove=true\n\n;-- hash --\n;hash=true\n;hash.file=\n\n;-- version --\n;version=true\n;version.file=\n\n;-- lock --\nlock=true\nlock.file=/srv/example.org/releases/ndeploy-example.lock\n\n;-- ndpeloy build target's basedir --\nndeploy.basedir=~/src/ndeploy\n```\n\n## Project specific build file\n\nYou can include your project specific build file, it will run at the end of the deploy process.\nFile name must be ndeploy.xml\n\n### ndeploy.xml hello world example\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c?xml-model href=\"/usr/share/php5/PEAR/data/phing/etc/phing-grammar.rng\" type=\"application/xml\" schematypens=\"http://relaxng.org/ns/structure/1.0\" ?\u003e\n\n\u003cproject name=\"project.example\" default=\"project.example.init\"\u003e\n\n    \u003ctarget name=\"project.example.init\"\u003e\n        \u003cphingcall target=\"project.example.helloworld\" /\u003e\n    \u003c/target\u003e\n\n    \u003ctarget name=\"project.example.helloworld\"\u003e\n        \u003cecho msg=\"Hello world!\" level=\"warning\" /\u003e\n        \u003c!-- Variables like ${basedir}, ${application.name} can be used --\u003e\n    \u003c/target\u003e\n\n\u003c/project\u003e\n```\n\n## Project specific deploy tasks order\n\nYou can override the deploy tasks order.\n\n### build.properties examples\n\n```\n\u003c!-- application tasks run order --\u003e\napplication.run.pre=ndeploy.base.application.pre,ndeploy.scm.init,ndeploy.base.release.clean\napplication.run.init=ndeploy.base.shared,ndeploy.maintenance.init\napplication.run.release=ndeploy.base.release\napplication.run.after=ndeploy.vendor.init,ndeploy.framework.init,ndeploy.base.application,ndeploy.maintenance.remove,ndeploy.base.application.post\n```\n\n## Development (of this tool)\n\nThe easiest way is to start a docker container and mount the ndeploy source into it.\n\n```\ndocker run --name ndpeloy-test --rm -it -v \"$PWD\":/opt/ndeploy -w /tmp debian bash\n```\n\nInstall the required dependencies, then you're ready to play around with ndeploy.\n```\napt-get update \u0026\u0026 apt-get install -y phing\nphing -f /opt/ndeploy/build.xml -q\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetpositive%2Fndeploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetpositive%2Fndeploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetpositive%2Fndeploy/lists"}