From 61314b16a776da3ba332ee0390e999a361431e52 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 20:16:58 +0000 Subject: [PATCH] Deployer 7.2.1 --- .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/bug_report.md | 11 - .github/ISSUE_TEMPLATE/config.yml | 8 - .github/ISSUE_TEMPLATE/feature_request.md | 7 - .github/PULL_REQUEST_TEMPLATE.md | 8 - .github/workflows/check.yml | 62 - .github/workflows/docs.yml | 44 - .github/workflows/release.yml | 69 - .github/workflows/sync.yml | 46 - .github/workflows/test.yml | 75 - bin/build | 92 - bin/dep | 97 - bin/docgen | 56 - composer.json | 96 +- composer.lock | 4819 ----------------- dep | Bin 0 -> 781180 bytes deploy.yaml | 21 - docs/KNOWN_BUGS.md | 59 - docs/UPGRADE.md | 255 - docs/api.md | 565 -- docs/avoid-php-fpm-reloading.md | 54 - docs/basics.md | 234 - docs/ci-cd.md | 99 - docs/cli.md | 147 - docs/contrib/README.md | 33 - docs/contrib/bugsnag.md | 41 - docs/contrib/cachetool.md | 138 - docs/contrib/chatwork.md | 205 - docs/contrib/cimonitor.md | 223 - docs/contrib/cloudflare.md | 43 - docs/contrib/cpanel.md | 175 - docs/contrib/crontab.md | 65 - docs/contrib/directadmin.md | 83 - docs/contrib/discord.md | 160 - docs/contrib/grafana.md | 55 - docs/contrib/hangouts.md | 130 - docs/contrib/hipchat.md | 85 - docs/contrib/ispmanager.md | 245 - docs/contrib/mattermost.md | 206 - docs/contrib/ms-teams.md | 183 - docs/contrib/newrelic.md | 84 - docs/contrib/npm.md | 52 - docs/contrib/phinx.md | 118 - docs/contrib/php-fpm.md | 75 - docs/contrib/rabbit.md | 73 - docs/contrib/raygun.md | 45 - docs/contrib/rocketchat.md | 230 - docs/contrib/rollbar.md | 56 - docs/contrib/rsync.md | 233 - docs/contrib/sentry.md | 70 - docs/contrib/slack.md | 219 - docs/contrib/telegram.md | 155 - docs/contrib/webpack_encore.md | 67 - docs/contrib/workplace.md | 145 - docs/contrib/yammer.md | 140 - docs/contrib/yarn.md | 47 - docs/getting-started.md | 172 - docs/hosts.md | 189 - docs/installation.md | 31 - docs/recipe/README.md | 28 - docs/recipe/cakephp.md | 116 - docs/recipe/codeigniter.md | 90 - docs/recipe/common.md | 251 - docs/recipe/composer.md | 32 - docs/recipe/contao.md | 166 - docs/recipe/craftcms.md | 126 - docs/recipe/deploy/check_remote.md | 25 - docs/recipe/deploy/cleanup.md | 35 - docs/recipe/deploy/clear_paths.md | 42 - docs/recipe/deploy/copy_dirs.md | 33 - docs/recipe/deploy/info.md | 24 - docs/recipe/deploy/lock.md | 40 - docs/recipe/deploy/push.md | 26 - docs/recipe/deploy/release.md | 111 - docs/recipe/deploy/rollback.md | 54 - docs/recipe/deploy/setup.md | 24 - docs/recipe/deploy/shared.md | 47 - docs/recipe/deploy/symlink.md | 35 - docs/recipe/deploy/update_code.md | 90 - docs/recipe/deploy/vendors.md | 58 - docs/recipe/deploy/writable.md | 102 - docs/recipe/drupal7.md | 132 - docs/recipe/drupal8.md | 117 - docs/recipe/flow_framework.md | 122 - docs/recipe/fuelphp.md | 80 - docs/recipe/joomla.md | 100 - docs/recipe/laravel.md | 475 -- docs/recipe/magento.md | 118 - docs/recipe/magento2.md | 486 -- docs/recipe/pimcore.md | 89 - docs/recipe/prestashop.md | 127 - docs/recipe/provision.md | 160 - docs/recipe/provision/databases.md | 90 - docs/recipe/provision/nodejs.md | 35 - docs/recipe/provision/php.md | 51 - docs/recipe/provision/website.md | 61 - docs/recipe/shopware.md | 267 - docs/recipe/silverstripe.md | 136 - docs/recipe/statamic.md | 222 - docs/recipe/sulu.md | 87 - docs/recipe/symfony.md | 183 - docs/recipe/typo3.md | 123 - docs/recipe/wordpress.md | 100 - docs/recipe/yii.md | 90 - docs/recipe/zend_framework.md | 65 - docs/selector.md | 178 - docs/sidebar.js | 19 - docs/tasks.md | 135 - docs/yaml.md | 31 - phpcs.xml | 33 - phpstan.neon | 15 - phpunit.xml | 24 - tests/bootstrap.php | 40 - tests/docker/Dockerfile | 102 - tests/docker/README.md | 88 - tests/docker/conf/10-coverage.ini | 2 - tests/docker/conf/healthcheck.conf | 32 - tests/docker/docker-compose.yml | 48 - tests/docker/initial-site/public/index.html | 5 - tests/docker/scripts/install-composer.sh | 18 - .../coverage-start-wrapper.php | 5 - tests/docker/scripts/start-servers.sh | 8 - tests/e2e/AbstractE2ETest.php | 17 - tests/e2e/ConsoleApplicationTester.php | 147 - tests/e2e/FunctionsE2ETest.php | 24 - tests/e2e/LaravelBoilerplateE2ETest.php | 37 - tests/e2e/MiscE2ETest.php | 45 - tests/e2e/SymfonyBoilerplateE2ETest.php | 0 tests/e2e/TimeoutsE2ETest.php | 25 - tests/e2e/bootstrap.php | 14 - tests/e2e/coverage/coverage-report.php | 40 - tests/e2e/coverage/coverage-start.php | 60 - tests/e2e/coverage/start-e2e-test.sh | 12 - tests/e2e/phpunit-e2e.xml | 8 - tests/e2e/recipe/functions.php | 14 - tests/e2e/recipe/hosts.php | 13 - tests/e2e/recipe/laravel-boilerplate.php | 29 - tests/e2e/recipe/misc.php | 12 - tests/e2e/recipe/timeouts.php | 20 - tests/fixtures/project/uploaded.html | 0 tests/fixtures/repository/.env | 1 - tests/fixtures/repository/README.md | 3 - tests/fixtures/repository/composer.json | 6 - tests/fixtures/repository/uploads/poem.txt | 12 - tests/joy/HostDefaultConfigTest.php | 34 - tests/joy/JoyTest.php | 76 - tests/joy/OnFuncTest.php | 49 - tests/legacy/AbstractTest.php | 73 - tests/legacy/CurrentPathTest.php | 35 - tests/legacy/DeployTest.php | 144 - tests/legacy/EnvTest.php | 25 - tests/legacy/NamedArgumentsTest.php | 56 - tests/legacy/OncePerNodeTest.php | 25 - tests/legacy/OnceTest.php | 22 - tests/legacy/ParallelTest.php | 114 - tests/legacy/SelectTest.php | 33 - tests/legacy/UpdateCodeTest.php | 33 - tests/legacy/YamlTest.php | 52 - tests/legacy/recipe/deploy.php | 47 - tests/legacy/recipe/deploy.yaml | 27 - tests/legacy/recipe/env.php | 22 - tests/legacy/recipe/named_arguments.php | 22 - tests/legacy/recipe/once.php | 10 - tests/legacy/recipe/once_per_node.php | 16 - tests/legacy/recipe/parallel.php | 49 - tests/legacy/recipe/select.php | 13 - tests/legacy/recipe/update_code.php | 9 - tests/phpstan-baseline.neon | 52 - tests/src/Collection/CollectionTest.php | 52 - tests/src/Command/BlackjackCommandTest.php | 20 - tests/src/Component/Pimple/PimpleTest.php | 599 -- tests/src/Component/Ssh/IOArgumentsTest.php | 34 - tests/src/Configuration/ConfigurationTest.php | 174 - tests/src/DeployerTest.php | 36 - tests/src/FunctionsTest.php | 185 - tests/src/Host/ConfigurationTest.php | 87 - tests/src/Host/HostTest.php | 86 - tests/src/Host/RangeTest.php | 30 - tests/src/Importer/ImporterTest.php | 82 - tests/src/Selector/SelectorTest.php | 32 - tests/src/Support/HelpersTest.php | 62 - tests/src/Support/ObjectProxyTest.php | 27 - tests/src/Task/ContextTest.php | 36 - tests/src/Task/ScriptManagerTest.php | 98 - tests/src/Task/TaskTest.php | 114 - 185 files changed, 29 insertions(+), 20352 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/docs.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/sync.yml delete mode 100644 .github/workflows/test.yml delete mode 100755 bin/build delete mode 100755 bin/dep delete mode 100755 bin/docgen delete mode 100644 composer.lock create mode 100755 dep delete mode 100644 deploy.yaml delete mode 100644 docs/KNOWN_BUGS.md delete mode 100644 docs/UPGRADE.md delete mode 100644 docs/api.md delete mode 100644 docs/avoid-php-fpm-reloading.md delete mode 100644 docs/basics.md delete mode 100755 docs/ci-cd.md delete mode 100755 docs/cli.md delete mode 100644 docs/contrib/README.md delete mode 100644 docs/contrib/bugsnag.md delete mode 100644 docs/contrib/cachetool.md delete mode 100644 docs/contrib/chatwork.md delete mode 100644 docs/contrib/cimonitor.md delete mode 100644 docs/contrib/cloudflare.md delete mode 100644 docs/contrib/cpanel.md delete mode 100644 docs/contrib/crontab.md delete mode 100644 docs/contrib/directadmin.md delete mode 100644 docs/contrib/discord.md delete mode 100644 docs/contrib/grafana.md delete mode 100644 docs/contrib/hangouts.md delete mode 100644 docs/contrib/hipchat.md delete mode 100644 docs/contrib/ispmanager.md delete mode 100644 docs/contrib/mattermost.md delete mode 100644 docs/contrib/ms-teams.md delete mode 100644 docs/contrib/newrelic.md delete mode 100644 docs/contrib/npm.md delete mode 100644 docs/contrib/phinx.md delete mode 100644 docs/contrib/php-fpm.md delete mode 100644 docs/contrib/rabbit.md delete mode 100644 docs/contrib/raygun.md delete mode 100644 docs/contrib/rocketchat.md delete mode 100644 docs/contrib/rollbar.md delete mode 100644 docs/contrib/rsync.md delete mode 100644 docs/contrib/sentry.md delete mode 100644 docs/contrib/slack.md delete mode 100644 docs/contrib/telegram.md delete mode 100644 docs/contrib/webpack_encore.md delete mode 100644 docs/contrib/workplace.md delete mode 100644 docs/contrib/yammer.md delete mode 100644 docs/contrib/yarn.md delete mode 100755 docs/getting-started.md delete mode 100644 docs/hosts.md delete mode 100755 docs/installation.md delete mode 100644 docs/recipe/README.md delete mode 100644 docs/recipe/cakephp.md delete mode 100644 docs/recipe/codeigniter.md delete mode 100644 docs/recipe/common.md delete mode 100644 docs/recipe/composer.md delete mode 100644 docs/recipe/contao.md delete mode 100644 docs/recipe/craftcms.md delete mode 100644 docs/recipe/deploy/check_remote.md delete mode 100644 docs/recipe/deploy/cleanup.md delete mode 100644 docs/recipe/deploy/clear_paths.md delete mode 100644 docs/recipe/deploy/copy_dirs.md delete mode 100644 docs/recipe/deploy/info.md delete mode 100644 docs/recipe/deploy/lock.md delete mode 100644 docs/recipe/deploy/push.md delete mode 100644 docs/recipe/deploy/release.md delete mode 100644 docs/recipe/deploy/rollback.md delete mode 100644 docs/recipe/deploy/setup.md delete mode 100644 docs/recipe/deploy/shared.md delete mode 100644 docs/recipe/deploy/symlink.md delete mode 100644 docs/recipe/deploy/update_code.md delete mode 100644 docs/recipe/deploy/vendors.md delete mode 100644 docs/recipe/deploy/writable.md delete mode 100644 docs/recipe/drupal7.md delete mode 100644 docs/recipe/drupal8.md delete mode 100644 docs/recipe/flow_framework.md delete mode 100644 docs/recipe/fuelphp.md delete mode 100644 docs/recipe/joomla.md delete mode 100644 docs/recipe/laravel.md delete mode 100644 docs/recipe/magento.md delete mode 100644 docs/recipe/magento2.md delete mode 100644 docs/recipe/pimcore.md delete mode 100644 docs/recipe/prestashop.md delete mode 100644 docs/recipe/provision.md delete mode 100644 docs/recipe/provision/databases.md delete mode 100644 docs/recipe/provision/nodejs.md delete mode 100644 docs/recipe/provision/php.md delete mode 100644 docs/recipe/provision/website.md delete mode 100644 docs/recipe/shopware.md delete mode 100644 docs/recipe/silverstripe.md delete mode 100644 docs/recipe/statamic.md delete mode 100644 docs/recipe/sulu.md delete mode 100644 docs/recipe/symfony.md delete mode 100644 docs/recipe/typo3.md delete mode 100644 docs/recipe/wordpress.md delete mode 100644 docs/recipe/yii.md delete mode 100644 docs/recipe/zend_framework.md delete mode 100644 docs/selector.md delete mode 100644 docs/sidebar.js delete mode 100644 docs/tasks.md delete mode 100644 docs/yaml.md delete mode 100644 phpcs.xml delete mode 100644 phpstan.neon delete mode 100644 phpunit.xml delete mode 100644 tests/bootstrap.php delete mode 100644 tests/docker/Dockerfile delete mode 100644 tests/docker/README.md delete mode 100644 tests/docker/conf/10-coverage.ini delete mode 100644 tests/docker/conf/healthcheck.conf delete mode 100644 tests/docker/docker-compose.yml delete mode 100644 tests/docker/initial-site/public/index.html delete mode 100644 tests/docker/scripts/install-composer.sh delete mode 100644 tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php delete mode 100644 tests/docker/scripts/start-servers.sh delete mode 100644 tests/e2e/AbstractE2ETest.php delete mode 100644 tests/e2e/ConsoleApplicationTester.php delete mode 100644 tests/e2e/FunctionsE2ETest.php delete mode 100644 tests/e2e/LaravelBoilerplateE2ETest.php delete mode 100644 tests/e2e/MiscE2ETest.php delete mode 100644 tests/e2e/SymfonyBoilerplateE2ETest.php delete mode 100644 tests/e2e/TimeoutsE2ETest.php delete mode 100644 tests/e2e/bootstrap.php delete mode 100644 tests/e2e/coverage/coverage-report.php delete mode 100644 tests/e2e/coverage/coverage-start.php delete mode 100644 tests/e2e/coverage/start-e2e-test.sh delete mode 100644 tests/e2e/phpunit-e2e.xml delete mode 100644 tests/e2e/recipe/functions.php delete mode 100644 tests/e2e/recipe/hosts.php delete mode 100644 tests/e2e/recipe/laravel-boilerplate.php delete mode 100644 tests/e2e/recipe/misc.php delete mode 100644 tests/e2e/recipe/timeouts.php delete mode 100644 tests/fixtures/project/uploaded.html delete mode 100644 tests/fixtures/repository/.env delete mode 100644 tests/fixtures/repository/README.md delete mode 100644 tests/fixtures/repository/composer.json delete mode 100644 tests/fixtures/repository/uploads/poem.txt delete mode 100644 tests/joy/HostDefaultConfigTest.php delete mode 100644 tests/joy/JoyTest.php delete mode 100644 tests/joy/OnFuncTest.php delete mode 100644 tests/legacy/AbstractTest.php delete mode 100644 tests/legacy/CurrentPathTest.php delete mode 100644 tests/legacy/DeployTest.php delete mode 100644 tests/legacy/EnvTest.php delete mode 100644 tests/legacy/NamedArgumentsTest.php delete mode 100644 tests/legacy/OncePerNodeTest.php delete mode 100644 tests/legacy/OnceTest.php delete mode 100644 tests/legacy/ParallelTest.php delete mode 100644 tests/legacy/SelectTest.php delete mode 100644 tests/legacy/UpdateCodeTest.php delete mode 100644 tests/legacy/YamlTest.php delete mode 100644 tests/legacy/recipe/deploy.php delete mode 100644 tests/legacy/recipe/deploy.yaml delete mode 100644 tests/legacy/recipe/env.php delete mode 100644 tests/legacy/recipe/named_arguments.php delete mode 100644 tests/legacy/recipe/once.php delete mode 100644 tests/legacy/recipe/once_per_node.php delete mode 100644 tests/legacy/recipe/parallel.php delete mode 100644 tests/legacy/recipe/select.php delete mode 100644 tests/legacy/recipe/update_code.php delete mode 100644 tests/phpstan-baseline.neon delete mode 100644 tests/src/Collection/CollectionTest.php delete mode 100644 tests/src/Command/BlackjackCommandTest.php delete mode 100644 tests/src/Component/Pimple/PimpleTest.php delete mode 100644 tests/src/Component/Ssh/IOArgumentsTest.php delete mode 100644 tests/src/Configuration/ConfigurationTest.php delete mode 100644 tests/src/DeployerTest.php delete mode 100644 tests/src/FunctionsTest.php delete mode 100644 tests/src/Host/ConfigurationTest.php delete mode 100644 tests/src/Host/HostTest.php delete mode 100644 tests/src/Host/RangeTest.php delete mode 100644 tests/src/Importer/ImporterTest.php delete mode 100644 tests/src/Selector/SelectorTest.php delete mode 100644 tests/src/Support/HelpersTest.php delete mode 100644 tests/src/Support/ObjectProxyTest.php delete mode 100644 tests/src/Task/ContextTest.php delete mode 100644 tests/src/Task/ScriptManagerTest.php delete mode 100644 tests/src/Task/TaskTest.php diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index bc2800951..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: antonmedv diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 534a8a3bd..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve. -title: '' -labels: '' -assignees: '' ---- -- Deployer version: -- Deployment OS: - - Please, provide a minimal reproducible example of deploy.php diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index e4626d2ba..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask question - url: https://github.com/deployphp/deployer/discussions/category_choices - about: Please ask questions in discussions. - - name: 💰 Paid Support - url: https://github.com/deployphp/deployer/discussions/3031 - about: We can offer a paid support for Deployer. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 3e9561cf8..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project. -title: '' -labels: '' -assignees: '' ---- diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 3f7bff1e8..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -- [ ] Bug fix #…? -- [ ] New feature? -- [ ] BC breaks? -- [ ] Tests added? -- [ ] Docs added? - - Please, regenerate docs by running next command: - $ php bin/docgen diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index cfe5abb2e..000000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: check - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - phpstan: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer phpstan - - phpcs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer phpcs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 345157e8a..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: doc - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - docgen: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Check for uncommitted changes - run: | - status=$(git status --porcelain docs/); - [ -z "$status" ] || { - echo "Please, run bin/docgen and commit next files:"; - echo $status; - exit 1; - } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 7b62b4d6e..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: release - -on: - release: - types: - - created - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Get version - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV - - - name: Build phar - run: php -d phar.readonly=0 bin/build -v"$RELEASE_VERSION" - - - name: Verify version - run: php deployer.phar -V - - - name: Upload phar - run: gh release upload v"$RELEASE_VERSION" deployer.phar - env: - GITHUB_TOKEN: ${{ secrets.MY_TOKEN }} - - - name: Calculate sha1 - run: echo "SHA1=$(sha1sum deployer.phar | awk '{print $1;}')" >> $GITHUB_ENV - - - name: Update manifest - uses: deployphp/action@v1 - with: - private-key: ${{ secrets.PRIVATE_KEY }} - deployer-binary: bin/dep - dep: -f deploy.yaml release -o sha1=${{ env.SHA1 }} -o version=${{ env.RELEASE_VERSION }} - - - name: Add deployer.phar - shell: bash - run: | - set -x - git checkout -b dist - mv deployer.phar dep - chmod +x dep - git add -f dep - - - name: Remove obsolete files & dirs - shell: bash - run: | - set -x - git rm -r .github/ bin/ docs/ tests/ *.lock *.yaml *.xml *.neon - - - name: Update composer.json - shell: bash - run: | - set -x - cat composer.json | jq 'del(.autoload) | del(.scripts) | del(.require) | del(."require-dev") | setpath(["bin"]; "dep")' > composer-new.json - mv composer-new.json composer.json - git add composer.json - - - name: Push release tag - shell: bash - run: | - set -x - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions" - git commit -m "Deployer $RELEASE_VERSION" - git tag "v$RELEASE_VERSION" --force - git push origin "v$RELEASE_VERSION" --force diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml deleted file mode 100644 index f64a220e3..000000000 --- a/.github/workflows/sync.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: sync - -on: - push: - branches: [ master ] - -jobs: - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Add & Commit - uses: EndBug/add-and-commit@v9 - with: - add: 'docs' - message: '[automatic] Update docs with bin/docgen' - - - name: Deploy docs - run: gh --repo "$REPO" workflow run deploy-docs - env: - GITHUB_TOKEN: ${{ secrets.MY_TOKEN }} - REPO: ${{ secrets.DOCS_REPO }} - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 76813e1a3..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: test - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - unit: - runs-on: ubuntu-latest - strategy: - matrix: - php-versions: [ '7.3', '7.4', '8.0', '8.1', '8.2' ] - steps: - - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: mbstring, intl - coverage: xdebug - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer test - - e2e: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: jpribyl/action-docker-layer-caching@v0.1.1 - continue-on-error: true - - - name: Build the docker-compose stack - run: cd tests/docker && docker-compose build - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run E2E test suite - run: cd tests/docker && docker-compose up --abort-on-container-exit diff --git a/bin/build b/bin/build deleted file mode 100755 index 1f34e3c81..000000000 --- a/bin/build +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if (ini_get('phar.readonly') === '1') { - throw new \Exception('Writing to phar files is disabled. Change your `php.ini` or append `-d phar.readonly=false` to the shebang, if supported by your `env` executable.'); -} - -define('__ROOT__', realpath(__DIR__ . '/..')); -chdir(__ROOT__); - -$opt = getopt('v:', ['nozip']); - -$version = $opt['v'] ?? null; -if (empty($version)) { - echo "Please, specify version as \"-v7.0.0-beta.42\".\n"; - exit(1); -} -if (!preg_match('/^\d+\.\d+\.\d+(\-\w+(\.\d+)?)?$/', $version)) { - echo "Version must be \"7.0.0-beta.42\". Got \"$version\".\n"; - exit(1); -} - -`composer install --no-dev --prefer-dist --optimize-autoloader`; - -$pharName = "deployer.phar"; -$pharFile = __ROOT__ . '/' . $pharName; -if (file_exists($pharFile)) { - unlink($pharFile); -} - -$ignore = [ - '.anton', - '.git', - 'Tests', - 'tests', - 'deploy.php', -]; - -$phar = new \Phar($pharFile, 0, $pharName); -$phar->setSignatureAlgorithm(\Phar::SHA1); -$phar->startBuffering(); -$iterator = new RecursiveDirectoryIterator(__ROOT__, FilesystemIterator::SKIP_DOTS); -$iterator = new RecursiveCallbackFilterIterator($iterator, function (SplFileInfo $fileInfo) use ($ignore) { - return !in_array($fileInfo->getBasename(), $ignore, true); -}); -$iterator = new RecursiveIteratorIterator($iterator); -$iterator = new CallbackFilterIterator($iterator, function (SplFileInfo $fileInfo) { - return in_array($fileInfo->getExtension(), ['php', 'exe'], true); -}); - -foreach ($iterator as $fileInfo) { - $file = str_replace(__ROOT__, '', $fileInfo->getRealPath()); - echo "Add file: " . $file . "\n"; - $phar->addFile($fileInfo->getRealPath(), $file); - - if (!array_key_exists('nozip', $opt)) { - $phar[$file]->compress(Phar::GZ); - - if (!$phar[$file]->isCompressed()) { - echo "Could not compress File: $file\n"; - } - } -} - -// Add schema.json -echo "Add file: /src/schema.json\n"; -$phar->addFile(realpath(__DIR__ . '/../src/schema.json'), '/src/schema.json'); - -// Add bin/dep file -echo "Add file: /bin/dep\n"; -$depContent = file_get_contents(__ROOT__ . '/bin/dep'); -$depContent = str_replace("#!/usr/bin/env php\n", '', $depContent); -$depContent = str_replace('__FILE__', 'str_replace("phar://", "", Phar::running())', $depContent); -$depContent = preg_replace("/run\('.+?'/", "run('$version'", $depContent); -$phar->addFromString('bin/dep', $depContent); -$phar->setStub(<<stopBuffering(); -unset($phar); - -echo "$pharName was created successfully.\n"; diff --git a/bin/dep b/bin/dep deleted file mode 100755 index 2bfa43b83..000000000 --- a/bin/dep +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -// Detect deploy.php location -$deployFile = null; -foreach ($argv as $i => $arg) { - if (preg_match('/^(-f|--file)$/', $arg, $match) && $i + 1 < count($argv)) { - $deployFile = $argv[$i + 1]; - break; - } - if (preg_match('/^--file=(?.+)$/', $arg, $match)) { - $deployFile = $match['file']; - break; - } - if (preg_match('/^-f=?(?.+)$/', $arg, $match)) { - $deployFile = $match['file']; - break; - } -} -if (!empty($deployFile)) { - $deployFile = realpath($deployFile); -} -$lookUp = function (string $name): ?string { - $dir = getcwd(); - for ($i = 0; $i < 10; $i++) { - $path = "$dir/$name"; - if (is_readable($path)) { - return $path; - } - $dir = dirname($dir); - } - return ''; -}; -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.php'); -} -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.yaml'); -} -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.yml'); -} - -// Detect autoload location -$autoload = [ - __DIR__ . '/../vendor/autoload.php', // The dep located at "deployer.phar/bin" or in development. - __DIR__ . '/../../../autoload.php', // The dep located at "vendor/deployer/deployer/bin". - __DIR__ . '/../autoload.php', // The dep located at "vendor/bin". -]; -$includes = [ - __DIR__ . '/..', - __DIR__ . '/../../../deployer/deployer', - __DIR__ . '/../deployer/deployer', -]; -$includePath = false; -for ($i = 0; $i < count($autoload); $i++) { - if (file_exists($autoload[$i]) && is_dir($includes[$i])) { - require $autoload[$i]; - $includePath = $includes[$i]; - break; - } -} -if (empty($includePath)) { - fwrite(STDERR, "Error: The `autoload.php` file not found in:\n"); - for ($i = 0; $i < count($autoload); $i++) { - $a = file_exists($autoload[$i]) ? 'true' : 'false'; - $b = is_dir($includes[$i]) ? 'true' : 'false'; - fwrite(STDERR, " - file_exists($autoload[$i]) = $a\n"); - fwrite(STDERR, " is_dir($includes[$i]) = $b\n"); - } - exit(1); -} - -// Errors to exception -set_error_handler(function ($severity, $message, $filename, $lineno) { - if (error_reporting() == 0) { - return; - } - if (error_reporting() & $severity) { - throw new ErrorException($message, 0, $severity, $filename, $lineno); - } -}); - -// Enable recipe loading -set_include_path($includePath . PATH_SEPARATOR . get_include_path()); - -// Deployer constants -define('DEPLOYER', true); -define('DEPLOYER_BIN', __FILE__); -define('DEPLOYER_DEPLOY_FILE', $deployFile); - -Deployer\Deployer::run('master', $deployFile); diff --git a/bin/docgen b/bin/docgen deleted file mode 100755 index 645358e04..000000000 --- a/bin/docgen +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Deployer\Documentation\ApiGen; -use Deployer\Documentation\DocGen; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Output\ConsoleOutput; - -require __DIR__ . '/../vendor/autoload.php'; - -chdir(realpath(__DIR__ . '/..')); - -$input = new ArgvInput(); -$output = new ConsoleOutput(); -$app = new Application('DocGen', '1.0.0'); -$app->setDefaultCommand('all'); - -$api = function () use ($output) { - $parser = new ApiGen(); - $parser->parse(file_get_contents(__DIR__ . '/../src/functions.php')); - $md = $parser->markdown(); - file_put_contents(__DIR__ . '/../docs/api.md', $md); - $output->writeln('API Reference documentation updated.'); -}; - -$recipes = function () use ($input, $output) { - $docgen = new DocGen(__DIR__ . '/..'); - $docgen->parse(__DIR__ . '/../recipe'); - $docgen->parse(__DIR__ . '/../contrib'); - - if ($input->getOption('json')) { - echo json_encode($docgen->recipes, JSON_PRETTY_PRINT); - return; - } - - $docgen->gen(__DIR__ . '/../docs'); - $output->writeln('Recipes documentation updated.'); -}; - -$app->register('api')->setCode($api); -$app->register('recipes')->setCode($recipes)->addOption('json'); -$app->register('all')->setCode(function () use ($recipes, $api) { - $api(); - $recipes(); - echo `git status`; -})->addOption('json'); - -$app->run($input, $output); diff --git a/composer.json b/composer.json index 7adf3f22b..5bd9de8e0 100644 --- a/composer.json +++ b/composer.json @@ -1,70 +1,32 @@ { - "name": "deployer/deployer", - "description": "Deployment Tool", - "license": "MIT", - "homepage": "https://deployer.org", - "support": { - "docs": "https://deployer.org/docs", - "source": "https://github.com/deployphp/deployer", - "issues": "https://github.com/deployphp/deployer/issues" - }, - "authors": [ - { - "name": "Anton Medvedev", - "email": "anton@medv.io" - } - ], - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/antonmedv" - } - ], - "autoload": { - "psr-4": { - "Deployer\\": "src/" - }, - "files": [ - "src/Support/helpers.php", - "src/functions.php" - ] - }, - "scripts": { - "test": "pest", - "test:e2e": "pest --config tests/e2e/phpunit-e2e.xml", - "phpcs": "phpcs", - "fix": "phpcbf", - "phpstan": "phpstan analyse -c phpstan.neon", - "phpstan:baseline": "@phpstan --generate-baseline tests/phpstan-baseline.neon" - }, - "bin": [ - "bin/dep" - ], - "require": { - "php": "^8.0|^7.3", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2", - "psr/http-message": "^1", - "react/http": "^1.5", - "symfony/console": "^5.4.9", - "symfony/polyfill-php80": "^1.22", - "symfony/process": "^5", - "symfony/yaml": "^5" - }, - "require-dev": { - "pestphp/pest": "^1.0", - "phpstan/phpstan": "^1.4", - "phpunit/php-code-coverage": "^9.2", - "phpunit/phpunit": "^9.3", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "config": { - "sort-packages": true, - "process-timeout": 0, - "allow-plugins": { - "pestphp/pest-plugin": true, - "dealerdirect/phpcodesniffer-composer-installer": true - } + "name": "deployer/deployer", + "description": "Deployment Tool", + "license": "MIT", + "homepage": "https://deployer.org", + "support": { + "docs": "https://deployer.org/docs", + "source": "https://github.com/deployphp/deployer", + "issues": "https://github.com/deployphp/deployer/issues" + }, + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" } + ], + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/antonmedv" + } + ], + "bin": "dep", + "config": { + "sort-packages": true, + "process-timeout": 0, + "allow-plugins": { + "pestphp/pest-plugin": true, + "dealerdirect/phpcodesniffer-composer-installer": true + } + } } diff --git a/composer.lock b/composer.lock deleted file mode 100644 index db6d70ce2..000000000 --- a/composer.lock +++ /dev/null @@ -1,4819 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "443f126c4b688aa349d3607009d03a20", - "packages": [ - { - "name": "evenement/evenement", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Evenement": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], - "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/master" - }, - "time": "2017-07-23T21:35:13+00:00" - }, - { - "name": "fig/http-message-util", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" - }, - "time": "2020-11-24T22:02:12+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.11", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" - }, - "time": "2021-07-22T09:24:00+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "react/cache", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e", - "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": [ - "cache", - "caching", - "promise", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/cache/issues", - "source": "https://github.com/reactphp/cache/tree/v1.1.1" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-02-02T06:47:52+00:00" - }, - { - "name": "react/dns", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb", - "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7 || ^1.2.1", - "react/promise-timer": "^1.8" - }, - "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.3 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Dns\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.9.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-20T08:46:54+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:31:24+00:00" - }, - { - "name": "react/http", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/http.git", - "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/http/zipball/59961cc4a5b14481728f07c591546be18fa3a5c7", - "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "fig/http-message-util": "^1.1", - "php": ">=5.3.0", - "psr/http-message": "^1.0", - "react/event-loop": "^1.2", - "react/promise": "^2.3 || ^1.2.1", - "react/promise-stream": "^1.1", - "react/socket": "^1.9", - "react/stream": "^1.2", - "ringcentral/psr7": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.5", - "clue/http-proxy-react": "^1.7", - "clue/reactphp-ssh-proxy": "^1.3", - "clue/socks-react": "^1.3", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Http\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven, streaming HTTP client and server implementation for ReactPHP", - "keywords": [ - "async", - "client", - "event-driven", - "http", - "http client", - "http server", - "https", - "psr-7", - "reactphp", - "server", - "streaming" - ], - "support": { - "issues": "https://github.com/reactphp/http/issues", - "source": "https://github.com/reactphp/http/tree/v1.6.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-03T13:17:37+00:00" - }, - { - "name": "react/promise", - "version": "v2.9.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.9.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-11T10:27:51+00:00" - }, - { - "name": "react/promise-stream", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-stream.git", - "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/3ebd94fe0d8edbf44937948af28d02d5437e9949", - "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/promise": "^2.1 || ^1.2", - "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6" - }, - "require-dev": { - "clue/block-react": "^1.0", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", - "react/promise-timer": "^1.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\Stream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "The missing link between Promise-land and Stream-land for ReactPHP", - "homepage": "https://github.com/reactphp/promise-stream", - "keywords": [ - "Buffer", - "async", - "promise", - "reactphp", - "stream", - "unwrap" - ], - "support": { - "issues": "https://github.com/reactphp/promise-stream/issues", - "source": "https://github.com/reactphp/promise-stream/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-10-18T10:47:09+00:00" - }, - { - "name": "react/promise-timer", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-timer.git", - "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/0bbbcc79589e5bfdddba68a287f1cb805581a479", - "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\Timer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", - "homepage": "https://github.com/reactphp/promise-timer", - "keywords": [ - "async", - "event-loop", - "promise", - "reactphp", - "timeout", - "timer" - ], - "support": { - "issues": "https://github.com/reactphp/promise-timer/issues", - "source": "https://github.com/reactphp/promise-timer/tree/v1.8.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-06T11:08:48+00:00" - }, - { - "name": "react/socket", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/f474156aaab4f09041144fa8b57c7d70aed32a1c", - "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.8", - "react/event-loop": "^1.2", - "react/promise": "^2.6.0 || ^1.2.1", - "react/promise-timer": "^1.8", - "react/stream": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.5", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/promise-stream": "^1.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Socket\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], - "support": { - "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.11.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-01-14T10:14:32+00:00" - }, - { - "name": "react/stream", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9", - "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.2" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Stream\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" - ], - "support": { - "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:37:55+00:00" - }, - { - "name": "ringcentral/psr7", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/ringcentral/psr7.git", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "RingCentral\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "PSR-7 message implementation", - "keywords": [ - "http", - "message", - "stream", - "uri" - ], - "support": { - "source": "https://github.com/ringcentral/psr7/tree/master" - }, - "time": "2018-05-29T20:21:04+00:00" - }, - { - "name": "symfony/console", - "version": "v5.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-12-28T14:15:31+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-07-12T14:48:14+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-05T21:20:04+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-03-04T08:16:47+00:00" - }, - { - "name": "symfony/process", - "version": "v5.4.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", - "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.5" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-30T18:16:22+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-04T16:48:04+00:00" - }, - { - "name": "symfony/string", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.4.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:53:40+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T16:32:32+00:00" - } - ], - "packages-dev": [ - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-03-03T08:28:38+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2022-03-03T13:19:32+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v5.11.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" - }, - "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-01-10T16:22:52+00:00" - }, - { - "name": "pestphp/pest", - "version": "v1.21.2", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "63f009fadf9b37f611fda43928d03336475d5d9f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/63f009fadf9b37f611fda43928d03336475d5d9f", - "reference": "63f009fadf9b37f611fda43928d03336475d5d9f", - "shasum": "" - }, - "require": { - "nunomaduro/collision": "^5.10.0|^6.0", - "pestphp/pest-plugin": "^1.0.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.5.5" - }, - "require-dev": { - "illuminate/console": "^8.47.0", - "illuminate/support": "^8.47.0", - "laravel/dusk": "^6.15.0", - "pestphp/pest-dev-tools": "dev-master", - "pestphp/pest-plugin-parallel": "^1.0" - }, - "bin": [ - "bin/pest" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "pest": { - "plugins": [ - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" - ] - }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], - "psr-4": { - "Pest\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "An elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.21.2" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/lukeraymonddowning", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/octoper", - "type": "github" - }, - { - "url": "https://github.com/olivernybroe", - "type": "github" - }, - { - "url": "https://github.com/owenvoke", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-03-05T19:34:40+00:00" - }, - { - "name": "pestphp/pest-plugin", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/fc8519de148699fe612d9c669be60554cd2db4fa", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "pestphp/pest": "<1.0" - }, - "require-dev": { - "composer/composer": "^1.10.19", - "pestphp/pest": "^1.0", - "pestphp/pest-dev-tools": "dev-master" - }, - "type": "composer-plugin", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" - }, - "autoload": { - "psr-4": { - "Pest\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.0.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-01-03T15:53:42+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.16.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" - }, - "time": "2022-11-29T15:06:56+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d", - "reference": "4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.2" - }, - "time": "2022-03-30T13:33:37+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.4.10", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "898c479c39caa727bedf4311dd294a8f4e250e72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/898c479c39caa727bedf4311dd294a8f4e250e72", - "reference": "898c479c39caa727bedf4311dd294a8f4e250e72", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.10" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2022-03-14T10:25:45+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.15", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-07T09:28:20+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.20", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-04-01T12:37:26+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-02-14T08:28:10+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-15T09:54:48+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "slevomat/coding-standard", - "version": "7.1", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.4.1", - "squizlabs/php_codesniffer": "^3.6.2" - }, - "require-dev": { - "phing/phing": "2.17.2", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.5.2", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.0", - "phpstan/phpstan-strict-rules": "1.1.0", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.19" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", - "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.1" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2022-03-29T12:44:16+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.0|^7.3", - "ext-json": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/dep b/dep new file mode 100755 index 0000000000000000000000000000000000000000..ccc1f78c78d02d4ad2fd36a9de58a3be1af9547a GIT binary patch literal 781180 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
krpkh&*GUQH&76{su55k4T}=I&bQyFVJN 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­lN_116m=f+XGJFV+I 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

_%J>Ek?8%9qj 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ȁBIY!RywgVjw7N%@+Vf%BL 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щI$1sFt(JX~( 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 literal 0 HcmV?d00001 diff --git a/deploy.yaml b/deploy.yaml deleted file mode 100644 index fc261543d..000000000 --- a/deploy.yaml +++ /dev/null @@ -1,21 +0,0 @@ -import: - - src/Support/update_banner.php - - src/Support/update_manifest.php - -hosts: - deployer.org: - remote_user: anton - -config: - banner: | - ╭────────────────────────────────────────────╮ - │ │ - │ Update available! More info at │ - │ https://ï.at/deployer-releases │ - │ │ - ╰────────────────────────────────────────────╯ - -tasks: - release: - - update_banner - - update_manifest diff --git a/docs/KNOWN_BUGS.md b/docs/KNOWN_BUGS.md deleted file mode 100644 index cfc244925..000000000 --- a/docs/KNOWN_BUGS.md +++ /dev/null @@ -1,59 +0,0 @@ -# Known Bugs - -## Ubuntu 14.04, Coreutils 8.21 - -There are known bug with relative symlinks `ln --relative`, which may fail rollback command. - -Add next line to _deploy.php_ file: - -```php -set('use_relative_symlink', false); -``` - -## OpenSSH_7.2p2 - -ControlPersist causes stderr to be left open until the master connection times out. - -- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714526 -- https://bugzilla.mindrot.org/show_bug.cgi?id=1988 - -## cURL 7.29.0 - -Certificate verification fails with multiple https urls. - -- https://bugzilla.redhat.com/show_bug.cgi?id=1241172 - -## Rsync (3.1.3) - -Artifact upload with `rsync` is interrupted after the first chunk of data upload. - -``` -The command "rsync -azP -e 'ssh -A -p *** -o UserKnownHostsFile=/dev/null - -o StrictHostKeyChecking=no' 'artifacts/artifact.tar.gz' 'deploy@ssh.XXX.io:/srv/releases/2009076181'" failed. - -Exit Code: 255(Unknown error) - -Output: -================ -sending incremental file list -artifact.tar.gz - 32,768 0% 0.00kB/s 0:00:00 - -Error Output: -================ -client_loop: send disconnect: Broken pipe - -rsync: [sender] write error: Broken pipe (32) -``` - -In order to resolve (workaround) the issue, you need to add `--bwlimit=4096` to the list of options. - -Example: - -```php -task('artifact:upload', function () { - upload(get('artifact_path'), '{{release_path}}', ['options' => ['--bwlimit=4096']]); -}); -``` - -The issue was also described in the [Github Action](https://github.com/deployphp/action/issues/35). diff --git a/docs/UPGRADE.md b/docs/UPGRADE.md deleted file mode 100644 index 964aa50cc..000000000 --- a/docs/UPGRADE.md +++ /dev/null @@ -1,255 +0,0 @@ -# Upgrade a major version - -## Upgrade from 6.x to 7.x - -### Step 1: Update deploy.php - -1. Change config `hostname` to `alias`. -2. Change config `real_hostname` to `hostname`. -3. Change config `user` to `remote_user`. -4. Update `host()` definitions: - 1. Add `set` prefix to all setters: `identityFile` -> `setIdentityFile` or `set('identity_file')` - 2. Update `host(...)->addSshOption('UserKnownHostsFile', '/dev/null')` to `host(...)->setSshArguments(['-o UserKnownHostsFile=/dev/null']);` - 3. Replace _stage_ with labels, i.e. - ```php - host('deployer.org') - ->set('labels', ['stage' => 'prod']); - ``` - When deploying instead of `dep deploy prod` use `dep deploy stage=prod`. - 4. `alias()` is deleted, `host()` itself sets alias and hostname, to override hostname use `setHostname()`. -5. Update `task()` definitions. - 1. Replace `onRoles()` with `select()`: - ```php - task(...) - ->select('stage=prod'); - ``` -6. Third party recipes now live inside main Deployer repo in _contrib_: - ```php - require 'contrib/rsync.php'; - ``` -7. Replace `inventory()` with `import()`. It now can import hosts, configs, tasks: - - ```yaml - import: recipe/common.php - - config: - application: deployer - shared_dirs: - - uploads - - storage/logs/ - - storage/db - shared_files: - - .env - - config/test.yaml - keep_releases: 3 - http_user: false - - hosts: - prod: - local: true - - tasks: - deploy: - - deploy:prepare - - deploy:vendors - - deploy:publish - - deploy:vendors: - - run: "cd {{release_path}} && echo {{bin/composer}} {{composer_options}} 2>&1" - ``` - -8. Rename task `success` to `deploy:success` and `cleanup` to `deploy:cleanup`. -9. Verbosity functions (`isDebug()`, etc) got deleted. Use `output()->isDebug()` instead. -10. `runLocally()` commands are executed relative to the recipe file directory. This behaviour can be overridden via an environment variable: - ``` - DEPLOYER_ROOT=. vendor/bin/dep taskname` - ``` -11. Replace `local()` tasks with combination of `once()` and `runLocally()` func. -12. Replace `locateBinaryPath()` with `which()` func. -13. Configuration property `default_stage` is not supported anymore and has been dropped. -14. Replace `onHosts()` and `onStage()` with [labels & selectors](selector.md). -15. Replace `setPrivate()` with [`hidden()`](tasks.md#hidden). - -### Step 2: Deploy - -Since the release history numbering is not compatible between v6 and v7, you need to specify the `release_name` manually for the first time. Otherwise you start with release 1. - -1. Find out next release name (ssh to the host, `ls` releases dir, find the biggest number). Example: `42`. -2. Deploy with release_name: - ``` - dep deploy -o release_name=43 - ``` - -:::note -In case a rollback is needed, manually change the `current` symlink: - -``` -ln -nfs releases/42 current -``` - -::: - -:::note -In case there are multiple hosts with different release names, you should create a `{{deploy_path}}/.dep/latest_release` file in each host with the current release number of that particular host. -::: - -## Upgrade from 5.x to 6.x - -1. Changed branch option priority - - If you have host definition with `branch(...)` parameter, adding `--branch` option will not override it any more. - If no `branch(...)` parameter persists, branch will be fetched from current local git branch. - - ```php - host('prod') - ->set('branch', 'production') - ``` - - In order to return to old behavior add checking of `--branch` option. - - ```php - host('prod') - ->set('branch', function () { - return input()->getOption('branch') ?: 'production'; - }) - ``` - -2. Add `deploy:info` task to the beginning to `deploy` task. -3. `run` returns string instead of `Deployer\Type\Result` - - Now `run` and `runLocally` returns `string` instead of `Deployer\Type\Result`. - Replace method calls as: - - - `run('command')->toString()` → `run('command')` - - `run('if command; then echo "true"; fi;')->toBool()` → `test('command')` - -4. `env_vars` renamed to `env` - - - `set('env_vars', 'FOO=bar');` → `set('env', ['FOO' => 'bar']);` - - If your are using Symfony recipe, then you need to change `env` setting: - - - `set('env', 'prod');` → `set('symfony_env', 'prod');` - -## Upgrade from 4.x to 5.x - -1. Servers to Hosts - - - `server($hostname)` to `host($hostname)`, and `server($name, $hostname)` to `host($name)->hostname($hostname)` - - `localServer($name)` to `localhost()` - - `cluster($name, $nodes, $port)` to `hosts(...$hodes)` - - `serverList($file)` to `inventory($file)` - - If you need to deploy to same server use [host aliases](https://deployer.org/docs/hosts#host-aliases): - - ```php - host('domain.com/green', 'domain.com/blue') - ->set('deploy_path', '~/{{hostname}}') - ... - ``` - - Or you can define different hosts with same hostname: - - ```php - host('production') - ->hostname('domain.com') - ->set('deploy_path', '~/production') - ... - - host('beta') - ->hostname('domain.com') - ->set('deploy_path', '~/beta') - ... - ``` - -2. Configuration options - - - Rename `{{server.name}}` to `{{hostname}}` - -3. DotArray syntax - - In v5 access to nested arrays in config via dot notation was removed. - If you was using it, consider to move to plain config options. - - Refactor this: - - ```php - set('a', ['b' => 1]); - - // ... - - get('a.b'); - ``` - - To: - - ```php - set('a_b', 1); - - // ... - - get('a_b'); - ``` - -4. Credentials - - Best practice in new v5 is to omit credentials for connection in `deploy.php` and write them in `~/.ssh/config` instead. - - - `identityFile($publicKeyFile,, $privateKeyFile, $passPhrase)` to `identityFile($privateKeyFile)` - - `pemFile($pemFile)` to `identityFile($pemFile)` - - `forwardAgent()` to `forwardAgent(true)` - -5. Tasks constraints - - - `onlyOn` to `onHosts` - - `onlyOnStage` to `onStage` - -## Upgrade from 3.x to 4.x - -1. Namespace for functions - - Add to beginning of _deploy.php_ next line: - - ```php - use function Deployer\{server, task, run, set, get, add, before, after}; - ``` - - If you are using PHP version less than 5.6, you can use this: - - ```php - namespace Deployer; - ``` - -2. `env()` to `set()`/`get()` - - Rename all calls `env($name, $value)` to `set($name, $value)`. - - Rename all rvalue `env($name)` to `get($name)`. - - Rename all `server(...)->env(...)` to `server(...)->set(...)`. - -3. Moved _NonFatalException_ - - Rename `Deployer\Task\NonFatalException` to `Deployer\Exception\NonFatalException`. - -4. Prior release cleanup - - Due to changes in release management, the new cleanup task will ignore any prior releases deployed with 3.x. These will need to be manually removed after migrating to and successfully releasing via 4.x. - -## Upgrade from 2.x to 3.x - -1. ### `->path('...')` - - Replace your server paths configuration: - - ```php - server(...) - ->path(...); - ``` - - to: - - ```php - server(...) - ->env('deploy_path', '...'); - ``` diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index e93a1aee5..000000000 --- a/docs/api.md +++ /dev/null @@ -1,565 +0,0 @@ - - - - -# API Reference - -## host() - -```php -host(string ...$hostname) -``` - -Defines a host or hosts. -```php -host('example.org'); -host('prod.example.org', 'staging.example.org'); -``` - -Inside task can be used to get `Host` instance of an alias. -```php -task('test', function () { - $port = host('example.org')->get('port'); -}); -``` - - - -## localhost() - -```php -localhost(string ...$hostnames) -``` - - - -## currentHost() - -```php -currentHost(): Host -``` - -Returns current host. - - -## select() - -```php -select(string $selector): array -``` - -Returns hosts based on provided selector. - -```php -on(select('stage=prod, role=db'), function (Host $host) { - ... -}); -``` - - - -## selectedHosts() - -```php -selectedHosts(): array -``` - -Returns array of hosts selected by user via CLI. - - - -## import() - -```php -import(string $file): void -``` - -Import other php or yaml recipes. - -```php -import('recipe/common.php'); -``` - -```php -import(__DIR__ . '/config/hosts.yaml'); -``` - - - -## desc() - -```php -desc(?string $title = null): ?string -``` - -Set task description. - - -## task() - -```php -task(string $name, $body = null): Task -``` - -Define a new task and save to tasks list. - -Alternatively get a defined task. - - - -| Argument | Type | Comment | -|---|---|---| -| `$name` | `string` | Name of current task. | -| `$body` | `callable():void` or `array` or `null` | Callable task, array of other tasks names or nothing to get a defined tasks | - -## before() - -```php -before(string $task, $do) -``` - -Call that task before specified task runs. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task before $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## after() - -```php -after(string $task, $do) -``` - -Call that task after specified task runs. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task after $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## fail() - -```php -fail(string $task, $do) -``` - -Setup which task run on failure of $task. -When called multiple times for a task, previous fail() definitions will be overridden. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task which need to fail so $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## option() - -```php -option(string $name, $shortcut = null, ?int $mode = null, string $description = '', $default = null): void -``` - -Add users options. - - - -| Argument | Type | Comment | -|---|---|---| -| `$name` | `string` | The option name | -| `$shortcut` | `string` or `array` or `null` | The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts | -| `$mode` | `int` or `null` | The option mode: One of the VALUE_* constants | -| `$description` | `string` | A description text | -| `$default` | `string` or `string[]` or `int` or `bool` or `null` | The default value (must be null for self::VALUE_NONE) | - -## cd() - -```php -cd(string $path): void -``` - -Change the current working directory. - - -## within() - -```php -within(string $path, callable $callback) -``` - -Execute a callback within a specific directory and revert back to the initial working directory. - - - -## run() - -```php -run(string $command, ?array $options = [], ?int $timeout = null, ?int $idle_timeout = null, ?string $secret = null, ?array $env = null, ?bool $real_time_output = false, ?bool $no_throw = false): string -``` - -Executes given command on remote host. - -Examples: - -```php -run('echo hello world'); -run('cd {{deploy_path}} && git status'); -run('password %secret%', secret: getenv('CI_SECRET')); -run('curl medv.io', timeout: 5); -``` - -```php -$path = run('readlink {{deploy_path}}/current'); -run("echo $path"); -``` - - - - -| Argument | Type | Comment | -|---|---|---| -| `$command` | `string` | Command to run on remote host. | -| `$options` | `array` or `null` | Array of options will override passed named arguments. | -| `$timeout` | `int` or `null` | Sets the process timeout (max. runtime). The timeout in seconds (default: 300 sec; see {{default_timeout}}, `null` to disable). | -| `$idle_timeout` | `int` or `null` | Sets the process idle timeout (max. time since last output) in seconds. | -| `$secret` | `string` or `null` | Placeholder `%secret%` can be used in command. Placeholder will be replaced with this value and will not appear in any logs. | -| `$env` | `array` or `null` | Array of environment variables: `run('echo $KEY', env: ['key' => 'value']);` | -| `$real_time_output` | `bool` or `null` | Print command output in real-time. | -| `$no_throw` | `bool` or `null` | Don't throw an exception of non-zero exit code. | - -## runLocally() - -```php -runLocally(string $command, ?array $options = [], ?int $timeout = null, ?int $idle_timeout = null, ?string $secret = null, ?array $env = null, ?string $shell = null): string -``` - -Execute commands on a local machine. - -Examples: - -```php -$user = runLocally('git config user.name'); -runLocally("echo $user"); -``` - - - - -| Argument | Type | Comment | -|---|---|---| -| `$command` | `string` | Command to run on localhost. | -| `$options` | `array` or `null` | Array of options will override passed named arguments. | -| `$timeout` | `int` or `null` | Sets the process timeout (max. runtime). The timeout in seconds (default: 300 sec, `null` to disable). | -| `$idle_timeout` | `int` or `null` | Sets the process idle timeout (max. time since last output) in seconds. | -| `$secret` | `string` or `null` | Placeholder `%secret%` can be used in command. Placeholder will be replaced with this value and will not appear in any logs. | -| `$env` | `array` or `null` | Array of environment variables: `runLocally('echo $KEY', env: ['key' => 'value']);` | -| `$shell` | `string` or `null` | Shell to run in. Default is `bash -s`. | - -## test() - -```php -test(string $command): bool -``` - -Run test command. -Example: - -```php -if (test('[ -d {{release_path}} ]')) { -... -} -``` - - - -## testLocally() - -```php -testLocally(string $command): bool -``` - -Run test command locally. -Example: - - testLocally('[ -d {{local_release_path}} ]') - - - -## on() - -```php -on($hosts, callable $callback): void -``` - -Iterate other hosts, allowing to call run a func in callback. - -```php -on(select('stage=prod, role=db'), function ($host) { - ... -}); -``` - -```php -on(host('example.org'), function ($host) { - ... -}); -``` - -```php -on(Deployer::get()->hosts, function ($host) { - ... -}); -``` - - - -## invoke() - -```php -invoke(string $taskName): void -``` - -Runs a task. -```php -invoke('deploy:symlink'); -``` - - - -## upload() - -```php -upload($source, string $destination, array $config = []): void -``` - -Upload files or directories to host. - -> To upload the _contents_ of a directory, include a trailing slash (eg `upload('build/', '{{release_path}}/public');`). -> Without the trailing slash, the build directory itself will be uploaded (resulting in `{{release_path}}/public/build`). - - The `$config` array supports the following keys: - -- `flags` for overriding the default `-azP` passed to the `rsync` command -- `options` with additional flags passed directly to the `rsync` command -- `timeout` for `Process::fromShellCommandline()` (`null` by default) -- `progress_bar` to display upload/download progress -- `display_stats` to display rsync set of statistics - -Note: due to the way php escapes command line arguments, list-notation for the rsync `--exclude={'file','anotherfile'}` option will not work. -A workaround is to add a separate `--exclude=file` argument for each exclude to `options` (also, _do not_ wrap the filename/filter in quotes). -An alternative might be to write the excludes to a temporary file (one per line) and use `--exclude-from=temporary_file` argument instead. - - - - -## download() - -```php -download(string $source, string $destination, array $config = []): void -``` - -Download file or directory from host - - - - -## info() - -```php -info(string $message): void -``` - -Writes an info message. - - -## warning() - -```php -warning(string $message): void -``` - -Writes an warning message. - - -## writeln() - -```php -writeln(string $message, int $options = 0): void -``` - -Writes a message to the output and adds a newline at the end. - - -## parse() - -```php -parse(string $value): string -``` - -Parse set values. - - -## set() - -```php -set(string $name, $value): void -``` - -Setup configuration option. - - -## add() - -```php -add(string $name, array $array): void -``` - -Merge new config params to existing config array. - - - -## get() - -```php -get(string $name, $default = null) -``` - -Get configuration value. - - - - -## has() - -```php -has(string $name): bool -``` - -Check if there is such configuration option. - - -## ask() - -```php -ask(string $message, ?string $default = null, ?array $autocomplete = null): ?string -``` - - - -## askChoice() - -```php -askChoice(string $message, array $availableChoices, $default = null, bool $multiselect = false) -``` - - - -## askConfirmation() - -```php -askConfirmation(string $message, bool $default = false): bool -``` - - - -## askHiddenResponse() - -```php -askHiddenResponse(string $message): string -``` - - - -## input() - -```php -input(): InputInterface -``` - - - -## output() - -```php -output(): OutputInterface -``` - - - -## commandExist() - -```php -commandExist(string $command): bool -``` - -Check if command exists - - - -## commandSupportsOption() - -```php -commandSupportsOption(string $command, string $option): bool -``` - - - -## which() - -```php -which(string $name): string -``` - - - -## remoteEnv() - -```php -remoteEnv(): array -``` - -Returns remote environments variables as an array. -```php -$remotePath = remoteEnv()['PATH']; -run('echo $PATH', env: ['PATH' => "/home/user/bin:$remotePath"]); -``` - - -## error() - -```php -error(string $message): Exception -``` - -Creates a new exception. - - -## timestamp() - -```php -timestamp(): string -``` - -Returns current timestamp in UTC timezone in ISO8601 format. - - -## fetch() - -```php -fetch(string $url, string $method = 'get', array $headers = [], ?string $body = null, ?array &$info = null, bool $nothrow = false): string -``` - -Example usage: -```php -$result = fetch('{{domain}}', info: $info); -var_dump($info['http_code'], $result); -``` - - diff --git a/docs/avoid-php-fpm-reloading.md b/docs/avoid-php-fpm-reloading.md deleted file mode 100644 index bb34d85e4..000000000 --- a/docs/avoid-php-fpm-reloading.md +++ /dev/null @@ -1,54 +0,0 @@ -# Avoid PHP-FPM Reloading - -Deployer symlinks _current_ to latest release dir. - -``` -current -> releases/3/ -releases/ - 1/ - 2/ - 3/ -``` - -## The problem - -PHP Opcodes get cached. And if `SCRIPT_FILENAME` contains _current_ symlink, on -new deploy nothing updates. Usually, a solution is simple to reload **php-fpm** -after deploy, but such reload can lead to **dropped** or **failed** requests. -The correct fix is to configure your server set `SCRIPT_FILENAME` to a resolved path. -You can check your server configuration by printing `SCRIPT_FILENAME`. - -```php -echo $_SERVER['SCRIPT_FILENAME']; -``` - -If it prints something like `/home/deployer/example.com/current/index.php` with -_current_ in the path, your server configured incorrectly. - -## Fix for Nginx - -Nginx has special variable `$realpath_root`, use it to set up `SCRIPT_FILENAME`: - -```diff -location ~ \.php$ { - include fastcgi_params; - fastcgi_pass unix:/var/run/php/php-fpm.sock; -- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -+ fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; -} -``` - -## Fix for Caddy - -:::tip -If you're already using servers provisioned by Deployer, you don't need to fix -anything, as everything is already configured properly. -::: - -Use `resolve_root_symlink`: - -``` -php_fastcgi * unix//run/php/php-fpm.sock { - resolve_root_symlink -} -``` diff --git a/docs/basics.md b/docs/basics.md deleted file mode 100644 index 3e5ed892a..000000000 --- a/docs/basics.md +++ /dev/null @@ -1,234 +0,0 @@ -# Basics - -Deployer has two main concepts: [**hosts**](hosts.md) and [**tasks**](tasks.md). - -A **recipe** is a file containing definitions for **hosts** and **tasks**. - -Deployer CLI requires two arguments to run: a **task** to run and a **selector**. - -``` -$ dep deploy deployer.org - --- ------ ------------ - | | | - | | `--- Selector - | `------------- Task - `------------------ CLI -``` - -Deployer uses the [selector](selector.md) to choose hosts. Next takes the given -task, performs some preparation (described later), and executes the task on all -selected hosts. - -If selector not specified Deployer will ask you to choose host from list. -If your recipe contains only one host, Deployer will automatically choose it. -To select all hosts specify a special selector: `all`. - -The `dep` CLI looks for `deploy.php` or `deploy.yaml` file in current directory. - -Or recipe can be specified explicitly via `-f` or `--file` option. - -``` -$ dep --file=deploy.php deploy deployer.org -``` - -Let's write a recipe. - -```php -// We are going to use functions declared primarily in Deployer namespace, -// to simplify recipe we will use Deployer namespace too. Alternativly, -// you can import individual functions via "use function". -namespace Deployer; - -host('deployer.org'); - -task('my_task', function () { - run('whoami'); -}); -``` - -Let's try to run our task on deployer.org. - -``` -$ dep my_task -task my_task -$ -``` - -But where is our `whoami` command output? By default, Deployer runs with normal verbosity -level and shows only names of executed tasks. Let's increase verbosity to verbose, and -rerun our task. - -Add `-v` option to increase verbosity. Read more about [CLI usage](cli.md). - -``` -$ dep my_task -v -task my_task -[deployer.org] run whoami -[deployer.org] deployer -$ -``` - -Now let's add second host: - -```php -host('deployer.org'); -host('medv.io'); -``` - -How does Deployer know how to connect to a host? It uses same `~/.ssh/config` file as -the `ssh` command. Alternatively, you can specify [connection options](hosts.md) in recipe. - -Let's run `my_task` task on both hosts: - -``` -$ dep my_task -v all -task my_task -[deployer.org] run whoami -[medv.io] run whoami -[medv.io] anton -[deployer.org] deployer -``` - -Deployer runs a task in parallel on each host. This is why the output is mixed. -We can limit it to run only on one host at a time. - -``` -$ dep my_task -v all --limit 1 -task my_task -[deployer.org] run whoami -[deployer.org] deployer -[medv.io] run whoami -[medv.io] deployer -``` - -Limit level also possible to [specified per task](tasks.md#limit). - -Each host has a configuration: a list of key-value pairs. Let's define our first -configuration option for both our hosts: - -```php -host('deployer.org') - ->set('my_config', 'foo'); -host('medv.io') - ->set('my_config', 'bar'); -``` - -In the task we can get current executing host with [currentHost](api.md#currenthost) function: - -```php -task('my_task', function () { - $myConfig = currentHost()->get('my_config'); - writeln("my_config: " . $myConfig); -}); -``` - -Or with [get](api.md#get) function: - -```diff -task('my_task', function () { -- $myConfig = currentHost()->get('my_config'); -+ $myConfig = get('my_config'); - writeln("my_config: " . $myConfig); -}); -``` - -Or via [parse](api.md#parse) function which replaces brackets `{{ ... }}` and value -with of config option. - -All functions (writeln, run, runLocally, cd, upload, etc) call **parse** function -internally. So you don't need to call **parse** function by your self. - -```diff -task('my_task', function () { -- $myConfig = get('my_config'); -- writeln("my_config: " . $myConfig); -+ writeln("my_config: {{my_config}}"); -}); -``` - -Let's try to run our task: - -``` -$ dep my_task all -task my_task -[deployer.org] my_config: foo -[medv.io] my_config: bar -``` - -Awesome! Each host configuration inherits global configuration. Let's refactor -our recipe to define one global config option: - -```php -set('my_config', 'global'); - -host('deployer.org'); -host('medv.io'); -``` - -The config option `my_config` will be equal to `global` on both hosts. - -Also, config option value can be specified as a callback, such callback -executed on first access and returned result saved in host configuration. - -```php -set('whoami', function () { - return run('whoami'); -}); - -task('my_task', function () { - writeln('Who am I? {{whoami}}'); -}); -``` - -Let's try to run it: - -``` -$ dep my_task all -task my_task -[deployer.org] Who am I? deployer -[medv.io] Who am I? anton -``` - -We can use this to create dynamic configuration which uses current host information. - -Only the first call will trigger the callback execution. All subsequent checks use saved value. - -Here is an example: - -```php -set('current_date', function () { - return run('date'); -}); - -task('my_task', function () { - writeln('What time is it? {{current_date}}'); - run('sleep 5'); - writeln('What time is it? {{current_date}}'); -}); -``` - -If we run my_task we will see that `date` is called only once on -`{{current_date}}` access. - -``` -$ dep my_task deployer.org -v -task my_task -[deployer.org] run date -[deployer.org] Wed 03 Nov 2021 01:16:53 PM UTC -[deployer.org] What time is it? Wed 03 Nov 2021 01:16:53 PM UTC -[deployer.org] run sleep 5 -[deployer.org] What time is it? Wed 03 Nov 2021 01:16:53 PM UTC -``` - -We can override a config option via CLI option `-o` like this: - -``` -$ dep my_task deployer.org -v -o current_date="I don't know" -task my_task -[deployer.org] What time is it? I don't know -[deployer.org] run sleep 5 -[deployer.org] What time is it? I don't know -``` - -Since the `current_date` config option is overridden there is no need to call the callback. -So there is no 'run date'. diff --git a/docs/ci-cd.md b/docs/ci-cd.md deleted file mode 100755 index 4a22568f9..000000000 --- a/docs/ci-cd.md +++ /dev/null @@ -1,99 +0,0 @@ -# CI/CD - -## GitHub Actions - -Use official [GitHub Action for Deployer](https://github.com/deployphp/action). - -Create `.github/workflows/deploy.yml` file with following content: - -```yaml -name: deploy - -on: - push: - branches: [master] - -concurrency: production_environment - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: "8.1" - - - name: Install dependencies - run: composer install - - - name: Deploy - uses: deployphp/action@v1 - with: - private-key: ${{ secrets.PRIVATE_KEY }} - dep: deploy -``` - -:::warning -The `concurrency: production_environment` is important as it prevents concurrent -deploys. -::: - -## GitLab CI/CD - -Set the following variables in GitLab project: - -- `SSH_KNOWN_HOSTS`: Content of `~/.ssh/known_hosts` file. - The public SSH keys for a host may be obtained using the utility `ssh-keyscan`. - For example: `ssh-keyscan deployer.org`. -- `SSH_PRIVATE_KEY`: Private key for connecting to remote hosts. - To generate private key: `ssh-keygen -t ed25519 -C 'gitlab@deployer.org'`. - -Create .gitlab-ci.yml file with following content: - -```yml -stages: - - deploy - -deploy: - stage: deploy - image: - name: deployphp/deployer:7 - entrypoint: [""] - before_script: - - mkdir -p ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts - - chmod 644 ~/.ssh/known_hosts - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - script: - - dep deploy -vvv - resource_group: production - only: - - master -``` - -### Deployment concurrency - -Only one deployment job runs at a time with the [`resource_group` keyword](https://docs.gitlab.com/ee/ci/yaml/index.html#resource_group) in .gitlab-ci.yml. - -In addition, you can ensure that older deployment jobs are cancelled automatically when a newer deployment runs by enabling the [skip outdated deployment jobs](https://docs.gitlab.com/ee/ci/pipelines/settings.html#skip-outdated-deployment-jobs) feature. - -### Deploy secrets - -Is not recommended committing secrets in the repository, you could use a GitLab variable to store them. - -Many frameworks use dotenv to store secrets, let's create a GitLab file variable named `DOTENV`, so it can be deployed along with the code. - -Set up a deployer task to copy secrets to the server: - -```php -task('deploy:secrets', function () { - upload(getenv('DOTENV'), '{{deploy_path}}/shared/.env'); -}); -``` - -Run the task immediately after updating the code. diff --git a/docs/cli.md b/docs/cli.md deleted file mode 100755 index 0ad1ca71e..000000000 --- a/docs/cli.md +++ /dev/null @@ -1,147 +0,0 @@ -# CLI Usage - -We recommend adding next alias to your .bashrc file: - -```bash -alias dep='vendor/bin/dep' -``` - -As well as installing completion script for Deployer, completion supports: - -- tasks, -- options, -- host names, -- and configs. - -For example for macOS run next commands: - -```bash -brew install bash-completion -dep completion bash > /usr/local/etc/bash_completion.d/deployer -``` - -## Overriding configuration options - -For example, if your _deploy.php_ file contains this configuration: - -```php -set('ssh_multiplexing', false); -``` - -And you want to enable [ssh multiplexing](https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing) without modifying the recipe, you can pass the `-o` option to the `dep` command: - -``` -dep deploy -o ssh_multiplexing=true -``` - -To override multiple config options, you can pass multiple `-o` args: - -``` -dep deploy -o ssh_multiplexing=true -o branch=master -``` - -## Running arbitrary commands - -Run any command on one or more hosts: - -``` -dep run 'uptime -p' -``` - -## Tree command - -Deployer has group tasks and before/after hooks, so see task tree use **dep tree** command: - -``` -$ dep tree deploy -The task-tree for deploy: -└── deploy - ├── deploy:prepare - │ ├── deploy:info - │ ├── deploy:setup - │ ├── deploy:lock - │ ├── deploy:release - │ ├── deploy:update_code - │ ├── build // after deploy:update_code - │ ├── deploy:shared - │ └── deploy:writable - ├── deploy:vendors - ├── artisan:storage:link - ├── artisan:config:cache - ├── artisan:route:cache - ├── artisan:view:cache - ├── artisan:migrate - └── deploy:publish - ├── deploy:symlink - ├── deploy:unlock - ├── deploy:cleanup - └── deploy:success -``` - -## Execution plan - -Before executing tasks, Deployer needs to flatten task tree and to decide in which order it will be executing tasks -on which hosts. Use `--plan` option to output table with tasks/hosts: - -``` -$ dep deploy --plan all -┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐ -│ prod01 │ prod02 │ prod03 │ prod04 │ -├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤ -│ deploy:info │ deploy:info │ deploy:info │ deploy:info │ -│ deploy:setup │ deploy:setup │ deploy:setup │ deploy:setup │ -│ deploy:lock │ deploy:lock │ deploy:lock │ deploy:lock │ -│ deploy:release │ deploy:release │ deploy:release │ deploy:release │ -│ deploy:update_code │ deploy:update_code │ deploy:update_code │ deploy:update_code │ -│ build │ build │ build │ build │ -│ deploy:shared │ deploy:shared │ deploy:shared │ deploy:shared │ -│ deploy:writable │ deploy:writable │ deploy:writable │ deploy:writable │ -│ deploy:vendors │ deploy:vendors │ deploy:vendors │ deploy:vendors │ -│ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ -│ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ -│ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ -│ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ -│ artisan:migrate │ artisan:migrate │ artisan:migrate │ artisan:migrate │ -│ deploy:symlink │ - │ - │ - │ -│ - │ deploy:symlink │ - │ - │ -│ - │ - │ deploy:symlink │ - │ -│ - │ - │ - │ deploy:symlink │ -│ deploy:unlock │ deploy:unlock │ deploy:unlock │ deploy:unlock │ -│ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ -│ deploy:success │ deploy:success │ deploy:success │ deploy:success │ -└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘ -``` - -The **deploy.php**: - -```php -host('prod[01:04]'); -task('deploy:symlink')->limit(1); -``` - -## The `runLocally` working dir - -By default `runLocally()` commands are executed relative to the recipe file directory. -This can be overridden globally by setting an environment variable: - -``` -DEPLOYER_ROOT=. dep taskname` -``` - -Alternatively the root directory can be overridden per command via the cwd configuration. - -```php -runLocally('ls', ['cwd' => '/root/directory']); -``` - -## Play blackjack - -> Yeah, well. I'm gonna go build my own theme park... with blackjack and hookers! -> -> In fact, forget the park! -> -> — Bender - -``` -dep blackjack -``` diff --git a/docs/contrib/README.md b/docs/contrib/README.md deleted file mode 100644 index 221fbfe1e..000000000 --- a/docs/contrib/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# All Contrib Recipes - -* [Bugsnag Recipe](/docs/contrib/bugsnag.md) -* [Cachetool Recipe](/docs/contrib/cachetool.md) -* [Chatwork Recipe](/docs/contrib/chatwork.md) -* [Cimonitor Recipe](/docs/contrib/cimonitor.md) -* [Cloudflare Recipe](/docs/contrib/cloudflare.md) -* [Cpanel Recipe](/docs/contrib/cpanel.md) -* [Crontab Recipe](/docs/contrib/crontab.md) -* [Directadmin Recipe](/docs/contrib/directadmin.md) -* [Discord Recipe](/docs/contrib/discord.md) -* [Grafana Recipe](/docs/contrib/grafana.md) -* [Hangouts Recipe](/docs/contrib/hangouts.md) -* [Hipchat Recipe](/docs/contrib/hipchat.md) -* [Ispmanager Recipe](/docs/contrib/ispmanager.md) -* [Mattermost Recipe](/docs/contrib/mattermost.md) -* [Ms-teams Recipe](/docs/contrib/ms-teams.md) -* [Newrelic Recipe](/docs/contrib/newrelic.md) -* [Npm Recipe](/docs/contrib/npm.md) -* [Phinx Recipe](/docs/contrib/phinx.md) -* [Php-fpm Recipe](/docs/contrib/php-fpm.md) -* [Rabbit Recipe](/docs/contrib/rabbit.md) -* [Raygun Recipe](/docs/contrib/raygun.md) -* [Rocketchat Recipe](/docs/contrib/rocketchat.md) -* [Rollbar Recipe](/docs/contrib/rollbar.md) -* [Rsync Recipe](/docs/contrib/rsync.md) -* [Sentry Recipe](/docs/contrib/sentry.md) -* [Slack Recipe](/docs/contrib/slack.md) -* [Telegram Recipe](/docs/contrib/telegram.md) -* [Webpack_encore Recipe](/docs/contrib/webpack_encore.md) -* [Workplace Recipe](/docs/contrib/workplace.md) -* [Yammer Recipe](/docs/contrib/yammer.md) -* [Yarn Recipe](/docs/contrib/yarn.md) \ No newline at end of file diff --git a/docs/contrib/bugsnag.md b/docs/contrib/bugsnag.md deleted file mode 100644 index 491874026..000000000 --- a/docs/contrib/bugsnag.md +++ /dev/null @@ -1,41 +0,0 @@ - - - - -# Bugsnag Recipe - -```php -require 'contrib/bugsnag.php'; -``` - -[Source](/contrib/bugsnag.php) - - - - -## Configuration - -- *bugsnag_api_key* – the API Key associated with the project. Informs Bugsnag which project has been deployed. This is the only required field. -- *bugsnag_provider* – the name of your source control provider. Required when repository is supplied and only for on-premise services. -- *bugsnag_app_version* – the app version of the code you are currently deploying. Only set this if you tag your releases with semantic version numbers and deploy infrequently. (Optional.) - -## Usage - -Since you should only notify Bugsnag of a successful deployment, the `bugsnag:notify` task should be executed right at the end. - -```php -after('deploy', 'bugsnag:notify'); -``` - - - -## Tasks - -### bugsnag:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/bugsnag.php#L23) - -Notifies Bugsnag of deployment. - - - - diff --git a/docs/contrib/cachetool.md b/docs/contrib/cachetool.md deleted file mode 100644 index c257ea739..000000000 --- a/docs/contrib/cachetool.md +++ /dev/null @@ -1,138 +0,0 @@ - - - - -# Cachetool Recipe - -```php -require 'contrib/cachetool.php'; -``` - -[Source](/contrib/cachetool.php) - - - - -## Configuration - -- **cachetool** *(optional)*: accepts a *string* with the unix socket or ip address to php-fpm. If `cachetool` is not given, then the application will look for a `cachetool.yml` file and read the configuration from there. - - ```php - set('cachetool', '/var/run/php-fpm.sock'); - // or - set('cachetool', '127.0.0.1:9000'); - ``` - -You can also specify different cachetool settings for each host: -```php -host('staging') - ->set('cachetool', '127.0.0.1:9000'); - -host('production') - ->set('cachetool', '/var/run/php-fpm.sock'); -``` - -By default, if no `cachetool` parameter is provided, this recipe will fallback to the global setting. - -If your deployment user does not have permission to access the php-fpm.sock, you can alternatively use -the web adapter that creates a temporary php file and makes a web request to it with a configuration like -```php -set('cachetool_args', '--web --web-path=./public --web-url=https://{{hostname}}'); -``` - -## Usage - -Since APCu and OPcache deal with compiling and caching files, they should be executed right after the symlink is created for the new release: - -```php -after('deploy:symlink', 'cachetool:clear:opcache'); -or -after('deploy:symlink', 'cachetool:clear:apcu'); -``` - -## Read more - -Read more information about cachetool on the website: -http://gordalina.github.io/cachetool/ - - -## Configuration -### cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L48) - - - - - -### cachetool_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L56) - -URL to download cachetool from if it is not available - -CacheTool 9.x works with PHP >=8.1 -CacheTool 8.x works with PHP >=8.0 -CacheTool 7.x works with PHP >=7.3 - -```php title="Default value" -'https://github.com/gordalina/cachetool/releases/download/9.0.0/cachetool.phar' -``` - - -### cachetool_args -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L57) - - - - - -### bin/cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L58) - - - -```php title="Default value" -if (!test('[ -f {{release_or_current_path}}/cachetool.phar ]')) { -run("cd {{release_or_current_path}} && curl -sLO {{cachetool_url}}"); -} -return '{{release_or_current_path}}/cachetool.phar'; -``` - - -### cachetool_options -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L64) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### cachetool:clear:opcache -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L81) - -Clears OPcode cache. - -Clear opcache cache - - -### cachetool:clear:apcu -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L89) - -Clears APCu system cache. - -Clear APCU cache - - -### cachetool:clear:stat -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L97) - -Clears file status and realpath caches. - -Clear file status cache, including the realpath cache - - diff --git a/docs/contrib/chatwork.md b/docs/contrib/chatwork.md deleted file mode 100644 index 0c9213e07..000000000 --- a/docs/contrib/chatwork.md +++ /dev/null @@ -1,205 +0,0 @@ - - - - -# Chatwork Recipe - -```php -require 'contrib/chatwork.php'; -``` - -[Source](/contrib/chatwork.php) - - - -# Chatwork Recipe - -## Installing - 1. Create chatwork account by any manual in the internet - 2. Take chatwork token (Like: b29a700e2d15bef3f26ae6a5c142d1ea) and set `chatwork_token` parameter - 3. Take chatwork room id from url after clicked on the room, and set `chatwork_room_id` parameter - 4. If you want, you can edit `chatwork_notify_text`, `chatwork_success_text` or `chatwork_failure_text` - 5. Require chatwork recipe in your `deploy.php` file - -```php -# https://deployer.org/recipes.html - -require 'recipe/chatwork.php'; -``` - -Add hook on deploy: - -```php -before('deploy', 'chatwork:notify'); -``` - -## Configuration - -- `chatwork_token` – chatwork bot token, **required** -- `chatwork_room_id` — chatwork room to push messages to **required** -- `chatwork_notify_text` – notification message template - ``` - [info] - [title](*) Deployment Status: Deploying[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info] - ``` -- `chatwork_success_text` – success template, default: - ``` - [info] - [title](*) Deployment Status: Successfully[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info]" - ``` -- `chatwork_failure_text` – failure template, default: - ``` - [info] - [title](*) Deployment Status: Failed[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info]" - ``` - -## Tasks - -- `chatwork:notify` – send message to chatwork -- `chatwork:notify:success` – send success message to chatwork -- `chatwork:notify:failure` – send failure message to chatwork - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'chatwork:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('success', 'chatwork:notify:success'); -``` -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'chatwork:notify:failure'); -``` - - -## Configuration -### chatwork_token -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L91) - -Chatwork settings -:::info Required -Throws exception if not set. -::: - - - - -### chatwork_room_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L94) - - -:::info Required -Throws exception if not set. -::: - - - - -### chatwork_api -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L97) - - - -```php title="Default value" -return 'https://api.chatwork.com/v2/rooms/' . get('chatwork_room_id') . '/messages'; -``` - - -### chatwork_notify_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L102) - -The Messages - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Deploying[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - -### chatwork_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L103) - - - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Successfully[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - -### chatwork_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L104) - - - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Failed[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - - -## Tasks - -### chatwork_send_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L107) - - - -Helpers - - -### chatwork:test -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L116) - -Tests messages. - -Tasks - - -### chatwork:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L127) - -Notifies Chatwork. - - - - -### chatwork:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L142) - -Notifies Chatwork about deploy finish. - - - - -### chatwork:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L158) - -Notifies Chatwork about deploy failure. - - - - diff --git a/docs/contrib/cimonitor.md b/docs/contrib/cimonitor.md deleted file mode 100644 index 6b981b116..000000000 --- a/docs/contrib/cimonitor.md +++ /dev/null @@ -1,223 +0,0 @@ - - - - -# Cimonitor Recipe - -```php -require 'contrib/cimonitor.php'; -``` - -[Source](/contrib/cimonitor.php) - - - -Monitor your deployments on [CIMonitor](https://github.com/CIMonitor/CIMonitor). - -![CIMonitorGif](https://www.steefmin.xyz/deployer-example.gif) - - -Add tasks on deploy: - -```php -before('deploy', 'cimonitor:notify'); -after('deploy:success', 'cimonitor:notify:success'); -after('deploy:failed', 'cimonitor:notify:failure'); -``` - -## Configuration - -- `cimonitor_webhook` – CIMonitor server webhook url, **required** - ``` - set('cimonitor_webhook', 'https://cimonitor.enrise.com/webhook/deployer'); - ``` -- `cimonitor_title` – the title of application, default the username\reponame combination from `{{repository}}` - ``` - set('cimonitor_title', ''); - ``` -- `cimonitor_user` – User object with name and email, default gets information from `git config` - ``` - set('cimonitor_user', function () { - return [ - 'name' => 'John Doe', - 'email' => 'john@enrise.com', - ]; - }); - ``` - -Various cimonitor statusses are set, in case you want to change these yourselves. See the [CIMonitor documentation](https://cimonitor.readthedocs.io/en/latest/) for the usages of different states. - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'cimonitor:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'cimonitor:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'cimonitor:notify:failure'); -``` - - -## Configuration -### cimonitor_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L63) - -Title of project based on git repo - -```php title="Default value" -$repo = get('repository'); -$pattern = '/\w+\/\w+/'; -return preg_match($pattern, $repo, $titles) ? $titles[0] : $repo; -``` - - -### cimonitor_user -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L68) - - - -```php title="Default value" -return [ -'name' => runLocally('git config --get user.name'), -'email' => runLocally('git config --get user.email'), -]; -``` - - -### cimonitor_status_info -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L76) - -CI monitor status states and job states - -```php title="Default value" -'info' -``` - - -### cimonitor_status_warning -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L77) - - - -```php title="Default value" -'warning' -``` - - -### cimonitor_status_error -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L78) - - - -```php title="Default value" -'error' -``` - - -### cimonitor_status_success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L79) - - - -```php title="Default value" -'success' -``` - - -### cimonitor_job_state_info -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L80) - - - -```php title="Default value" -get('cimonitor_status_info') -``` - - -### cimonitor_job_state_pending -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L81) - - - -```php title="Default value" -'pending' -``` - - -### cimonitor_job_state_running -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L82) - - - -```php title="Default value" -'running' -``` - - -### cimonitor_job_state_warning -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L83) - - - -```php title="Default value" -get('cimonitor_status_warning') -``` - - -### cimonitor_job_state_error -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L84) - - - -```php title="Default value" -get('cimonitor_status_error') -``` - - -### cimonitor_job_state_success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L85) - - - -```php title="Default value" -get('cimonitor_status_success') -``` - - - -## Tasks - -### cimonitor:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L88) - -Notifies CIMonitor. - - - - -### cimonitor:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L114) - -Notifies CIMonitor about deploy finish. - - - - -### cimonitor:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L142) - -Notifies CIMonitor about deploy failure. - - - - diff --git a/docs/contrib/cloudflare.md b/docs/contrib/cloudflare.md deleted file mode 100644 index 47226c85d..000000000 --- a/docs/contrib/cloudflare.md +++ /dev/null @@ -1,43 +0,0 @@ - - - - -# Cloudflare Recipe - -```php -require 'contrib/cloudflare.php'; -``` - -[Source](/contrib/cloudflare.php) - - - - -### Configuration - -- `cloudflare` – array with configuration for cloudflare - - `service_key` – Cloudflare Service Key. If this is not provided, use api_key and email. - - `api_key` – Cloudflare API key generated on the "My Account" page. - - `email` – Cloudflare Email address associated with your account. - - `api_token` – Cloudflare API Token generated on the "My Account" page. - - `domain` – The domain you want to clear (optional if zone_id is provided). - - `zone_id` – Cloudflare Zone ID (optional). - -### Usage - -Since the website should be built and some load is likely about to be applied to your server, this should be one of, -if not the, last tasks before cleanup - - - - -## Tasks - -### deploy:cloudflare -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cloudflare.php#L23) - -Clears Cloudflare Cache. - - - - diff --git a/docs/contrib/cpanel.md b/docs/contrib/cpanel.md deleted file mode 100644 index e75e507f3..000000000 --- a/docs/contrib/cpanel.md +++ /dev/null @@ -1,175 +0,0 @@ - - - - -# Cpanel Recipe - -```php -require 'contrib/cpanel.php'; -``` - -[Source](/contrib/cpanel.php) - - - -### Description -This is a recipe that uses the [cPanel 2 API](https://documentation.cPanel.net/display/DD/Guide+to+cPanel+API+2). - -Unfortunately the [UAPI](https://documentation.cPanel.net/display/DD/Guide+to+UAPI) that is recommended does not have support for creating addon domains. -The main idea behind is for staging purposes but I guess you can use it for other interesting concepts. - -The idea is, every branch possibly has its own staging domain/subdomain (staging-neat-feature.project.com) and database db_neat-feature_project so it can be tested. -This recipe can make the domain/subdomain and database creation part of the deployment process so you don't have to manually create them through an interface. - - -### Configuration -The example uses a .env file and Dotenv for configuration, but you can set the parameters as you wish -``` -set('cpanel', [ - 'host' => getenv('CPANEL_HOST'), - 'port' => getenv('CPANEL_PORT'), - 'username' => getenv('CPANEL_USERNAME'), - 'auth_type' => getenv('CPANEL_AUTH_TYPE'), - 'token' => getenv('CPANEL_TOKEN'), - 'user' => getenv('CPANEL_USER'), - 'db_user' => getenv('CPANEL_DB_USER'), - 'db_user_privileges' => getenv('CPANEL_DB_PRIVILEGES'), - 'timeout' => 500, - - 'allowInStage' => ['staging', 'beta', 'alpha'], - - 'create_domain_format' => '%s-%s-%s', - 'create_domain_values' => ['staging', 'master', get('application')], - 'subdomain_prefix' => substr(md5(get('application')), 0,4) . '-', - 'subdomain_suffix' => getenv('SUDOMAIN_SUFFIX'), - - - 'create_db_format' => '%s_%s-%s-%s', - 'create_db_values' => ['apps', 'staging','master', get('application')], - -]); -``` - -- `cpanel` – array with configuration for cPanel - - `username` – WHM account - - `user` – cPanel account that you want in charge of the domain - - `token` – WHM API token - - `create_domain_format` – Format for name creation of domain - - `create_domain_values` – The actual value reference for naming - - `subdomain_prefix` – cPanel has a weird way of dealing with addons and subdomains, you cannot create 2 addons with the same subdomain, so you need to change it in some way, example uses first 4 chars of md5(app_name) - - `subdomain_suffix` – cPanel has a weird way of dealing with addons and subdomains, so the suffix needs to be your main domain for that account for deletion purposes - - `addondir` – addon dir is different from the deploy path because cPanel "injects" /home/user/ into the path, so tilde cannot be used - - `allowInStage` – Define the stages that cPanel recipe actions are allowed in - - -#### .env file example -``` -CPANEL_HOST=xxx.xxx.xxx.xxx -CPANEL_PORT=2087 -CPANEL_USERNAME=root -CPANEL_TOKEN=xxxx -CPANEL_USER=xxx -CPANEL_AUTH_TYPE=hash -CPANEL_DB_USER=db_user -CPANEL_DB_PRIVILEGES="ALL PRIVILEGES" -SUDOMAIN_SUFFIX=.mymaindomain.com - -``` - -### Tasks - -- `cpanel:createaddondomain` Creates an addon domain -- `cpanel:deleteaddondomain` Removes an addon domain -- `cpanel:createdb` Creates a new database - -### Usage - -A complete example with configs, staging and deployment - -``` -load(); // this is used just so an .env file can be used for credentials - -require 'cpanel.php'; - - -Project name -set('application', 'myproject.com'); -Project repository -set('repository', 'git@github.com:myorg/myproject.com'); - - - - - -set('cpanel', [ - 'host' => getenv('CPANEL_HOST'), - 'port' => getenv('CPANEL_PORT'), - 'username' => getenv('CPANEL_USERNAME'), - 'auth_type' => getenv('CPANEL_AUTH_TYPE'), - 'token' => getenv('CPANEL_TOKEN'), - 'user' => getenv('CPANEL_USER'), - 'db_user' => getenv('CPANEL_DB_USER'), - 'db_user_privileges' => getenv('CPANEL_DB_PRIVILEGES'), - 'timeout' => 500, - 'allowInStage' => ['staging', 'beta', 'alpha'], - - 'create_domain_format' => '%s-%s-%s', - 'create_domain_values' => ['staging', 'master', get('application')], - 'subdomain_prefix' => substr(md5(get('application')), 0,4) . '-', - 'subdomain_suffix' => getenv('SUDOMAIN_SUFFIX'), - - - 'create_db_format' => '%s_%s-%s-%s', - 'create_db_values' => ['apps', 'staging','master', get('application')], - -]); - -host('myproject.com') - ->stage('staging') - ->set('cpanel_createdb', vsprintf(get('cpanel')['create_db_format'], get('cpanel')['create_db_values'])) - ->set('branch', 'dev-branch') - ->set('deploy_path', '~/staging/' . vsprintf(get('cpanel')['create_domain_format'], get('cpanel')['create_domain_values'])) - ->set('addondir', 'staging/' . vsprintf(get('cpanel')['create_domain_format'], get('cpanel')['create_domain_values'])); -Tasks -task('build', function () { - run('cd {{release_path}} && build'); -}); - -after('deploy:prepare', 'cpanel:createaddondomain'); -after('deploy:prepare', 'cpanel:createdb'); -``` - - - -## Tasks - -### cpanel:createdb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L195) - -Creates database though CPanel API. - - - - -### cpanel:createaddondomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L223) - -Creates addon domain though CPanel API. - - - - -### cpanel:deleteaddondomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L246) - -Deletes addon domain though CPanel API. - - - - diff --git a/docs/contrib/crontab.md b/docs/contrib/crontab.md deleted file mode 100644 index 2706aed94..000000000 --- a/docs/contrib/crontab.md +++ /dev/null @@ -1,65 +0,0 @@ - - - - -# Crontab Recipe - -```php -require 'contrib/crontab.php'; -``` - -[Source](/contrib/crontab.php) - - - -Recipe for adding crontab jobs. - -It checks for duplicates by the command part of the job. Changing the schedule will update the crontab. So when you change the command part you have to manually remove the old one. Use `crontab -e` on the server to remove it. - -## Configuration - -- *crontab:jobs* - An array of strings with crontab lines. - -## Usage - -```php -require 'contrib/crontab.php'; - -after('deploy:success', 'crontab:sync'); - -add('crontab:jobs', [ - '* * * * * cd {{current_path}} && {{bin/php}} artisan schedule:run >> /dev/null 2>&1', -]); -``` - - -## Configuration -### bin/crontab -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L26) - -Get path to bin - -```php title="Default value" -return which('crontab'); -``` - - - -## Tasks - -### crontab:load -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L31) - -Loads crontab. - - - - -### crontab:sync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L56) - -Sync crontab jobs. - - - - diff --git a/docs/contrib/directadmin.md b/docs/contrib/directadmin.md deleted file mode 100644 index 1da4c6ed1..000000000 --- a/docs/contrib/directadmin.md +++ /dev/null @@ -1,83 +0,0 @@ - - - - -# Directadmin Recipe - -```php -require 'contrib/directadmin.php'; -``` - -[Source](/contrib/directadmin.php) - - - -### Configuration -- `directadmin` – array with configuration for DirectAdmin - - `host` – DirectAdmin host - - `port` – DirectAdmin port (default: 2222, not required) - - `scheme` – DirectAdmin scheme (default: http, not required) - - `username` – DirectAdmin username - - `password` – DirectAdmin password (it is recommended to use login keys!) - - `db_user` – Database username (required when using directadmin:createdb or directadmin:deletedb) - - `db_name` – Database namse (required when using directadmin:createdb) - - `db_password` – Database password (required when using directadmin:createdb) - - `domain_name` – Domain to create, delete or edit (required when using directadmin:createdomain, directadmin:deletedomain, directadmin:symlink-private-html or directadmin:php-version) - - `domain_ssl` – Enable SSL, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_cgi` – Enable CGI, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_php` – Enable PHP, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_php_version` – Domain PHP Version, default: 1 (required when using directadmin:php-version) - - - - -## Tasks - -### directadmin:createdb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L74) - -Creates a database on DirectAdmin. - - - - -### directadmin:deletedb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L94) - -Deletes a database on DirectAdmin. - - - - -### directadmin:createdomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L109) - -Creates a domain on DirectAdmin. - - - - -### directadmin:deletedomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L127) - -Deletes a domain on DirectAdmin. - - - - -### directadmin:symlink-private-html -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L143) - -Symlink your private_html to public_html. - - - - -### directadmin:php-version -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L159) - -Changes the PHP version from a domain. - - - - diff --git a/docs/contrib/discord.md b/docs/contrib/discord.md deleted file mode 100644 index 510e0bd96..000000000 --- a/docs/contrib/discord.md +++ /dev/null @@ -1,160 +0,0 @@ - - - - -# Discord Recipe - -```php -require 'contrib/discord.php'; -``` - -[Source](/contrib/discord.php) - - - -## Installing - -Add hook on deploy: - -```php -before('deploy', 'discord:notify'); -``` - -## Configuration - -- `discord_channel` – Discord channel ID, **required** -- `discord_token` – Discord channel token, **required** - -- `discord_notify_text` – notification message template, markdown supported, default: - ```markdown - :​information_source: **{{user}}** is deploying branch `{{branch}}` to _{{target}}_ - ``` -- `discord_success_text` – success template, default: - ```markdown - :​white_check_mark: Branch `{{branch}}` deployed to _{{target}}_ successfully - ``` -- `discord_failure_text` – failure template, default: - ```markdown - :​no_entry_sign: Branch `{{branch}}` has failed to deploy to _{{target}}_ - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'discord:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'discord:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'discord:notify:failure'); -``` - - -## Configuration -### discord_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L53) - - - -```php title="Default value" -return 'https://discordapp.com/api/webhooks/{{discord_channel}}/{{discord_token}}/slack'; -``` - - -### discord_notify_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L58) - -Deploy messages - -```php title="Default value" -return [ -'text' => parse(':​information_source: **{{user}}** is deploying branch `{{branch}}` to _{{target}}_'), -]; -``` - - -### discord_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L63) - - - -```php title="Default value" -return [ -'text' => parse(':​white_check_mark: Branch `{{branch}}` deployed to _{{target}}_ successfully'), -]; -``` - - -### discord_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L68) - - - -```php title="Default value" -return [ -'text' => parse(':​no_entry_sign: Branch `{{branch}}` has failed to deploy to _{{target}}_'), -]; -``` - - -### discord_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L75) - -The message - -```php title="Default value" -'discord_notify_text' -``` - - - -## Tasks - -### discord_send_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L78) - - - -Helpers - - -### discord:test -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L86) - -Tests messages. - -Tasks - - -### discord:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L97) - -Notifies Discord. - - - - -### discord:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L105) - -Notifies Discord about deploy finish. - - - - -### discord:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L113) - -Notifies Discord about deploy failure. - - - - diff --git a/docs/contrib/grafana.md b/docs/contrib/grafana.md deleted file mode 100644 index 2f650e4aa..000000000 --- a/docs/contrib/grafana.md +++ /dev/null @@ -1,55 +0,0 @@ - - - - -# Grafana Recipe - -```php -require 'contrib/grafana.php'; -``` - -[Source](/contrib/grafana.php) - - - - -## Configuration options - -- **url** *(required)*: the URL to the creates annotation api endpoint. -- **token** *(required)*: authentication token. Can be created at Grafana Console. -- **time** *(optional)* – set deploy time of annotation. specify epoch milliseconds. (Defaults is set to the current time in epoch milliseconds.) -- **tags** *(optional)* – set tag of annotation. -- **text** *(optional)* – set text of annotation. (Defaults is set to "Deployed " + git log -n 1 --format="%h") - -```php -deploy.php - -set('grafana', [ - 'token' => 'eyJrIj...', - 'url' => 'http://grafana/api/annotations', - 'tags' => ['deploy', 'production'], -]); - -``` - -## Usage - -If you want to create annotation about successful end of deployment. - -```php -after('deploy:success', 'grafana:annotation'); -``` - - - - -## Tasks - -### grafana:annotation -[Source](https://github.com/deployphp/deployer/blob/master/contrib/grafana.php#L38) - -Creates Grafana annotation of deployment. - - - - diff --git a/docs/contrib/hangouts.md b/docs/contrib/hangouts.md deleted file mode 100644 index 52e8e2954..000000000 --- a/docs/contrib/hangouts.md +++ /dev/null @@ -1,130 +0,0 @@ - - - - -# Hangouts Recipe - -```php -require 'contrib/hangouts.php'; -``` - -[Source](/contrib/hangouts.php) - - - - -Add hook on deploy: - -```php -before('deploy', 'chat:notify'); -``` - -## Configuration - -- `chat_webhook` – chat incoming webhook url, **required** -- `chat_title` – the title of your notification card, default `{{application}}` -- `chat_subtitle` – the subtitle of your card, default `{{hostname}}` -- `chat_favicon` – an image for the header of your card, default `http://{{hostname}}/favicon.png` -- `chat_line1` – first line of the text in your card, default: `{{branch}}` -- `chat_line2` – second line of the text in your card, default: `{{stage}}` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'chat:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'chat:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'chat:notify:failure'); -``` - - - -## Configuration -### chat_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L45) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### chat_subtitle -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L49) - - - -```php title="Default value" -get('hostname') -``` - - -### favicon -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L52) - -If 'favicon' is set Google Hangouts Chat will decorate your card with an image. - -```php title="Default value" -'http://{{hostname}}/favicon.png' -``` - - -### chat_line1 -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L55) - -Deploy messages - -```php title="Default value" -'{{branch}}' -``` - - -### chat_line2 -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L56) - - - -```php title="Default value" -'{{stage}}' -``` - - - -## Tasks - -### chat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L59) - -Notifies Google Hangouts Chat. - - - - -### chat:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L101) - -Notifies Google Hangouts Chat about deploy finish. - - - - -### chat:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L143) - -Notifies Google Hangouts Chat about deploy failure. - - - - diff --git a/docs/contrib/hipchat.md b/docs/contrib/hipchat.md deleted file mode 100644 index a35bdf340..000000000 --- a/docs/contrib/hipchat.md +++ /dev/null @@ -1,85 +0,0 @@ - - - - -# Hipchat Recipe - -```php -require 'contrib/hipchat.php'; -``` - -[Source](/contrib/hipchat.php) - - - -## Configuration - -- `hipchat_token` – Hipchat V1 auth token -- `hipchat_room_id` – Room ID or name -- `hipchat_message` – Deploy message, default is `_{{user}}_ deploying `{{branch}}` to *{{target}}*` -- `hipchat_from` – Default to target -- `hipchat_color` – Message color, default is **green** -- `hipchat_url` – The URL to the message endpoint, default is https://api.hipchat.com/v1/rooms/message - -## Usage - -Since you should only notify Hipchat room of a successful deployment, the `hipchat:notify` task should be executed right at the end. - -```php -after('deploy', 'hipchat:notify'); -``` - - - -## Configuration -### hipchat_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L25) - - - -```php title="Default value" -'green' -``` - - -### hipchat_from -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L26) - - - -```php title="Default value" -'{{target}}' -``` - - -### hipchat_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L27) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### hipchat_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L28) - - - -```php title="Default value" -'https://api.hipchat.com/v1/rooms/message' -``` - - - -## Tasks - -### hipchat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L31) - -Notifies Hipchat channel of deployment. - - - - diff --git a/docs/contrib/ispmanager.md b/docs/contrib/ispmanager.md deleted file mode 100644 index fcfd98fb9..000000000 --- a/docs/contrib/ispmanager.md +++ /dev/null @@ -1,245 +0,0 @@ - - - - -# Ispmanager Recipe - -```php -require 'contrib/ispmanager.php'; -``` - -[Source](/contrib/ispmanager.php) - - - -This recipe for work with ISPManager Lite panel by API. - - -## Configuration -### ispmanager_owner -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L10) - - - -```php title="Default value" -'www-root' -``` - - -### ispmanager_doc_root -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L11) - - - -```php title="Default value" -'/var/www/' . get('ispmanager_owner') . '/data/' -``` - - -### ispmanager -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L14) - -ISPManager default configuration - -```php title="Default value" -[ - 'api' => [ - 'dsn' => 'https://root:password@localhost:1500/ispmgr', - 'secure' => true, - ], - 'createDomain' => NULL, - 'updateDomain' => NULL, - 'deleteDomain' => NULL, - 'createDatabase' => NULL, - 'deleteDatabase' => NULL, - 'phpSelect' => NULL, - 'createAlias' => NULL, - 'deleteAlias' => NULL, -] -``` - - -### vhost -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L30) - -Vhost default configuration - -```php title="Default value" -[ - 'name' => '{{domain}}', - 'php_enable' => 'on', - 'aliases' => 'www.{{domain}}', - 'home' => 'www/{{domain}}', - 'owner' => get('ispmanager_owner'), - 'email' => 'webmaster@{{domain}}', - 'charset' => 'off', - 'dirindex' => 'index.php uploaded.html', - 'ssi' => 'on', - 'php' => 'on', - 'php_mode' => 'php_mode_mod', - 'basedir' => 'on', - 'php_apache_version' => 'native', - 'cgi' => 'off', - 'log_access' => 'on', - 'log_error' => 'on', -] -``` - - -### ispmanager_session -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L50) - -Storage - - - -### ispmanager_databases -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L51) - - - -```php title="Default value" -[ - 'servers' => [], - 'hosts' => [], - 'dblist' => [], -] -``` - - -### ispmanager_domains -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L57) - - - - - -### ispmanager_phplist -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L58) - - - - - -### ispmanager_aliaslist -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L59) - - - - - - -## Tasks - -### ispmanager:init -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L62) - -Installs ispmanager. - - - - -### ispmanager:db-server-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L85) - -Takes database servers list. - - - - -### ispmanager:db-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L122) - -Takes databases list. - - - - -### ispmanager:domain-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L144) - -Takes domain list. - - - - -### ispmanager:db-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L160) - -Creates new database. - - - - -### ispmanager:db-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L230) - -Deletes database. - - - - -### ispmanager:domain-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L281) - -Creates new domain. - - - - -### ispmanager:get-php-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L327) - -Gets allowed PHP modes and versions. - - - - -### ispmanager:print-php-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L373) - -Prints allowed PHP modes and versions. - - - - -### ispmanager:domain-php-select -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L411) - -Switches PHP version for domain. - - - - -### ispmanager:domain-alias-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L480) - -Creates new domain alias. - - - - -### ispmanager:domain-alias-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L549) - -Deletes domain alias. - - - - -### ispmanager:domain-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L617) - -Deletes domain. - - - - -### ispmanager:process -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L664) - -Auto task processing. - - - - diff --git a/docs/contrib/mattermost.md b/docs/contrib/mattermost.md deleted file mode 100644 index 5b5516bac..000000000 --- a/docs/contrib/mattermost.md +++ /dev/null @@ -1,206 +0,0 @@ - - - - -# Mattermost Recipe - -```php -require 'contrib/mattermost.php'; -``` - -[Source](/contrib/mattermost.php) - - - -## Installing - -Create a Mattermost incoming webhook, through the administration panel. - -Add hook on deploy: - -``` -before('deploy', 'mattermost:notify'); -``` - -## Configuration - - - `mattermost_webhook` - incoming mattermost webook **required** - ``` - set('mattermost_webook', 'https://{your-mattermost-site}/hooks/xxx-generatedkey-xxx'); - ``` - - - `mattermost_channel` - overrides the channel the message posts in - ``` - set('mattermost_channel', 'town-square'); - ``` - - - `mattermost_username` - overrides the username the message posts as - ``` - set('mattermost_username', 'deployer'); - ``` - - - `mattermost_icon_url` - overrides the profile picture the message posts with - ``` - set('mattermost_icon_url', 'https://domain.com/your-icon.png'); - ``` - - - `mattermost_text` - notification message - ``` - set('mattermost_text', '_{{user}}_ deploying `{{branch}}` to **{{target}}**'); - ``` - - - `mattermost_success_text` – success template, default: - ``` - set('mattermost_success_text', 'Deploy to **{{target}}** successful {{mattermost_success_emoji}}'); - ``` - - - `mattermost_failure_text` – failure template, default: - ``` - set('mattermost_failure_text', 'Deploy to **{{target}}** failed {{mattermost_failure_emoji}}'); - ``` - - - `mattermost_success_emoji` – emoji added at the end of success text - - `mattermost_failure_emoji` – emoji added at the end of failure text - - For detailed information about Mattermost hooks see: https://developers.mattermost.com/integrate/incoming-webhooks/ - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'mattermost:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'mattermost:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'mattermost:notify:failure'); -``` - - - -## Configuration -### mattermost_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L80) - - - -```php title="Default value" -null -``` - - -### mattermost_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L81) - - - -```php title="Default value" -null -``` - - -### mattermost_username -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L82) - - - -```php title="Default value" -'deployer' -``` - - -### mattermost_icon_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L83) - - - -```php title="Default value" -null -``` - - -### mattermost_success_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L85) - - - -```php title="Default value" -':​white_check_mark:' -``` - - -### mattermost_failure_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L86) - - - -```php title="Default value" -':​x:' -``` - - -### mattermost_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L88) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to **{{target}}**' -``` - - -### mattermost_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L89) - - - -```php title="Default value" -'Deploy to **{{target}}** successful {{mattermost_success_emoji}}' -``` - - -### mattermost_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L90) - - - -```php title="Default value" -'Deploy to **{{target}}** failed {{mattermost_failure_emoji}}' -``` - - - -## Tasks - -### mattermost:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L93) - -Notifies mattermost. - - - - -### mattermost:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L114) - -Notifies mattermost about deploy finish. - - - - -### mattermost:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L135) - -Notifies mattermost about deploy failure. - - - - diff --git a/docs/contrib/ms-teams.md b/docs/contrib/ms-teams.md deleted file mode 100644 index e4332b478..000000000 --- a/docs/contrib/ms-teams.md +++ /dev/null @@ -1,183 +0,0 @@ - - - - -# Ms-teams Recipe - -```php -require 'contrib/ms-teams.php'; -``` - -[Source](/contrib/ms-teams.php) - - - -## Installing - -Require ms-teams recipe in your `deploy.php` file: - -Setup: -1. Open MS Teams -2. Navigate to Teams section -3. Select existing or create new team -4. Select existing or create new channel -5. Hover over channel to get tree dots, click, in menu select "Connectors" -6. Search for and configure "Incoming Webhook" -7. Confirm/create and copy your Webhook URL -8. Setup deploy.php - Add in header: -```php -require 'contrib/ms-teams.php'; -set('teams_webhook', 'https://outlook.office.com/webhook/...'); -``` -Add in content: -```php -before('deploy', 'teams:notify'); -after('deploy:success', 'teams:notify:success'); -after('deploy:failed', 'teams:notify:failure'); -``` -9.) Sip your coffee - -## Configuration - -- `teams_webhook` – teams incoming webhook url, **required** - ``` - set('teams_webhook', 'https://outlook.office.com/webhook/...'); - ``` -- `teams_title` – the title of application, default `{{application}}` -- `teams_text` – notification message template, markdown supported - ``` - set('teams_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `teams_success_text` – success template, default: - ``` - set('teams_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `teams_failure_text` – failure template, default: - ``` - set('teams_failure_text', 'Deploy to *{{target}}* failed'); - ``` - -- `teams_color` – color's attachment -- `teams_success_color` – success color's attachment -- `teams_failure_color` – failure color's attachment - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'teams:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'teams:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'teams:notify:failure'); -``` - - -## Configuration -### teams_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L78) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### teams_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L83) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### teams_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L84) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### teams_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L85) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### teams_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L88) - -Color of attachment - -```php title="Default value" -'#4d91f7' -``` - - -### teams_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L89) - - - -```php title="Default value" -'#00c100' -``` - - -### teams_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L90) - - - -```php title="Default value" -'#ff0909' -``` - - - -## Tasks - -### teams:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L93) - -Notifies Teams. - - - - -### teams:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L107) - -Notifies Teams about deploy finish. - - - - -### teams:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L121) - -Notifies Teams about deploy failure. - - - - diff --git a/docs/contrib/newrelic.md b/docs/contrib/newrelic.md deleted file mode 100644 index ccb9b48ef..000000000 --- a/docs/contrib/newrelic.md +++ /dev/null @@ -1,84 +0,0 @@ - - - - -# Newrelic Recipe - -```php -require 'contrib/newrelic.php'; -``` - -[Source](/contrib/newrelic.php) - - - -## Configuration - -- `newrelic_app_id` – newrelic's app id -- `newrelic_api_key` – newrelic's api key -- `newrelic_description` – message to send -- `newrelic_endpoint` – newrelic's REST API endpoint - -## Usage - -Since you should only notify New Relic of a successful deployment, the `newrelic:notify` task should be executed right at the end. - -```php -after('deploy', 'newrelic:notify'); -``` - - - -## Configuration -### newrelic_app_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L23) - - -:::info Required -Throws exception if not set. -::: - - - - -### newrelic_description -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L27) - - - -```php title="Default value" -return runLocally('git log -n 1 --format="%an: %s" | tr \'"\' "\'"'); -``` - - -### newrelic_revision -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L31) - - - -```php title="Default value" -return runLocally('git log -n 1 --format="%h"'); -``` - - -### newrelic_endpoint -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L35) - - - -```php title="Default value" -'api.newrelic.com' -``` - - - -## Tasks - -### newrelic:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L38) - -Notifies New Relic of deployment. - - - - diff --git a/docs/contrib/npm.md b/docs/contrib/npm.md deleted file mode 100644 index b8e4046ac..000000000 --- a/docs/contrib/npm.md +++ /dev/null @@ -1,52 +0,0 @@ - - - - -# Npm Recipe - -```php -require 'contrib/npm.php'; -``` - -[Source](/contrib/npm.php) - - - -## Configuration - -- `bin/npm` *(optional)*: set npm binary, automatically detected otherwise. - -## Usage - -```php -after('deploy:update_code', 'npm:install'); -``` - - - -## Configuration -### bin/npm -[Source](https://github.com/deployphp/deployer/blob/master/contrib/npm.php#L16) - - - -```php title="Default value" -return which('npm'); -``` - - - -## Tasks - -### npm:install -[Source](https://github.com/deployphp/deployer/blob/master/contrib/npm.php#L26) - -Installs npm packages. - -Uses `npm ci` command. This command is similar to npm install, -except it's meant to be used in automated environments such as -test platforms, continuous integration, and deployment -- or -any situation where you want to make sure you're doing a clean -install of your dependencies. - - diff --git a/docs/contrib/phinx.md b/docs/contrib/phinx.md deleted file mode 100644 index 8a1020da0..000000000 --- a/docs/contrib/phinx.md +++ /dev/null @@ -1,118 +0,0 @@ - - - - -# Phinx Recipe - -```php -require 'contrib/phinx.php'; -``` - -[Source](/contrib/phinx.php) - - - - -## Configuration options - -All options are in the config parameter `phinx` specified as an array (instead of the `phinx_path` variable). -All parameters are *optional*, but you can specify them with a dictionary (to change all parameters) -or by deployer dot notation (to change one option). - -### Phinx params - -- `phinx.environment` -- `phinx.date` -- `phinx.configuration` N.B. current directory is the project directory -- `phinx.target` -- `phinx.seed` -- `phinx.parser` -- `phinx.remove-all` (pass empty string as value) - -### Phinx path params - -- `phinx_path` Specify phinx path (by default phinx is searched for in $PATH, ./vendor/bin and ~/.composer/vendor/bin) - -### Example of usage - -```php -$phinx_env_vars = [ - 'environment' => 'development', - 'configuration' => './migration/.phinx.yml', - 'target' => '20120103083322', - 'remove-all' => '', -]; - -set('phinx_path', '/usr/local/phinx/bin/phinx'); -set('phinx', $phinx_env_vars); - -after('cleanup', 'phinx:migrate'); - -or set it for a specific server -host('dev') - ->user('user') - ->set('deploy_path', '/var/www') - ->set('phinx', $phinx_env_vars) - ->set('phinx_path', ''); -``` - -## Suggested Usage - -You can run all tasks before or after any -tasks (but you need to specify external configs for phinx). -If you use internal configs (which are in your project) you need -to run it after the `deploy:update_code` task is completed. - -## Read more - -For further reading see [phinx.org](https://phinx.org). Complete descriptions of all possible options can be found on the [commands page](http://docs.phinx.org/en/latest/commands.html). - - - -## Configuration -### bin/phinx -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L80) - -Path to Phinx -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### phinx:migrate -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L148) - -Migrats database with phinx. - - - - -### phinx:rollback -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L169) - -Rollbacks database migrations with phinx. - - - - -### phinx:seed -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L190) - -Seeds database with phinx. - - - - -### phinx:breakpoint -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L210) - -Sets a migrations breakpoint with phinx. - - - - diff --git a/docs/contrib/php-fpm.md b/docs/contrib/php-fpm.md deleted file mode 100644 index f5ca98a20..000000000 --- a/docs/contrib/php-fpm.md +++ /dev/null @@ -1,75 +0,0 @@ - - - - -# Php-fpm Recipe - -```php -require 'contrib/php-fpm.php'; -``` - -[Source](/contrib/php-fpm.php) - - - - -:::caution -Do **not** reload php-fpm. Some user requests could fail or not complete in the -process of reloading. - -Instead, configure your server [properly](https://ï.at/avoid-php-fpm-reloading). If you're using Deployer's provision -recipe, it's already configured the right way and no php-fpm reload is needed. -::: - -## Configuration - -- `php_fpm_version` – The PHP-fpm version. For example: `8.0`. -- `php_fpm_service` – The full name of the PHP-fpm service. Defaults to `php{{php_fpm_version}}-fpm`. -- `php_fpm_command` – The command to run to reload PHP-fpm. Defaults to `sudo systemctl reload {{php_fpm_service}}`. - -## Usage - -Start by explicitely providing the current version of PHP-version using the `php_fpm_version`. -Alternatively, you may use any of the options above to configure how PHP-fpm should reload. - -Then, add the `php-fpm:reload` task at the end of your deployments by using the `after` method like so. - -```php -set('php_fpm_version', '8.0'); -after('deploy', 'php-fpm:reload'); -``` - - - -## Configuration -### php_fpm_version -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L34) - -Automatically detects by using [bin/php](/docs/recipe/common.md#bin/php). - -```php title="Default value" -return run('{{bin/php}} -r "printf(\'%d.%d\', PHP_MAJOR_VERSION, PHP_MINOR_VERSION);"'); -``` - - -### php_fpm_service -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L38) - - - -```php title="Default value" -'php{{php_fpm_version}}-fpm' -``` - - - -## Tasks - -### php-fpm:reload -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L41) - -Reloads the php-fpm service. - - - - diff --git a/docs/contrib/rabbit.md b/docs/contrib/rabbit.md deleted file mode 100644 index 2a3302318..000000000 --- a/docs/contrib/rabbit.md +++ /dev/null @@ -1,73 +0,0 @@ - - - - -# Rabbit Recipe - -```php -require 'contrib/rabbit.php'; -``` - -[Source](/contrib/rabbit.php) - - - -### Installing - -```php -deploy.php - -require 'recipe/rabbit.php'; -``` - -### Configuration options - -- **rabbit** *(required)*: accepts an *array* with the connection information to [rabbitmq](http://www.rabbitmq.com) server token and team name. - - -You can provide also other configuration options: - - - *host* - default is localhost - - *port* - default is 5672 - - *username* - default is *guest* - - *password* - default is *guest* - - *channel* - no default value, need to be specified via config - - *message* - default is **Deployment to '{$host}' on *{$prod}* was successful\n($releasePath)** - - *vhost* - default is - - -```php -deploy.php - -set('rabbit', [ - 'host' => 'localhost', - 'port' => '5672', - 'username' => 'guest', - 'password' => 'guest', - 'channel' => 'notify-channel', - 'vhost' => '/my-app' -]); -``` - -### Suggested Usage - -Since you should only notify RabbitMQ channel of a successful deployment, the `deploy:rabbit` task should be executed right at the end. - -```php -deploy.php - -before('deploy:end', 'deploy:rabbit'); -``` - - - -## Tasks - -### deploy:rabbit -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rabbit.php#L58) - -Notifies RabbitMQ channel about deployment. - - - - diff --git a/docs/contrib/raygun.md b/docs/contrib/raygun.md deleted file mode 100644 index b37217e48..000000000 --- a/docs/contrib/raygun.md +++ /dev/null @@ -1,45 +0,0 @@ - - - - -# Raygun Recipe - -```php -require 'contrib/raygun.php'; -``` - -[Source](/contrib/raygun.php) - - - - -## Configuration - -- `raygun_api_key` – the API key of your Raygun application -- `raygun_version` – the version of your application that this deployment is releasing -- `raygun_owner_name` – the name of the person creating this deployment -- `raygun_email` – the email of the person creating this deployment -- `raygun_comment` – the deployment notes -- `raygun_scm_identifier` – the commit that this deployment was built off -- `raygun_scm_type` - the source control system you use - -## Usage - -To notify Raygun of a successful deployment, you can use the 'raygun:notify' task after a deployment. - -```php -after('deploy', 'raygun:notify'); -``` - - - -## Tasks - -### raygun:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/raygun.php#L27) - -Notifies Raygun of deployment. - - - - diff --git a/docs/contrib/rocketchat.md b/docs/contrib/rocketchat.md deleted file mode 100644 index e56773851..000000000 --- a/docs/contrib/rocketchat.md +++ /dev/null @@ -1,230 +0,0 @@ - - - - -# Rocketchat Recipe - -```php -require 'contrib/rocketchat.php'; -``` - -[Source](/contrib/rocketchat.php) - - - -## Installing - -Create a RocketChat incoming webhook, through the administration panel. - -Add hook on deploy: - -``` -before('deploy', 'rocketchat:notify'); -``` - -## Configuration - - - `rocketchat_webhook` - incoming rocketchat webook **required** - ``` - set('rocketchat_webhook', 'https://rocketchat.yourcompany.com/hooks/XXXXX'); - ``` - - - `rocketchat_title` - the title of the application, defaults to `{{application}}` - - `rocketchat_text` - notification message - ``` - set('rocketchat_text', '_{{user}}_ deploying {{branch}} to {{target}}'); - ``` - - - `rocketchat_success_text` – success template, default: - ``` - set('rocketchat_success_text', 'Deploy to *{{target}}* successful'); - ``` - - `rocketchat_failure_text` – failure template, default: - ``` - set('rocketchat_failure_text', 'Deploy to *{{target}}* failed'); - ``` - - - `rocketchat_color` – color's attachment - - `rocketchat_success_color` – success color's attachment - - `rocketchat_failure_color` – failure color's attachment - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'rocketchat:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'rocketchat:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'rocketchat:notify:failure'); -``` - - - -## Configuration -### rockchat_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L64) - - - -```php title="Default value" -return get('application', 'Project'); -``` - - -### rocketchat_icon_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L68) - - - -```php title="Default value" -':robot:' -``` - - -### rocketchat_icon_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L69) - - - -```php title="Default value" -null -``` - - -### rocketchat_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L71) - - - -```php title="Default value" -null -``` - - -### rocketchat_room_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L72) - - - -```php title="Default value" -null -``` - - -### rocketchat_username -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L73) - - - -```php title="Default value" -null -``` - - -### rocketchat_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L74) - - - -```php title="Default value" -null -``` - - -### rocketchat_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L76) - - - -```php title="Default value" -'#000000' -``` - - -### rocketchat_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L77) - - - -```php title="Default value" -'#00c100' -``` - - -### rocketchat_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L78) - - - -```php title="Default value" -'#ff0909' -``` - - -### rocketchat_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L80) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### rocketchat_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L81) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### rocketchat_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L82) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - - -## Tasks - -### rocketchat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L85) - -Notifies RocketChat. - - - - -### rocketchat:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L115) - -Notifies RocketChat about deploy finish. - - - - -### rocketchat:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L145) - -Notifies RocketChat about deploy failure. - - - - diff --git a/docs/contrib/rollbar.md b/docs/contrib/rollbar.md deleted file mode 100644 index ec32b1c13..000000000 --- a/docs/contrib/rollbar.md +++ /dev/null @@ -1,56 +0,0 @@ - - - - -# Rollbar Recipe - -```php -require 'contrib/rollbar.php'; -``` - -[Source](/contrib/rollbar.php) - - - - -## Configuration - -- `rollbar_token` – access token to rollbar api -- `rollbar_comment` – comment about deploy, default to - ```php - set('rollbar_comment', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `rollbar_username` – rollbar user name - -## Usage - -Since you should only notify Rollbar channel of a successful deployment, the `rollbar:notify` task should be executed right at the end. - -```php -after('deploy', 'rollbar:notify'); -``` - - - -## Configuration -### rollbar_comment -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rollbar.php#L26) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - - -## Tasks - -### rollbar:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rollbar.php#L29) - -Notifies Rollbar of deployment. - - - - diff --git a/docs/contrib/rsync.md b/docs/contrib/rsync.md deleted file mode 100644 index 310910704..000000000 --- a/docs/contrib/rsync.md +++ /dev/null @@ -1,233 +0,0 @@ - - - - -# Rsync Recipe - -```php -require 'contrib/rsync.php'; -``` - -[Source](/contrib/rsync.php) - - - -:::warning -This must not be confused with `/src/Utility/Rsync.php`, deployer's built-in rsync. Their configuration options are also very different, read carefully below. -::: - -## Configuration options - -- **rsync**: Accepts an array with following rsync options (all are optional and defaults are ok): - - *exclude*: accepts an *array* with patterns to be excluded from sending to server - - *exclude-file*: accepts a *string* containing absolute path to file, which contains exclude patterns - - *include*: accepts an *array* with patterns to be included in sending to server - - *include-file*: accepts a *string* containing absolute path to file, which contains include patterns - - *filter*: accepts an *array* of rsync filter rules - - *filter-file*: accepts a *string* containing merge-file filename. - - *filter-perdir*: accepts a *string* containing merge-file filename to be scanned and merger per each directory in rsync list on files to send - - *flags*: accepts a *string* of flags to set when calling rsync command. Please **avoid** flags that accept params, and use *options* instead. - - *options*: accepts an *array* of options to set when calling rsync command. **DO NOT** prefix options with `--` as it's automatically added. - - *timeout*: accepts an *int* defining timeout for rsync command to run locally. - -### Sample Configuration: - -Following is default configuration. By default rsync ignores only git dir and `deploy.php` file. - -```php -deploy.php - -set('rsync',[ - 'exclude' => [ - '.git', - 'deploy.php', - ], - 'exclude-file' => false, - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir'=> false, - 'flags' => 'rz', // Recursive, with compress - 'options' => ['delete'], - 'timeout' => 60, -]); -``` - -If You have multiple excludes, You can put them in file and reference that instead. If You use `deploy:rsync_warmup` You could set additional options that could speed-up and/or affect way things are working. For example: - -```php -deploy.php - -set('rsync',[ - 'exclude' => ['excludes_file'], - 'exclude-file' => '/tmp/localdeploys/excludes_file', //Use absolute path to avoid possible rsync problems - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir' => false, - 'flags' => 'rzcE', // Recursive, with compress, check based on checksum rather than time/size, preserve Executable flag - 'options' => ['delete', 'delete-after', 'force'], //Delete after successful transfer, delete even if deleted dir is not empty - 'timeout' => 3600, //for those huge repos or crappy connection -]); -``` - - -### Parameter - -- **rsync_src**: per-host rsync source. This can be server, stage or whatever-dependent. By default it's set to current directory -- **rsync_dest**: per-host rsync destination. This can be server, stage or whatever-dependent. by default it's equivalent to release deploy destination. - -### Sample configurations: - -This is default configuration: - -```php -set('rsync_src', __DIR__); -set('rsync_dest','{{release_path}}'); -``` - -If You use local deploy recipe You can set src to local release: - -```php -host('hostname') - ->hostname('10.10.10.10') - ->port(22) - ->set('deploy_path','/your/remote/path/app') - ->set('rsync_src', '/your/local/path/app') - ->set('rsync_dest','{{release_path}}'); -``` - -## Usage - -- `rsync` task - - Set `rsync_src` to locally cloned repository and rsync to `rsync_dest`. Then set this task instead of `deploy:update_code` in Your `deploy` task if Your hosting provider does not allow git. - -- `rsync:warmup` task - - If Your deploy task looks like: - - ```php - task('deploy', [ - 'deploy:prepare', - 'deploy:release', - 'rsync', - 'deploy:vendors', - 'deploy:symlink', - ])->desc('Deploy your project'); - ``` - - And Your `rsync_dest` is set to `{{release_path}}` then You could add this task to run before `rsync` task or after `deploy:release`, whatever is more convenient. - - - -## Configuration -### rsync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L119) - - - -```php title="Default value" -[ - 'exclude' => [ - '.git', - 'deploy.php', - ], - 'exclude-file' => false, - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir' => false, - 'flags' => 'rz', - 'options' => ['delete'], - 'timeout' => 300, -] -``` - - -### rsync_src -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L135) - - - -```php title="Default value" -__DIR__ -``` - - -### rsync_dest -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L136) - - - -```php title="Default value" -'{{release_path}}' -``` - - -### rsync_excludes -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L138) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_includes -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L153) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_filter -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L168) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_options -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L186) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### rsync:warmup -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L198) - -Warmups remote Rsync target. - - - - -### rsync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L213) - -Rsync local->remote. - - - - diff --git a/docs/contrib/sentry.md b/docs/contrib/sentry.md deleted file mode 100644 index e4e4493d4..000000000 --- a/docs/contrib/sentry.md +++ /dev/null @@ -1,70 +0,0 @@ - - - - -# Sentry Recipe - -```php -require 'contrib/sentry.php'; -``` - -[Source](/contrib/sentry.php) - - - - -### Configuration options - -- **organization** *(required)*: the slug of the organization the release belongs to. -- **projects** *(required)*: array of slugs of the projects to create a release for. -- **token** *(required)*: authentication token. Can be created at [https://sentry.io/settings/account/api/auth-tokens/] -- **version** *(required)* – a version identifier for this release. -Can be a version number, a commit hash etc. (Defaults is set to git log -n 1 --format="%h".) -- **version_prefix** *(optional)* - a string prefixed to version. -Releases are global per organization so indipentent projects needs to prefix version number with unique string to avoid conflicts -- **environment** *(optional)* - the environment you’re deploying to. By default framework's environment is used. -For example for symfony, *symfony_env* configuration is read otherwise defaults to 'prod'. -- **ref** *(optional)* – an optional commit reference. This is useful if a tagged version has been provided. -- **refs** *(optional)* - array to indicate the start and end commits for each repository included in a release. -Head commits must include parameters *repository* and *commit*) (the HEAD sha). -They can optionally include *previousCommit* (the sha of the HEAD of the previous release), -which should be specified if this is the first time you’ve sent commit data. -- **commits** *(optional)* - array commits data to be associated with the release. -Commits must include parameters *id* (the sha of the commit), and can optionally include *repository*, -*message*, *author_name*, *author_email* and *timestamp*. By default will send all new commits, -unless it's a first release, then only first 200 will be sent. -- **url** *(optional)* – a URL that points to the release. This can be the path to an online interface to the sourcecode for instance. -- **date_released** *(optional)* – date that indicates when the release went live. If not provided the current time is assumed. -- **sentry_server** *(optional)* – sentry server (if you host it yourself). defaults to hosted sentry service. -- **date_deploy_started** *(optional)* - date that indicates when the deploy started. Defaults to current time. -- **date_deploy_finished** *(optional)* - date that indicates when the deploy ended. If not provided, the current time is used. -- **deploy_name** *(optional)* - name of the deploy -- **git_version_command** *(optional)* - the command that retrieves the git version information (Defaults is set to git log -n 1 --format="%h", other options are git describe --tags --abbrev=0) - -```php -deploy.php - -set('sentry', [ - 'organization' => 'exampleorg', - 'projects' => [ - 'exampleproj' - ], - 'token' => 'd47828...', - 'version' => '0.0.1', - -]); -``` - -### Suggested Usage - -Since you should only notify Sentry of a successful deployment, the deploy:sentry task should be executed right at the end. - -```php -deploy.php - -after('deploy', 'deploy:sentry'); -``` - - - - diff --git a/docs/contrib/slack.md b/docs/contrib/slack.md deleted file mode 100644 index 77cbb34f1..000000000 --- a/docs/contrib/slack.md +++ /dev/null @@ -1,219 +0,0 @@ - - - - -# Slack Recipe - -```php -require 'contrib/slack.php'; -``` - -[Source](/contrib/slack.php) - - - -## Installing - -Add to Slack - - -Add hook on deploy: - -```php -before('deploy', 'slack:notify'); -``` - -## Configuration - -- `slack_webhook` – slack incoming webhook url, **required** - ``` - set('slack_webhook', 'https://hooks.slack.com/...'); - ``` -- `slack_channel` - channel to send notification to. The default is the channel configured in the webhook -- `slack_title` – the title of application, default `{{application}}` -- `slack_text` – notification message template, markdown supported - ``` - set('slack_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `slack_success_text` – success template, default: - ``` - set('slack_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `slack_failure_text` – failure template, default: - ``` - set('slack_failure_text', 'Deploy to *{{target}}* failed'); - ``` - -- `slack_color` – color's attachment -- `slack_success_color` – success color's attachment -- `slack_failure_color` – failure color's attachment -- `slack_fields` - set attachments fields for pretty output in Slack, default: - ``` - set('slack_fields', []); - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'slack:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'slack:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'slack:notify:failure'); -``` - - - -## Configuration -### slack_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L69) - -Channel to publish to, when false the default channel the webhook will be used - -```php title="Default value" -false -``` - - -### slack_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L72) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### slack_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L77) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{target}}` to *{{hostname}}*' -``` - - -### slack_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L78) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### slack_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L79) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### slack_rollback_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L80) - - - -```php title="Default value" -'_{{user}}_ rolled back changes on *{{target}}*' -``` - - -### slack_fields -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L81) - - - - - -### slack_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L84) - -Color of attachment - -```php title="Default value" -'#4d91f7' -``` - - -### slack_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L85) - - - -```php title="Default value" -'#00c100' -``` - - -### slack_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L86) - - - -```php title="Default value" -'#ff0909' -``` - - -### slack_rollback_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L87) - - - -```php title="Default value" -'#eba211' -``` - - - -## Tasks - -### slack:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L99) - -Notifies Slack. - - - - -### slack:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L118) - -Notifies Slack about deploy finish. - - - - -### slack:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L138) - -Notifies Slack about deploy failure. - - - - -### slack:notify:rollback -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L157) - -Notifies Slack about rollback. - - - - diff --git a/docs/contrib/telegram.md b/docs/contrib/telegram.md deleted file mode 100644 index 45ac897fe..000000000 --- a/docs/contrib/telegram.md +++ /dev/null @@ -1,155 +0,0 @@ - - - - -# Telegram Recipe - -```php -require 'contrib/telegram.php'; -``` - -[Source](/contrib/telegram.php) - - - -## Installing - 1. Create telegram bot with [BotFather](https://t.me/BotFather) and grab the token provided - 2. Send `/start` to your bot and open https://api.telegram.org/bot{$TELEGRAM_TOKEN_HERE}/getUpdates - 3. Take chat_id from response - - -Add hook on deploy: - -```php -before('deploy', 'telegram:notify'); -``` - -## Configuration - -- `telegram_token` – telegram bot token, **required** -- `telegram_chat_id` — chat ID to push messages to -- `telegram_proxy` - proxy connection string in [CURLOPT_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html) form like: - ``` - http://proxy:80 - socks5://user:password@host:3128 - ``` -- `telegram_title` – the title of application, default `{{application}}` -- `telegram_text` – notification message template - ``` - _{{user}}_ deploying `{{branch}}` to *{{target}}* - ``` -- `telegram_success_text` – success template, default: - ``` - Deploy to *{{target}}* successful - - ``` -- `telegram_failure_text` – failure template, default: - ``` - Deploy to *{{target}}* failed - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'telegram:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'telegram:notify:success'); -``` -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'telegram:notify:failure'); - - - - -## Configuration -### telegram_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L63) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### telegram_token -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L68) - -Telegram settings -:::info Required -Throws exception if not set. -::: - - - - -### telegram_chat_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L71) - - -:::info Required -Throws exception if not set. -::: - - - - -### telegram_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L74) - - - -```php title="Default value" -return 'https://api.telegram.org/bot' . get('telegram_token') . '/sendmessage'; -``` - - -### telegram_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L79) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### telegram_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L80) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### telegram_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L81) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - - -## Tasks - -### telegram:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L85) - -Notifies Telegram. - - - - diff --git a/docs/contrib/webpack_encore.md b/docs/contrib/webpack_encore.md deleted file mode 100644 index 929908709..000000000 --- a/docs/contrib/webpack_encore.md +++ /dev/null @@ -1,67 +0,0 @@ - - - - -# Webpack Encore Recipe - -```php -require 'contrib/webpack_encore.php'; -``` - -[Source](/contrib/webpack_encore.php) - -* Requires - * [npm](/docs/contrib/npm.md) - * [yarn](/docs/contrib/yarn.md) - - - -## Configuration - -- **webpack_encore/package_manager** *(optional)*: set yarn or npm. We try to find if yarn or npm is available and used. - -## Usage - -```php -For Yarn -after('deploy:update_code', 'yarn:install'); -For npm -after('deploy:update_code', 'npm:install'); - -after('deploy:update_code', 'webpack_encore:build'); -``` - - -## Configuration -### webpack_encore/package_manager -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L24) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### webpack_encore/env -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L32) - - - -```php title="Default value" -'production' -``` - - - -## Tasks - -### webpack_encore:build -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L35) - -Runs webpack encore build. - - - - diff --git a/docs/contrib/workplace.md b/docs/contrib/workplace.md deleted file mode 100644 index 1664d15ea..000000000 --- a/docs/contrib/workplace.md +++ /dev/null @@ -1,145 +0,0 @@ - - - - -# Workplace Recipe - -```php -require 'contrib/workplace.php'; -``` - -[Source](/contrib/workplace.php) - - - -This recipes works with Custom Integrations and Publishing Bots. - - -Add hook on deploy: - -``` -before('deploy', 'workplace:notify'); -``` - -## Configuration - - - `workplace_webhook` - incoming workplace webhook **required** - ``` - // With custom integration - set('workplace_webhook', 'https://graph.facebook.com//feed?access_token='); - - // With publishing bot - set('workplace_webhook', 'https://graph.facebook.com/v3.0/group/feed?access_token='); - - // Use markdown on message - set('workplace_webhook', 'https://graph.facebook.com//feed?access_token=&formatting=MARKDOWN'); - ``` - - - `workplace_text` - notification message - ``` - set('workplace_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` - - - `workplace_success_text` – success template, default: - ``` - set('workplace_success_text', 'Deploy to *{{target}}* successful'); - ``` - - `workplace_failure_text` – failure template, default: - ``` - set('workplace_failure_text', 'Deploy to *{{target}}* failed'); - ``` - - `workplace_edit_post` – whether to create a new post for deploy result, or edit the first one created, default creates a new post: - ``` - set('workplace_edit_post', false); - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'workplace:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'workplace:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'workplace:notify:failure'); -``` - - - -## Configuration -### workplace_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L70) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### workplace_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L71) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### workplace_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L72) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### workplace_edit_post -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L75) - -By default, create a new post for every message - -```php title="Default value" -false -``` - - - -## Tasks - -### workplace:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L78) - -Notifies Workplace. - - - - -### workplace:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L102) - -Notifies Workplace about deploy finish. - - - - -### workplace:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L113) - -Notifies Workplace about deploy failure. - - - - diff --git a/docs/contrib/yammer.md b/docs/contrib/yammer.md deleted file mode 100644 index 4fe6eab96..000000000 --- a/docs/contrib/yammer.md +++ /dev/null @@ -1,140 +0,0 @@ - - - - -# Yammer Recipe - -```php -require 'contrib/yammer.php'; -``` - -[Source](/contrib/yammer.php) - - - - -Add hook on deploy: - -```php -before('deploy', 'yammer:notify'); -``` - -## Configuration - -- `yammer_url` – The URL to the message endpoint, default is https://www.yammer.com/api/v1/messages.json -- `yammer_token` *(required)* – Yammer auth token -- `yammer_group_id` *(required)* - Group ID -- `yammer_title` – the title of application, default `{{application}}` -- `yammer_body` – notification message template, default: - ``` - {{user}} deploying {{branch}} to {{target}} - ``` -- `yammer_success_body` – success template, default: - ``` - Deploy to {{target}} successful - ``` -- `yammer_failure_body` – failure template, default: - ``` - Deploy to {{target}} failed - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'yammer:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'yammer:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'yammer:notify:failure'); -``` - - - -## Configuration -### yammer_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L54) - - - -```php title="Default value" -'https://www.yammer.com/api/v1/messages.json' -``` - - -### yammer_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L57) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### yammer_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L62) - -Deploy message - -```php title="Default value" -'{{user}} deploying {{branch}} to {{target}}' -``` - - -### yammer_success_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L63) - - - -```php title="Default value" -'Deploy to {{target}} successful' -``` - - -### yammer_failure_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L64) - - - -```php title="Default value" -'Deploy to {{target}} failed' -``` - - - -## Tasks - -### yammer:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L67) - -Notifies Yammer. - - - - -### yammer:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L86) - -Notifies Yammer about deploy finish. - - - - -### yammer:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L105) - -Notifies Yammer about deploy failure. - - - - diff --git a/docs/contrib/yarn.md b/docs/contrib/yarn.md deleted file mode 100644 index 8007fbe1b..000000000 --- a/docs/contrib/yarn.md +++ /dev/null @@ -1,47 +0,0 @@ - - - - -# Yarn Recipe - -```php -require 'contrib/yarn.php'; -``` - -[Source](/contrib/yarn.php) - - - -## Configuration - -- **bin/yarn** *(optional)*: set Yarn binary, automatically detected otherwise. - -## Usage - -```php -after('deploy:update_code', 'yarn:install'); -``` - - -## Configuration -### bin/yarn -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yarn.php#L15) - - - -```php title="Default value" -return which('yarn'); -``` - - - -## Tasks - -### yarn:install -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yarn.php#L21) - -Installs Yarn packages. - -In there is a {{previous_release}}, node_modules will be copied from it before installing deps with yarn. - - diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100755 index 4e9c3c8b9..000000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,172 +0,0 @@ -# Getting Started - -In this tutorial we will cover: - -- Setting up a new host with provision recipe. -- Configuring a deployment and perfoming our first deploy. - -First, [install the Deployer](installation.md): - -Now lets cd into the project and run the following command: - -```sh -dep init -``` - -Deployer will ask you a few question and after finishing you will have a -**deploy.php** or **deploy.yaml** file. This is our deployment recipe. -It contains hosts, tasks and requires other recipes. All framework recipes -that come with Deployer are based on the [common](recipe/common.md) recipe. - -## Provision - -:::note -If you already have a configured webserver you may skip to -[deployment](#deploy). -::: - -Let's create a new VPS on Linode, DigitalOcean, Vultr, AWS, GCP, etc. - -Make sure the image is **Ubuntu 20.04 LTS** as this version is supported via -Deployer [provision](recipe/provision.md) recipe. - -:::tip -Configure Reverse DNS or RDNS on your server. This will allow you to ssh into -server using the domain name instead of the IP address. -::: - -Our **deploy.php** recipe contains a host definition with few important params: - -- `remote_user` user's name for ssh connection, -- `deploy_path` host's path where we are going to deploy. - -Let's set `remote_user` to be `deployer`. Right now our new server probably only has the `root` user. The provision recipe will -create and configure a `deployer` user for us. - -```php -host('example.org') - ->set('remote_user', 'deployer') - ->set('deploy_path', '~/example'); -``` - -To connect to the remote host we need to specify an identity key or private key. -We can add our identity key directly into the host definition, but it's better to put it -in the **~/.ssh/config** file: - -``` -Host * - IdentityFile ~/.ssh/id_rsa -``` - -Now let's provision our server. As our host doesn't have user `deployer`, -we are going to override `remote_user` for provision via `-o remote_user=root`. - -```sh -dep provision -o remote_user=root -``` - -:::tip -If your server doesn't have a `root` user but your remote user can use `sudo` to -become root, then use: - -```sh -dep provision -o become=root -``` - -::: - -Deployer will ask you a few questions during provisioning: php version, -database type, etc. Next Deployer will configure our server and create -the `deployer` user. Provision takes around **5 minutes** and will install -everything we need to run a website. A new website will be configured -at [deploy_path](recipe/common.md#deploy_path). - -After we have configured the webserver, let's deploy the project. - -## Deploy - -To deploy the project: - -```sh -dep deploy -``` - -If deploy failed, Deployer will print an error message and which command was unsuccessful. -Most likely we need to configure the correct database credentials in _.env_ file or similar. - -Ssh to the host, for example, for editing _.env_ file: - -```sh -dep ssh -``` - -:::tip -If your webserver is using OpenSSH version older than v7.6, updating the code may fail with the error -message `unsupported option "accept-new".` In this case, override the Git SSH command with: -```php -set('git_ssh_command', 'ssh'); -``` -::: - -After everything is configured properly we can resume our deployment from the -place it stopped. However, this is not required; we can just start a new deploy: - -``` -dep deploy --start-from deploy:migrate -``` - -After our first successful deployment, we can find the following directory structure on our server: - -``` -~/example // The deploy_path. - |- current -> releases/1 // Symlink to the current release. - |- releases // Dir for all releases. - |- 1 // Actual files location. - |- ... - |- .env -> shared/.env // Symlink to shared .env file. - |- shared // Dirs for shared files between releases. - |- ... - |- .env // Example: shared .env file. - |- .dep // Deployer configuration files. -``` - -Configure you webserver to serve the `current` directory. For example, for nginx: - -``` -root /home/deployer/example/current/public; -index index.php; -location / { - try_files $uri $uri/ /index.php?$query_string; -} -``` - -If you're using provision recipe, Deployer will automatically configure the Caddy -webserver to serve from the [public_path](/docs/recipe/provision/website.md#public_path). - -Now let's add a build step on our host: - -```php -task('build', function () { - cd('{{release_path}}'); - run('npm install'); - run('npm run prod'); -}); - -after('deploy:update_code', 'build'); -``` - -Deployer has a useful task for examining what is currently deployed. - -``` -$ dep releases -task releases -+---------------------+--------- deployer.org -------+--------+-----------+ -| Date (UTC) | Release | Author | Target | Commit | -+---------------------+-------------+----------------+--------+-----------+ -| 2021-11-05 14:00:22 | 1 (current) | Anton Medvedev | HEAD | 943ded2be | -+---------------------+-------------+----------------+--------+-----------+ -``` - -:::tip -During development, the [dep push](recipe/deploy/push.md) task maybe useful. -::: diff --git a/docs/hosts.md b/docs/hosts.md deleted file mode 100644 index c314913f0..000000000 --- a/docs/hosts.md +++ /dev/null @@ -1,189 +0,0 @@ -# Hosts - -To define a new host use the [host()](api.md#host) function. Deployer keeps a list of -all defined hosts in the `Deployer::get()->hosts` collection. - -```php -host('example.org'); -``` - -Each host contains it's own configuration key-value pairs. The [host()](api.md#host) -call defines two important configs: **alias** and **hostname**. - -- **hostname** - used when connecting to remote host. -- **alias** - used as a key in `Deployer::get()->hosts` collection. - -```php -task('test', function () { - writeln('The {{alias}} is {{hostname}}'); -}); -``` - -``` -$ dep test -[example.org] The example.org is example.org -``` - -We can override hostname via `set()` method: - -```php -host('example.org') - ->set('hostname', 'example.cloud.google.com'); -``` - -The hostname will be used for the ssh connection, but the host will be referred -by its alias when running Deployer. - -``` -$ dep test -[example.org] The example.org is example.cloud.google.com -``` - -Another important ssh connection parameter is `remote_user`. - -```php -host('example.org') - ->set('hostname', 'example.cloud.google.com') - ->set('remote_user', 'deployer'); -``` - -Now Deployer will connect using something like -`ssh deployer@example.cloud.google.com` to establishing connection. - -Also, Deployer's `Host` class has special setter methods (for better IDE -autocompletion). - -```php -host('example.org') - ->setHostname('example.cloud.google.com') - ->setRemoteUser('deployer'); -``` - -## Host config - -### `alias` - -The identifier used to identify a host. -You can use actual hostname or something like `prod` or `staging`. - -### `hostname` - -Deployer uses this config for actual ssh connection. - -### `remote_user` - -Deployer uses this config for actual ssh connection. If not specified, -Deployer will be using `RemoteUser` from **~/.ssh/config** file, or current -OS username. - -### `port` - -Port of remote ssh server to connect to. Default is `22`. - -### `config_file` - -Default is `~/.ssh/config`. - -:::info Config file -It is a good practice to keep connection parameters out of `deploy.php` file, as -they can change depending on where the deploy is executed from. Only specify -`hostname` and `remote_user` and other keep in `~/.ssh/config`: - -``` -Host * - IdentityFile ~/.ssh/id_rsa -``` - -::: - -### `identity_file` - -For example, `~/.ssh/id_rsa`. - -### `forward_agent` - -SSH forwarding is a way to securely tunnel network connections from your local computer to a remote server, and from the remote server to another destination. There are several types of SSH forwarding, including local, remote, and dynamic forwarding. SSH agent forwarding is a specific type of local forwarding that allows you to use your local SSH keys to authenticate on remote servers. This can be useful if you want to use your local SSH keys to connect to a remote server, but don't want to copy your keys to the remote server. - -Default is `true`. - -### `ssh_multiplexing` - -SSH multiplexing is a technique that allows a single Secure Shell (SSH) connection to be used for multiple interactive sessions or for multiple tunneled connections. This can be useful in a number of situations, such as when you want to open multiple terminal sessions to a remote server over a single SSH connection, or when you want to establish multiple secure connections to a remote server but don't want to open multiple SSH connections. - -Default is `true`. - -### `shell` - -Default is `bash -ls`. - -### `deploy_path` - -For example, `~/myapp`. - -### `labels` - -Key-value pairs for host selector. - -### `ssh_arguments` - -For example, `['-o UserKnownHostsFile=/dev/null']` - -### `ssh_control_path` - -Default is `~/.ssh/%C`. - -If **CI** env is present, default value is `/dev/shm/%C`. - -## Multiple hosts - -You can pass multiple hosts to the host function: - -```php -host('example.org', 'deployer.org', ...) - ->setRemoteUser('anton'); -``` - -## Host ranges - -If you have a lot of hosts following similar patterns, you can describe them -like this rather than listing each hostname: - -```php -host('www[01:50].example.org'); -``` - -For numeric patterns, leading zeros can be included or removed, as desired. -Ranges are inclusive. - -You can also define alphabetic ranges: - -```php -host('db[a:f].example.org'); -``` - -## Localhost - -The [localhost()](api.md#localhost) function defines a special local host. -Deployer will not connect to this host, but will execute commands locally instead. - -```php -localhost(); // Alias and hostname will be "localhost". -localhost('ci'); // Alias is "ci", hostname is "localhost". -``` - -## YAML Inventory - -You can use the [import()](api.md#import) function to keep host definitions in a -separate file. For example, _inventory.yaml_. - -```php title="deploy.php" -import('inventory.yaml'); -``` - -```yaml title="inventory.yaml" -hosts: - example.org: - remote_user: deployer - deployer.org: - remote_user: deployer -``` diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100755 index e53880ebc..000000000 --- a/docs/installation.md +++ /dev/null @@ -1,31 +0,0 @@ -# Installation - -To install Deployer, run next command in your project dir: - -``` -composer require --dev deployer/deployer -``` - -To initialize deployer in your project run: - -``` -vendor/bin/dep init -``` - -:::tip Bash integration -Add next alias to your _.bashrc_ file: - -```bash -alias dep='vendor/bin/dep' -``` - -Deployer comes with autocomplete support for task names, options, and hosts. - -Run the next command to add bash completion support: - -``` -dep completion bash > /etc/bash_completion.d/deployer -``` - -Make sure what your _.bashrc_ file includes generated file in some way. -::: diff --git a/docs/recipe/README.md b/docs/recipe/README.md deleted file mode 100644 index 05a922165..000000000 --- a/docs/recipe/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# All Recipes - -* [Cakephp Recipe](/docs/recipe/cakephp.md) -* [Codeigniter Recipe](/docs/recipe/codeigniter.md) -* [Common Recipe](/docs/recipe/common.md) -* [Composer Recipe](/docs/recipe/composer.md) -* [Contao Recipe](/docs/recipe/contao.md) -* [Craftcms Recipe](/docs/recipe/craftcms.md) -* [Drupal 7 Recipe](/docs/recipe/drupal7.md) -* [Drupal 8 Recipe](/docs/recipe/drupal8.md) -* [Flow Framework Recipe](/docs/recipe/flow_framework.md) -* [Fuelphp Recipe](/docs/recipe/fuelphp.md) -* [Joomla Recipe](/docs/recipe/joomla.md) -* [Laravel Recipe](/docs/recipe/laravel.md) -* [Magento 2 Recipe](/docs/recipe/magento2.md) -* [Magento Recipe](/docs/recipe/magento.md) -* [Pimcore Recipe](/docs/recipe/pimcore.md) -* [Prestashop Recipe](/docs/recipe/prestashop.md) -* [Provision Recipe](/docs/recipe/provision.md) -* [Shopware Recipe](/docs/recipe/shopware.md) -* [Silverstripe Recipe](/docs/recipe/silverstripe.md) -* [Statamic Recipe](/docs/recipe/statamic.md) -* [Sulu Recipe](/docs/recipe/sulu.md) -* [Symfony Recipe](/docs/recipe/symfony.md) -* [TYPO3 Recipe](/docs/recipe/typo3.md) -* [WordPress Recipe](/docs/recipe/wordpress.md) -* [Yii2 Recipe](/docs/recipe/yii.md) -* [Zend Framework Recipe](/docs/recipe/zend_framework.md) \ No newline at end of file diff --git a/docs/recipe/cakephp.md b/docs/recipe/cakephp.md deleted file mode 100644 index ba1374cee..000000000 --- a/docs/recipe/cakephp.md +++ /dev/null @@ -1,116 +0,0 @@ - - - - -# How to Deploy a Cakephp Project - -```php -require 'recipe/cakephp.php'; -``` - -[Source](/recipe/cakephp.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Cakephp application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Cakephp** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:init](/docs/recipe/cakephp.md#deployinit) – -* [deploy:run_migrations](/docs/recipe/cakephp.md#deployrun_migrations) – -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The cakephp recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L13) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -CakePHP 4 Project Template shared dirs - -```php title="Default value" -[ - 'logs', - 'tmp', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L19) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -CakePHP 4 Project Template shared files - -```php title="Default value" -[ - 'config/.env', - 'config/app.php', -] -``` - - - -## Tasks - -### deploy:init -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L27) - - - -Create plugins' symlinks - - -### deploy:run_migrations -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L34) - - - -Run migrations - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L42) - - - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:init](/docs/recipe/cakephp.md#deployinit) -* [deploy:run_migrations](/docs/recipe/cakephp.md#deployrun_migrations) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/codeigniter.md b/docs/recipe/codeigniter.md deleted file mode 100644 index f450bafb2..000000000 --- a/docs/recipe/codeigniter.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# How to Deploy a Codeigniter Project - -```php -require 'recipe/codeigniter.php'; -``` - -[Source](/recipe/codeigniter.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Codeigniter application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Codeigniter** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The codeigniter recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -CodeIgniter shared dirs - -```php title="Default value" -['application/cache', 'application/logs'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L12) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -CodeIgniter writable dirs - -```php title="Default value" -['application/cache', 'application/logs'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L18) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/common.md b/docs/recipe/common.md deleted file mode 100644 index 97d83526b..000000000 --- a/docs/recipe/common.md +++ /dev/null @@ -1,251 +0,0 @@ - - - - -# Common Recipe - -```php -require 'recipe/common.php'; -``` - -[Source](/recipe/common.php) - -* Requires - * [provision](/docs/recipe/provision.md) - * [check_remote](/docs/recipe/deploy/check_remote.md) - * [cleanup](/docs/recipe/deploy/cleanup.md) - * [clear_paths](/docs/recipe/deploy/clear_paths.md) - * [copy_dirs](/docs/recipe/deploy/copy_dirs.md) - * [info](/docs/recipe/deploy/info.md) - * [lock](/docs/recipe/deploy/lock.md) - * [push](/docs/recipe/deploy/push.md) - * [release](/docs/recipe/deploy/release.md) - * [rollback](/docs/recipe/deploy/rollback.md) - * [setup](/docs/recipe/deploy/setup.md) - * [shared](/docs/recipe/deploy/shared.md) - * [symlink](/docs/recipe/deploy/symlink.md) - * [update_code](/docs/recipe/deploy/update_code.md) - * [vendors](/docs/recipe/deploy/vendors.md) - * [writable](/docs/recipe/deploy/writable.md) - -## Configuration -### user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L29) - -Name of current user who is running deploy. -If not set will try automatically get git user name, -otherwise output of `whoami` command. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### keep_releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L46) - -Number of releases to preserve in releases folder. - -```php title="Default value" -10 -``` - - -### repository -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L49) - -Repository to deploy. - - - -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L54) - -Default timeout for `run()` and `runLocally()` functions. - -Set to `null` to disable timeout. - -```php title="Default value" -300 -``` - - -### env -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L70) - -Remote environment variables. -```php -set('env', [ - 'KEY' => 'something', -]); -``` - -It is possible to override it per `run()` call. - -```php -run('echo $KEY', env: ['KEY' => 'over']); -``` - - - -### dotenv -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L79) - -Path to `.env` file which will be used as environment variables for each command per `run()`. - -```php -set('dotenv', '{{current_path}}/.env'); -``` - -```php title="Default value" -false -``` - - -### deploy_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L89) - -The deploy path. - -For example can be set for a bunch of host once as: -```php -set('deploy_path', '~/{{alias}}'); -``` -:::info Required -Throws exception if not set. -::: - - - - -### current_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L99) - -Return current release path. Default to [deploy_path](/docs/recipe/common.md#deploy_path)/`current`. -```php -set('current_path', '/var/public_html'); -``` - -```php title="Default value" -'{{deploy_path}}/current' -``` - - -### bin/php -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L102) - -Path to the `php` bin. - -```php title="Default value" -if (currentHost()->hasOwn('php_version')) { -return '/usr/bin/php{{php_version}}'; -} -return which('php'); -``` - - -### bin/git -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L110) - -Path to the `git` bin. - -```php title="Default value" -return which('git'); -``` - - -### use_relative_symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L116) - -Should [bin/symlink](/docs/recipe/common.md#bin/symlink) use `--relative` option or not. Will detect -automatically. - -```php title="Default value" -return commandSupportsOption('ln', '--relative'); -``` - - -### bin/symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L121) - -Path to the `ln` bin. With predefined options `-nfs`. - -```php title="Default value" -return get('use_relative_symlink') ? 'ln -nfs --relative' : 'ln -nfs'; -``` - - -### sudo_askpass -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L128) - -Path to a file which will store temp script with sudo password. -Defaults to `.dep/sudo_pass`. This script is only temporary and will be deleted after -sudo command executed. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### deploy:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L137) - -Prepares a new release. - - - - -This task is group task which contains next tasks: -* [deploy:info](/docs/recipe/deploy/info.md#deployinfo) -* [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) -* [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) -* [deploy:release](/docs/recipe/deploy/release.md#deployrelease) -* [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) -* [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) -* [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) - - -### deploy:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L148) - -Publishes the release. - - - - -This task is group task which contains next tasks: -* [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) -* [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) -* [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) -* [deploy:success](/docs/recipe/common.md#deploysuccess) - - -### deploy:success -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L158) - - - -Prints success message - - -### deploy:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L167) - - - -Hook on deploy failure. - - -### logs:app -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L177) - -Shows application logs. - -Follows latest application logs. - - diff --git a/docs/recipe/composer.md b/docs/recipe/composer.md deleted file mode 100644 index a6ffbc8ef..000000000 --- a/docs/recipe/composer.md +++ /dev/null @@ -1,32 +0,0 @@ - - - - -# Composer Recipe - -```php -require 'recipe/composer.php'; -``` - -[Source](/recipe/composer.php) - -* Requires - * [common](/docs/recipe/common.md) - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/composer.php#L9) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/contao.md b/docs/recipe/contao.md deleted file mode 100644 index a4ca70782..000000000 --- a/docs/recipe/contao.md +++ /dev/null @@ -1,166 +0,0 @@ - - - - -# How to Deploy a Contao Project - -```php -require 'recipe/contao.php'; -``` - -[Source](/recipe/contao.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Contao application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Contao** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [contao:maintenance:enable](/docs/recipe/contao.md#contaomaintenanceenable) – Enable maintenance mode -* [contao:migrate](/docs/recipe/contao.md#contaomigrate) – Run Contao migrations -* [contao:maintenance:disable](/docs/recipe/contao.md#contaomaintenancedisable) – Disable maintenance mode -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The contao recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - -## Configuration -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L11) - -Overrides [public_path](/docs/recipe/provision/website.md#public_path) from `recipe/provision/website.php`. - -The public path is the path to be set as DocumentRoot and is defined in the `composer.json` of the project -but defaults to `public` from Contao 5.0 on. -This path is relative from the [current_path](/docs/recipe/common.md#current_path), see [`recipe/provision/website.php`](/docs/recipe/provision/website.php#public_path). - -```php title="Default value" -$composerConfig = json_decode(file_get_contents('./composer.json'), true, 512, JSON_THROW_ON_ERROR); - -return $composerConfig['extra']['public-dir'] ?? 'public'; -``` - - -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L29) - -Overrides [bin/console](/docs/recipe/symfony.md#bin/console) from `recipe/symfony.php`. - - - -```php title="Default value" -return '{{bin/php}} {{release_or_current_path}}/vendor/bin/contao-console'; -``` - - -### contao_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L33) - - - -```php title="Default value" -return run('{{bin/console}} contao:version'); -``` - - - -## Tasks - -### contao:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L47) - -Run Contao migrations. - -This task updates the database. A database backup is saved automatically as a default. - -To automatically drop the obsolete database structures, you can override the task as follows: - -```php -task('contao:migrate', function () { - run('{{bin/php}} {{bin/console}} contao:migrate --with-deletes {{console_options}}'); -}); -``` - - -### contao:manager:download -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L53) - -Download the Contao Manager. - -Downloads the `contao-manager.phar.php` into the public path. - - -### contao:install:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L59) - -Lock the Contao Install Tool. - -Locks the Contao install tool which is useful if you don't use it. - - -### contao:manager:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L65) - -Lock the Contao Manager. - -Locks the Contao Manager which is useful if you only need the API of the Manager rather than the UI. - - -### contao:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L71) - -Enable maintenance mode. - - - - -### contao:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L86) - -Disable maintenance mode. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L98) - -Deploy the project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [contao:maintenance:enable](/docs/recipe/contao.md#contaomaintenanceenable) -* [contao:migrate](/docs/recipe/contao.md#contaomigrate) -* [contao:maintenance:disable](/docs/recipe/contao.md#contaomaintenancedisable) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/craftcms.md b/docs/recipe/craftcms.md deleted file mode 100644 index 8551440d8..000000000 --- a/docs/recipe/craftcms.md +++ /dev/null @@ -1,126 +0,0 @@ - - - - -# How to Deploy a Craftcms Project - -```php -require 'recipe/craftcms.php'; -``` - -[Source](/recipe/craftcms.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Craftcms application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Craftcms** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors - - -The craftcms recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L9) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L11) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'storage', - 'web/assets', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L16) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'config/project', - 'storage', - 'web/assets', - 'web/cpresources', -] -``` - - -### writable_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L23) - -Overrides [writable_mode](/docs/recipe/deploy/writable.md#writable_mode) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -'chmod' -``` - - -### writable_recursive -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L24) - -Overrides [writable_recursive](/docs/recipe/deploy/writable.md#writable_recursive) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -true -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L65) - -deploy. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) - - diff --git a/docs/recipe/deploy/check_remote.md b/docs/recipe/deploy/check_remote.md deleted file mode 100644 index d5f37d49c..000000000 --- a/docs/recipe/deploy/check_remote.md +++ /dev/null @@ -1,25 +0,0 @@ - - - - -# Check Remote Recipe - -```php -require 'recipe/deploy/check_remote.php'; -``` - -[Source](/recipe/deploy/check_remote.php) - - - -## Tasks - -### deploy:check_remote -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/check_remote.php#L10) - -Checks remote head. - -Cancel deployment if there would be no change to the codebase. -This avoids unnecessary releases if the latest commit has already been deployed. - - diff --git a/docs/recipe/deploy/cleanup.md b/docs/recipe/deploy/cleanup.md deleted file mode 100644 index 6971f749d..000000000 --- a/docs/recipe/deploy/cleanup.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Cleanup Recipe - -```php -require 'recipe/deploy/cleanup.php'; -``` - -[Source](/recipe/deploy/cleanup.php) - - -## Configuration -### cleanup_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/cleanup.php#L5) - -Use sudo in deploy:cleanup task for rm command. - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:cleanup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/cleanup.php#L8) - -Cleanup old releases. - - - - diff --git a/docs/recipe/deploy/clear_paths.md b/docs/recipe/deploy/clear_paths.md deleted file mode 100644 index 9d3e5841f..000000000 --- a/docs/recipe/deploy/clear_paths.md +++ /dev/null @@ -1,42 +0,0 @@ - - - - -# Clear Paths Recipe - -```php -require 'recipe/deploy/clear_paths.php'; -``` - -[Source](/recipe/deploy/clear_paths.php) - - -## Configuration -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L5) - -List of paths to remove from [release_path](/docs/recipe/deploy/release.md#release_path). - - - -### clear_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L8) - -Use sudo for deploy:clear_path task? - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L11) - -Cleanup files and/or directories. - - - - diff --git a/docs/recipe/deploy/copy_dirs.md b/docs/recipe/deploy/copy_dirs.md deleted file mode 100644 index ab3f9cccf..000000000 --- a/docs/recipe/deploy/copy_dirs.md +++ /dev/null @@ -1,33 +0,0 @@ - - - - -# Copy Dirs Recipe - -```php -require 'recipe/deploy/copy_dirs.php'; -``` - -[Source](/recipe/deploy/copy_dirs.php) - - -## Configuration -### copy_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/copy_dirs.php#L6) - -List of dirs to copy between releases. -For example you can copy `node_modules` to speedup npm install. - - - - -## Tasks - -### deploy:copy_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/copy_dirs.php#L9) - -Copies directories. - - - - diff --git a/docs/recipe/deploy/info.md b/docs/recipe/deploy/info.md deleted file mode 100644 index 91b61d2d1..000000000 --- a/docs/recipe/deploy/info.md +++ /dev/null @@ -1,24 +0,0 @@ - - - - -# Info Recipe - -```php -require 'recipe/deploy/info.php'; -``` - -[Source](/recipe/deploy/info.php) - - - -## Tasks - -### deploy:info -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/info.php#L5) - -Displays info about deployment. - - - - diff --git a/docs/recipe/deploy/lock.md b/docs/recipe/deploy/lock.md deleted file mode 100644 index ad0aa7185..000000000 --- a/docs/recipe/deploy/lock.md +++ /dev/null @@ -1,40 +0,0 @@ - - - - -# Lock Recipe - -```php -require 'recipe/deploy/lock.php'; -``` - -[Source](/recipe/deploy/lock.php) - - - -## Tasks - -### deploy:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L7) - -Locks deploy. - - - - -### deploy:unlock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L20) - -Unlocks deploy. - - - - -### deploy:is_locked -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L25) - -Checks if deploy is locked. - - - - diff --git a/docs/recipe/deploy/push.md b/docs/recipe/deploy/push.md deleted file mode 100644 index 061efdbac..000000000 --- a/docs/recipe/deploy/push.md +++ /dev/null @@ -1,26 +0,0 @@ - - - - -# Push Recipe - -```php -require 'recipe/deploy/push.php'; -``` - -[Source](/recipe/deploy/push.php) - - - -## Tasks - -### push -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/push.php#L8) - -Pushes local changes to remote host. - -Creates patch of local changes and pushes them on host. -And applies to current_path. Push can be done many times. -The task purpose to be used only for development. - - diff --git a/docs/recipe/deploy/release.md b/docs/recipe/deploy/release.md deleted file mode 100644 index a0d633265..000000000 --- a/docs/recipe/deploy/release.md +++ /dev/null @@ -1,111 +0,0 @@ - - - - -# Release Recipe - -```php -require 'recipe/deploy/release.php'; -``` - -[Source](/recipe/deploy/release.php) - - -## Configuration -### release_name -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L8) - -The name of the release. - -```php title="Default value" -return within('{{deploy_path}}', function () { -$latest = run('cat .dep/latest_release || echo 0'); -return strval(intval($latest) + 1); -}); -``` - - -### releases_log -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L16) - -Holds releases log from `.dep/releases_log` file. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### releases_list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L31) - -Return list of release names on host. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### release_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L58) - -Return release path. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### release_revision -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L69) - -Current release revision. Usually a git hash. - -```php title="Default value" -return run('cat {{release_path}}/REVISION'); -``` - - -### release_or_current_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L75) - -Return the release path during a deployment -but fallback to the current path otherwise. - -```php title="Default value" -$releaseExists = test('[ -h {{deploy_path}}/release ]'); -return $releaseExists ? get('release_path') : get('current_path'); -``` - - - -## Tasks - -### deploy:release -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L82) - -Prepares release. - -Clean up unfinished releases and prepare next release - - -### releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L157) - -Shows releases list. - -Example output: -``` -+---------------------+------example.org ------------+--------+-----------+ -| Date (UTC) | Release | Author | Target | Commit | -+---------------------+-------------+----------------+--------+-----------+ -| 2021-11-06 20:51:45 | 1 | Anton Medvedev | HEAD | 34d24192e | -| 2021-11-06 21:00:50 | 2 (bad) | Anton Medvedev | HEAD | 392948a40 | -| 2021-11-06 23:19:20 | 3 | Anton Medvedev | HEAD | a4057a36c | -| 2021-11-06 23:24:30 | 4 (current) | Anton Medvedev | HEAD | s3wa45ca6 | -+---------------------+-------------+----------------+--------+-----------+ -``` - - diff --git a/docs/recipe/deploy/rollback.md b/docs/recipe/deploy/rollback.md deleted file mode 100644 index f954ddbd9..000000000 --- a/docs/recipe/deploy/rollback.md +++ /dev/null @@ -1,54 +0,0 @@ - - - - -# Rollback Recipe - -```php -require 'recipe/deploy/rollback.php'; -``` - -[Source](/recipe/deploy/rollback.php) - - -## Configuration -### rollback_candidate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L19) - -Rollback candidate automatically will be automatically chosen by -looking at output of `ls` command and content of `.dep/releases_log`. - -If rollback candidate marked as **BAD_RELEASE**, it will be skipped. - -:::tip -You can override rollback candidate via: -``` -dep rollback -o rollback_candidate=123 -``` -::: -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L62) - -Rollbacks to the previous release. - -Uses [rollback_candidate](/docs/recipe/deploy/rollback.md#rollback_candidate) for symlinking. Current release will be marked as -bad by creating file **BAD_RELEASE** with timestamp and [user](/docs/recipe/common.md#user). - -:::warning -You can always manually symlink [current_path](/docs/recipe/common.md#current_path) to proper release. -``` -dep run '{{bin/symlink}} releases/123 {{current_path}}' -``` -::: - - diff --git a/docs/recipe/deploy/setup.md b/docs/recipe/deploy/setup.md deleted file mode 100644 index e1c98c791..000000000 --- a/docs/recipe/deploy/setup.md +++ /dev/null @@ -1,24 +0,0 @@ - - - - -# Setup Recipe - -```php -require 'recipe/deploy/setup.php'; -``` - -[Source](/recipe/deploy/setup.php) - - - -## Tasks - -### deploy:setup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/setup.php#L5) - -Prepares host for deploy. - - - - diff --git a/docs/recipe/deploy/shared.md b/docs/recipe/deploy/shared.md deleted file mode 100644 index 8052a5aba..000000000 --- a/docs/recipe/deploy/shared.md +++ /dev/null @@ -1,47 +0,0 @@ - - - - -# Shared Recipe - -```php -require 'recipe/deploy/shared.php'; -``` - -[Source](/recipe/deploy/shared.php) - - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L12) - -List of dirs what will be shared between releases. -Each release will have symlink to those dirs stored in [deploy_path](/docs/recipe/common.md#deploy_path)/shared dir. -```php -set('shared_dirs', ['storage']); -``` - - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L19) - -List of files what will be shared between releases. -Each release will have symlink to those files stored in [deploy_path](/docs/recipe/common.md#deploy_path)/shared dir. -```php -set('shared_files', ['.env']); -``` - - - - -## Tasks - -### deploy:shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L22) - -Creates symlinks for shared files and dirs. - - - - diff --git a/docs/recipe/deploy/symlink.md b/docs/recipe/deploy/symlink.md deleted file mode 100644 index 33c5edd48..000000000 --- a/docs/recipe/deploy/symlink.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Symlink Recipe - -```php -require 'recipe/deploy/symlink.php'; -``` - -[Source](/recipe/deploy/symlink.php) - - -## Configuration -### use_atomic_symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/symlink.php#L5) - -Use mv -T if available. Will check automatically. - -```php title="Default value" -return commandSupportsOption('mv', '--no-target-directory'); -``` - - - -## Tasks - -### deploy:symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/symlink.php#L10) - -Creates symlink to release. - - - - diff --git a/docs/recipe/deploy/update_code.md b/docs/recipe/deploy/update_code.md deleted file mode 100644 index 6efcaefe6..000000000 --- a/docs/recipe/deploy/update_code.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# Update Code Recipe - -```php -require 'recipe/deploy/update_code.php'; -``` - -[Source](/recipe/deploy/update_code.php) - - -## Configuration -### branch -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L11) - -Determines which branch to deploy. Can be overridden with CLI option `--branch`. -If not specified, will get current git HEAD branch as default branch to deploy. - -```php title="Default value" -'HEAD' -``` - - -### target -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L18) - -The deploy target: a branch, a tag or a revision. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### update_code_strategy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L47) - -Sets deploy:update_code strategy. -Can be one of: -- archive -- clone (if you need the origin repository `.git` dir in your [release_path](/docs/recipe/deploy/release.md#release_path)) - -```php title="Default value" -'archive' -``` - - -### git_ssh_command -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L53) - -Sets environment variable _GIT_SSH_COMMAND_ for `git clone` command. -If `StrictHostKeyChecking` flag is set to `accept-new` then ssh will -automatically add new host keys to the user known hosts files, but -will not permit connections to hosts with changed host keys. - -```php title="Default value" -'ssh -o StrictHostKeyChecking=accept-new' -``` - - -### sub_directory -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L65) - -Specifies a sub directory within the repository to deploy. -Works only when [`update_code_strategy`](#update_code_strategy) is set to `archive` (default). - -Example: - - set value to `src` if you want to deploy the folder that lives at `/src/api`. - - set value to `src/api` if you want to deploy the folder that lives at `/src/api`. - -Note: do not use a leading `/`! - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:update_code -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L71) - -Updates code. - -Update code at [release_path](/docs/recipe/deploy/release.md#release_path) on host. - - diff --git a/docs/recipe/deploy/vendors.md b/docs/recipe/deploy/vendors.md deleted file mode 100644 index 68b386e73..000000000 --- a/docs/recipe/deploy/vendors.md +++ /dev/null @@ -1,58 +0,0 @@ - - - - -# Vendors Recipe - -```php -require 'recipe/deploy/vendors.php'; -``` - -[Source](/recipe/deploy/vendors.php) - - -## Configuration -### composer_action -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L4) - - - -```php title="Default value" -'install' -``` - - -### composer_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L6) - - - -```php title="Default value" -'--verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader' -``` - - -### bin/composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L11) - -Returns Composer binary path in found. Otherwise try to install latest -composer version to `.dep/composer.phar`. To use specific composer version -download desired phar and place it at `.dep/composer.phar`. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### deploy:vendors -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L27) - -Installs vendors. - - - - diff --git a/docs/recipe/deploy/writable.md b/docs/recipe/deploy/writable.md deleted file mode 100644 index bcf5898c3..000000000 --- a/docs/recipe/deploy/writable.md +++ /dev/null @@ -1,102 +0,0 @@ - - - - -# Writable Recipe - -```php -require 'recipe/deploy/writable.php'; -``` - -[Source](/recipe/deploy/writable.php) - - -## Configuration -### http_user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L8) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### http_group -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L25) - -Used to make a writable directory by a server. -Used in `chgrp` mode of [writable_mode](/docs/recipe/deploy/writable.md#writable_mode) only. -Attempts automatically to detect http user in process list. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L40) - -List of writable dirs. - - - -### writable_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L49) - -One of: -- chown -- chgrp -- chmod -- acl -- sticky -- skip - -```php title="Default value" -'acl' -``` - - -### writable_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L52) - -Using sudo in writable commands? - -```php title="Default value" -false -``` - - -### writable_recursive -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L55) - -Use recursive mode (-R)? - -```php title="Default value" -false -``` - - -### writable_chmod_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L58) - -The chmod mode. - -```php title="Default value" -'0755' -``` - - - -## Tasks - -### deploy:writable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L61) - -Makes writable dirs. - - - - diff --git a/docs/recipe/drupal7.md b/docs/recipe/drupal7.md deleted file mode 100644 index dea6e45ba..000000000 --- a/docs/recipe/drupal7.md +++ /dev/null @@ -1,132 +0,0 @@ - - - - -# How to Deploy a Drupal 7 Project - -```php -require 'recipe/drupal7.php'; -``` - -[Source](/recipe/drupal7.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Drupal 7 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Drupal 7** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The drupal7 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### drupal_site -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L14) - -Set Drupal 7 site. Change if you use different site - -```php title="Default value" -'default' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L17) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Drupal 7 shared dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L22) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Drupal 7 shared files - -```php title="Default value" -[ - 'sites/{{drupal_site}}/settings.php', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L27) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Drupal 7 writable dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L8) - - - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### drupal:settings -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L33) - - - -Create and upload Drupal 7 settings.php using values from secrets - - -### drupal:upload_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L75) - - - -Upload Drupal 7 files folder - - diff --git a/docs/recipe/drupal8.md b/docs/recipe/drupal8.md deleted file mode 100644 index 40d343d1e..000000000 --- a/docs/recipe/drupal8.md +++ /dev/null @@ -1,117 +0,0 @@ - - - - -# How to Deploy a Drupal 8 Project - -```php -require 'recipe/drupal8.php'; -``` - -[Source](/recipe/drupal8.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Drupal 8 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Drupal 8** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The drupal8 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### drupal_site -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L14) - -Set drupal site. Change if you use different site - -```php title="Default value" -'default' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L18) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Drupal 8 shared dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L23) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Drupal 8 shared files - -```php title="Default value" -[ - 'sites/{{drupal_site}}/settings.php', - 'sites/{{drupal_site}}/services.yml', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L29) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Drupal 8 Writable dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L8) - - - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/flow_framework.md b/docs/recipe/flow_framework.md deleted file mode 100644 index ae62f3b50..000000000 --- a/docs/recipe/flow_framework.md +++ /dev/null @@ -1,122 +0,0 @@ - - - - -# How to Deploy a Flow Framework Project - -```php -require 'recipe/flow_framework.php'; -``` - -[Source](/recipe/flow_framework.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Flow Framework application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Flow Framework** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:run_migrations](/docs/recipe/flow_framework.md#deployrun_migrations) – Applies database migrations -* [deploy:publish_resources](/docs/recipe/flow_framework.md#deploypublish_resources) – Publishes resources -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The flow_framework recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### flow_context -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L9) - -Flow-Framework application-context - -```php title="Default value" -'Production' -``` - - -### flow_command -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L12) - -Flow-Framework cli-command - -```php title="Default value" -'flow' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L15) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Flow-Framework shared directories - -```php title="Default value" -[ - 'Data/Persistent', - 'Data/Logs', - 'Configuration/{{flow_context}}' -] -``` - - - -## Tasks - -### deploy:run_migrations -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L25) - -Applies database migrations. - -Apply database migrations - - -### deploy:publish_resources -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L33) - -Publishes resources. - -Publish resources - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L41) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:run_migrations](/docs/recipe/flow_framework.md#deployrun_migrations) -* [deploy:publish_resources](/docs/recipe/flow_framework.md#deploypublish_resources) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/fuelphp.md b/docs/recipe/fuelphp.md deleted file mode 100644 index ac9339a07..000000000 --- a/docs/recipe/fuelphp.md +++ /dev/null @@ -1,80 +0,0 @@ - - - - -# How to Deploy a Fuelphp Project - -```php -require 'recipe/fuelphp.php'; -``` - -[Source](/recipe/fuelphp.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Fuelphp application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Fuelphp** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The fuelphp recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/fuelphp.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -FuelPHP 1.x shared dirs - -```php title="Default value" -[ - 'fuel/app/cache', 'fuel/app/logs', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/fuelphp.php#L17) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/joomla.md b/docs/recipe/joomla.md deleted file mode 100644 index bcb7bc664..000000000 --- a/docs/recipe/joomla.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a Joomla Project - -```php -require 'recipe/joomla.php'; -``` - -[Source](/recipe/joomla.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Joomla application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Joomla** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The joomla recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['configuration.php'] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['images'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -['images'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L13) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/laravel.md b/docs/recipe/laravel.md deleted file mode 100644 index d24ffdf84..000000000 --- a/docs/recipe/laravel.md +++ /dev/null @@ -1,475 +0,0 @@ - - - - -# How to Deploy a Laravel Project - -```php -require 'recipe/laravel.php'; -``` - -[Source](/recipe/laravel.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Laravel application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Laravel** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) – Creates the symbolic links configured for the application -* [artisan:config:cache](/docs/recipe/laravel.md#artisanconfigcache) – Creates a cache file for faster configuration loading -* [artisan:route:cache](/docs/recipe/laravel.md#artisanroutecache) – Creates a route cache file for faster route registration -* [artisan:view:cache](/docs/recipe/laravel.md#artisanviewcache) – Compiles all of the application\'s Blade templates -* [artisan:event:cache](/docs/recipe/laravel.md#artisaneventcache) – Discovers and cache the application\'s events and listeners -* [artisan:migrate](/docs/recipe/laravel.md#artisanmigrate) – Runs the database migrations -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The laravel recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L8) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['storage'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L9) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['.env'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'bootstrap/cache', - 'storage', - 'storage/app', - 'storage/app/public', - 'storage/framework', - 'storage/framework/cache', - 'storage/framework/cache/data', - 'storage/framework/sessions', - 'storage/framework/views', - 'storage/logs', -] -``` - - -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L22) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### laravel_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L23) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/artisan --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.5; -``` - - - -## Tasks - -### artisan:down -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L90) - -Puts the application into maintenance / demo mode. - - - - -### artisan:up -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L93) - -Brings the application out of maintenance mode. - - - - -### artisan:​key:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L100) - -Sets the application key. - - - - -### artisan:passport:keys -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L103) - -Creates the encryption keys for API authentication. - - - - -### artisan:db:seed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L110) - -Seeds the database with records. - - - - -### artisan:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L113) - -Runs the database migrations. - - - - -### artisan:migrate:fresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L116) - -Drops all tables and re-run all migrations. - - - - -### artisan:migrate:rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L119) - -Rollbacks the last database migration. - - - - -### artisan:migrate:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L122) - -Shows the status of each migration. - - - - -### artisan:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L129) - -Flushes the application cache. - - - - -### artisan:config:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L132) - -Creates a cache file for faster configuration loading. - - - - -### artisan:config:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L135) - -Removes the configuration cache file. - - - - -### artisan:event:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L138) - -Discovers and cache the application\'s events and listeners. - - - - -### artisan:event:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L141) - -Clears all cached events and listeners. - - - - -### artisan:event:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L144) - -Lists the application\'s events and listeners. - - - - -### artisan:optimize -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L147) - -Cache the framework bootstrap files. - - - - -### artisan:optimize:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L150) - -Removes the cached bootstrap files. - - - - -### artisan:route:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L153) - -Creates a route cache file for faster route registration. - - - - -### artisan:route:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L156) - -Removes the route cache file. - - - - -### artisan:route:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L159) - -Lists all registered routes. - - - - -### artisan:storage:link -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L162) - -Creates the symbolic links configured for the application. - - - - -### artisan:view:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L165) - -Compiles all of the application\'s Blade templates. - - - - -### artisan:view:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L168) - -Clears all compiled view files. - - - - -### artisan:queue:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L175) - -Lists all of the failed queue jobs. - - - - -### artisan:queue:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L178) - -Flushes all of the failed queue jobs. - - - - -### artisan:queue:restart -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L181) - -Restarts queue worker daemons after their current job. - - - - -### artisan:horizon -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L184) - -Starts a master supervisor in the foreground. - - - - -### artisan:horizon:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L187) - -Deletes all of the jobs from the specified queue. - - - - -### artisan:horizon:continue -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L190) - -Instructs the master supervisor to continue processing jobs. - - - - -### artisan:horizon:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L193) - -Lists all of the deployed machines. - - - - -### artisan:horizon:pause -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L196) - -Pauses the master supervisor. - - - - -### artisan:horizon:purge -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L199) - -Terminates any rogue Horizon processes. - - - - -### artisan:horizon:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L202) - -Gets the current status of Horizon. - - - - -### artisan:horizon:terminate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L205) - -Terminates the master supervisor so it can be restarted. - - - - -### artisan:horizon:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L208) - -Publish all of the Horizon resources. - - - - -### artisan:​telescope:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L215) - -Clears all entries from Telescope. - - - - -### artisan:​telescope:prune -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L218) - -Prunes stale entries from the Telescope database. - - - - -### artisan:octane -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L225) - -Starts the octane server. - - - - -### artisan:octane:reload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L228) - -Reloads the octane server. - - - - -### artisan:octane:stop -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L231) - -Stops the octane server. - - - - -### artisan:octane:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L234) - -Check the status of the octane server. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L240) - -Deploys your project. - -Main deploy task. - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) -* [artisan:config:cache](/docs/recipe/laravel.md#artisanconfigcache) -* [artisan:route:cache](/docs/recipe/laravel.md#artisanroutecache) -* [artisan:view:cache](/docs/recipe/laravel.md#artisanviewcache) -* [artisan:event:cache](/docs/recipe/laravel.md#artisaneventcache) -* [artisan:migrate](/docs/recipe/laravel.md#artisanmigrate) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/magento.md b/docs/recipe/magento.md deleted file mode 100644 index b512c5863..000000000 --- a/docs/recipe/magento.md +++ /dev/null @@ -1,118 +0,0 @@ - - - - -# How to Deploy a Magento Project - -```php -require 'recipe/magento.php'; -``` - -[Source](/recipe/magento.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Magento application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Magento** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:cache:clear](/docs/recipe/magento.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The magento recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L13) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Magento shared dirs - -```php title="Default value" -['var', 'media'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L16) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Magento shared files - -```php title="Default value" -['app/etc/local.xml'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L19) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Magento writable dirs - -```php title="Default value" -['var', 'media'] -``` - - - -## Tasks - -### deploy:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L25) - -Clears cache. - -Clear cache - - -### deploy:clear_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L32) - - - -Remove files that can be used to compromise Magento - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L46) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:cache:clear](/docs/recipe/magento.md#deploycacheclear) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/magento2.md b/docs/recipe/magento2.md deleted file mode 100644 index 829a27e75..000000000 --- a/docs/recipe/magento2.md +++ /dev/null @@ -1,486 +0,0 @@ - - - - -# How to Deploy a Magento 2 Project - -```php -require 'recipe/magento2.php'; -``` - -[Source](/recipe/magento2.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Magento 2 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Magento 2** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) – Cleanup files and/or directories -* [deploy:magento](/docs/recipe/magento2.md#deploymagento) – Magento2 deployment operations - * [magento:build](/docs/recipe/magento2.md#magentobuild) – Magento2 build operations - * [magento:compile](/docs/recipe/magento2.md#magentocompile) – Compiles magento di - * [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) – Deploys assets - * [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) – Config Import - * [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) – Upgrades magento database - * [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) – Flushes Magento Cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The magento2 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### static_content_locales -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L23) - -By default setup:static-content:deploy uses `en_US`. -To change that, simply put `set('static_content_locales', 'en_US de_DE');` -in you deployer script. - -```php title="Default value" -'en_US' -``` - - -### magento_themes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L29) - -You can also set the themes to run against. By default it'll deploy -all themes - `add('magento_themes', ['Magento/luma', 'Magento/backend']);` - -```php title="Default value" -[ - -] -``` - - -### static_content_jobs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L37) - -Also set the number of conccurent jobs to run. The default is 1 -Update using: `set('static_content_jobs', '1');` - -```php title="Default value" -'1' -``` - - -### content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L39) - - - -```php title="Default value" -return time(); -``` - - -### magento_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L44) - -Magento directory relative to repository root. Use "." (default) if it is not located in a subdirectory - -```php title="Default value" -'.' -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L47) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/app/etc/env.php', - '{{magento_dir}}/var/.maintenance.ip', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L51) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/var/composer_home', - '{{magento_dir}}/var/log', - '{{magento_dir}}/var/export', - '{{magento_dir}}/var/report', - '{{magento_dir}}/var/import', - '{{magento_dir}}/var/import_history', - '{{magento_dir}}/var/session', - '{{magento_dir}}/var/importexport', - '{{magento_dir}}/var/backups', - '{{magento_dir}}/var/tmp', - '{{magento_dir}}/pub/sitemap', - '{{magento_dir}}/pub/media', - '{{magento_dir}}/pub/static/_cache' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L66) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/var', - '{{magento_dir}}/pub/static', - '{{magento_dir}}/pub/media', - '{{magento_dir}}/generated', - '{{magento_dir}}/var/page_cache' -] -``` - - -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L73) - -Overrides [clear_paths](/docs/recipe/deploy/clear_paths.md#clear_paths) from `recipe/deploy/clear_paths.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/generated/*', - '{{magento_dir}}/pub/static/_cache/*', - '{{magento_dir}}/var/generation/*', - '{{magento_dir}}/var/cache/*', - '{{magento_dir}}/var/page_cache/*', - '{{magento_dir}}/var/view_preprocessed/*' -] -``` - - -### bin/magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L82) - - - -```php title="Default value" -'{{release_or_current_path}}/{{magento_dir}}/bin/magento' -``` - - -### magento_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L84) - - - -```php title="Default value" -// detect version -$versionOutput = run('{{bin/php}} {{bin/magento}} --version'); -preg_match('/(\d+\.?)+(-p\d+)?$/', $versionOutput, $matches); -return $matches[0] ?? '2.0'; -``` - - -### maintenance_mode_status_active -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L91) - - - -```php title="Default value" -// detect maintenance mode active -$maintenanceModeStatusOutput = run("{{bin/php}} {{bin/magento}} maintenance:status"); -return strpos($maintenanceModeStatusOutput, MAINTENANCE_MODE_ACTIVE_OUTPUT_MSG) !== false; -``` - - -### enable_zerodowntime -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L98) - -Deploy without setting maintenance mode if possible - -```php title="Default value" -true -``` - - -### artifact_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L236) - -artifact deployment section -settings section - -```php title="Default value" -'artifact.tar.gz' -``` - - -### artifact_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L237) - - - -```php title="Default value" -'artifacts' -``` - - -### artifact_excludes_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L238) - - - -```php title="Default value" -'artifacts/excludes' -``` - - -### build_from_repo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L240) - -If set to true, the artifact is built from a clean copy of the project repository instead of the current working directory - -```php title="Default value" -false -``` - - -### repository -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L242) - -Overrides [repository](/docs/recipe/common.md#repository) from `recipe/common.php`. - -Set this value if "build_from_repo" is set to true. The target to deploy must also be set with "--branch", "--tag" or "--revision" - -```php title="Default value" -null -``` - - -### artifact_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L244) - - - -```php title="Default value" -if (!testLocally('[ -d {{artifact_dir}} ]')) { -runLocally('mkdir -p {{artifact_dir}}'); -} -return get('artifact_dir') . '/' . get('artifact_file'); -``` - - -### bin/tar -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L251) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### additional_shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L325) - -Array of shared files that will be added to the default shared_files without overriding - - - -### additional_shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L327) - -Array of shared directories that will be added to the default shared_dirs without overriding - - - - -## Tasks - -### magento:compile -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L102) - -Compiles magento di. - -Tasks - - -### magento:deploy:assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L108) - -Deploys assets. - - - - -### magento:sync:content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L121) - -Syncs content version. - - - - -### magento:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L131) - -Enables maintenance mode. - - - - -### magento:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L137) - -Disables maintenance mode. - - - - -### magento:config:import -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L143) - -Config Import. - - - - -### magento:upgrade:db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L178) - -Upgrades magento database. - - - - -### magento:cache:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L205) - -Flushes Magento Cache. - - - - -### deploy:magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L210) - -Magento2 deployment operations. - - - - -This task is group task which contains next tasks: -* [magento:build](/docs/recipe/magento2.md#magentobuild) -* [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) -* [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) -* [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) - - -### magento:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L218) - -Magento2 build operations. - - - - -This task is group task which contains next tasks: -* [magento:compile](/docs/recipe/magento2.md#magentocompile) -* [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L224) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) -* [deploy:magento](/docs/recipe/magento2.md#deploymagento) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### artifact:package -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L261) - -Packages all relevant files in an artifact. - -tasks section - - -### artifact:upload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L271) - -Uploads artifact in release folder for extraction. - - - - -### artifact:extract -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L276) - -Extracts artifact in release path. - - - - -### build:remove-generated -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L282) - -Clears generated files prior to building. - - - - -### build:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L287) - -Prepare local artifact build. - - - - -### deploy:additional-shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L331) - -Adds additional files and dirs to the list of shared files and dirs. - - - - diff --git a/docs/recipe/pimcore.md b/docs/recipe/pimcore.md deleted file mode 100644 index 5a067f0ea..000000000 --- a/docs/recipe/pimcore.md +++ /dev/null @@ -1,89 +0,0 @@ - - - - -# How to Deploy a Pimcore Project - -```php -require 'recipe/pimcore.php'; -``` - -[Source](/recipe/pimcore.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Pimcore application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Pimcore** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The pimcore recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - - -## Tasks - -### pimcore:rebuild-classes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L15) - -Rebuilds Pimcore Classes. - - - - -### pimcore:custom-layouts-rebuild -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L20) - -Creates Custom Layouts. - - - - -### pimcore:cache_clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L25) - -Removes cache. - - - - -### pimcore:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L29) - - - - - - -This task is group task which contains next tasks: -* [pimcore:rebuild-classes](/docs/recipe/pimcore.md#pimcorerebuild-classes) -* [pimcore:custom-layouts-rebuild](/docs/recipe/pimcore.md#pimcorecustom-layouts-rebuild) - - diff --git a/docs/recipe/prestashop.md b/docs/recipe/prestashop.md deleted file mode 100644 index 8faa1c12e..000000000 --- a/docs/recipe/prestashop.md +++ /dev/null @@ -1,127 +0,0 @@ - - - - -# How to Deploy a Prestashop Project - -```php -require 'recipe/prestashop.php'; -``` - -[Source](/recipe/prestashop.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Prestashop application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Prestashop** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The prestashop recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'config/settings.inc.php', - '.htaccess', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L12) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'img', - 'log', - 'download', - 'upload', - 'translations', - 'mails', - 'themes/default-bootstrap/lang', - 'themes/default-bootstrap/mails', - 'themes/default-bootstrap/pdf/lang', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L23) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'img', - 'log', - 'cache', - 'download', - 'upload', - 'translations', - 'mails', - 'themes/default-bootstrap/lang', - 'themes/default-bootstrap/mails', - 'themes/default-bootstrap/pdf/lang', - 'themes/default-bootstrap/cache', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L38) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/provision.md b/docs/recipe/provision.md deleted file mode 100644 index 613f109bc..000000000 --- a/docs/recipe/provision.md +++ /dev/null @@ -1,160 +0,0 @@ - - - - -# Provision Recipe - -```php -require 'recipe/provision.php'; -``` - -[Source](/recipe/provision.php) - -* Requires - * [databases](/docs/recipe/provision/databases.md) - * [nodejs](/docs/recipe/provision/nodejs.md) - * [php](/docs/recipe/provision/php.md) - * [website](/docs/recipe/provision/website.md) - -## Configuration -### lsb_release -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L15) - -Name of lsb_release like: focal, bionic, etc. -As only Ubuntu 20.04 LTS is supported for provision should be the `focal`. - -```php title="Default value" -return run("lsb_release -s -c"); -``` - - -### sudo_password -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L216) - - - -```php title="Default value" -return askHiddenResponse(' Password for sudo: '); -``` - - -### ssh_copy_id -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L222) - -Specify which key to copy to server. -Set to `false` to disable copy of key. - -```php title="Default value" -'~/.ssh/id_rsa.pub' -``` - - - -## Tasks - -### provision -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L20) - -Provision the server. - - - - -This task is group task which contains next tasks: -* [provision:check](/docs/recipe/provision.md#provisioncheck) -* [provision:configure](/docs/recipe/provision.md#provisionconfigure) -* [provision:update](/docs/recipe/provision.md#provisionupdate) -* [provision:upgrade](/docs/recipe/provision.md#provisionupgrade) -* [provision:install](/docs/recipe/provision.md#provisioninstall) -* [provision:ssh](/docs/recipe/provision.md#provisionssh) -* [provision:firewall](/docs/recipe/provision.md#provisionfirewall) -* [provision:deployer](/docs/recipe/provision.md#provisiondeployer) -* [provision:server](/docs/recipe/provision.md#provisionserver) -* [provision:php](/docs/recipe/provision/php.md#provisionphp) -* [provision:databases](/docs/recipe/provision/databases.md#provisiondatabases) -* [provision:composer](/docs/recipe/provision/php.md#provisioncomposer) -* [provision:npm](/docs/recipe/provision/nodejs.md#provisionnpm) -* [provision:website](/docs/recipe/provision/website.md#provisionwebsite) -* [provision:verify](/docs/recipe/provision.md#provisionverify) - - -### provision:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L39) - -Checks pre-required state. - - - - -### provision:configure -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L59) - -Collects required params. - - - - -### provision:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L82) - -Adds repositories and update. - - - - -### provision:upgrade -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L104) - -Upgrades all packages. - - - - -### provision:install -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L111) - -Installs packages. - - - - -### provision:server -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L145) - -Configures a server. - - - - -### provision:ssh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L206) - -Configures the ssh. - - - - -### provision:deployer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L225) - -Setups a deployer user. - - - - -### provision:firewall -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L272) - -Setups a firewall. - - - - -### provision:verify -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L280) - -Verifies what provision was successful. - - - - diff --git a/docs/recipe/provision/databases.md b/docs/recipe/provision/databases.md deleted file mode 100644 index 082338fe6..000000000 --- a/docs/recipe/provision/databases.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# Databases Recipe - -```php -require 'recipe/provision/databases.php'; -``` - -[Source](/recipe/provision/databases.php) - - -## Configuration -### db_type -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L4) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### db_name -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L14) - - - -```php title="Default value" -return ask(' DB name: '); -``` - - -### db_user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L18) - - - -```php title="Default value" -return ask(' DB user: ', 'deployer'); -``` - - -### db_password -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L22) - - - -```php title="Default value" -return askHiddenResponse(' DB password: '); -``` - - - -## Tasks - -### provision:databases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L27) - -Provision databases. - - - - -### provision:mysql -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L37) - -Provision MySQL. - - - - -### provision:mariadb -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L48) - -Provision MariaDB. - - - - -### provision:postgresql -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L59) - -Provision PostgreSQL. - - - - diff --git a/docs/recipe/provision/nodejs.md b/docs/recipe/provision/nodejs.md deleted file mode 100644 index 9bc63b7d7..000000000 --- a/docs/recipe/provision/nodejs.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Nodejs Recipe - -```php -require 'recipe/provision/nodejs.php'; -``` - -[Source](/recipe/provision/nodejs.php) - - -## Configuration -### nodejs_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/nodejs.php#L5) - -Node.js version from https://github.com/nodesource/distributions. - -```php title="Default value" -'node_16.x' -``` - - - -## Tasks - -### provision:npm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/nodejs.php#L8) - -Installs npm packages. - - - - diff --git a/docs/recipe/provision/php.md b/docs/recipe/provision/php.md deleted file mode 100644 index 0ccbdb9da..000000000 --- a/docs/recipe/provision/php.md +++ /dev/null @@ -1,51 +0,0 @@ - - - - -# Php Recipe - -```php -require 'recipe/provision/php.php'; -``` - -[Source](/recipe/provision/php.php) - - -## Configuration -### php_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L4) - - - -```php title="Default value" -return ask(' What PHP version to install? ', '8.1', ['5.6', '7.4', '8.0', '8.1']); -``` - - - -## Tasks - -### provision:php -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L9) - -Installs PHP packages. - - - - -### logs:php-fpm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L60) - -Shows php-fpm logs. - - - - -### provision:composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L65) - -Installs Composer. - - - - diff --git a/docs/recipe/provision/website.md b/docs/recipe/provision/website.md deleted file mode 100644 index ee8202b16..000000000 --- a/docs/recipe/provision/website.md +++ /dev/null @@ -1,61 +0,0 @@ - - - - -# Website Recipe - -```php -require 'recipe/provision/website.php'; -``` - -[Source](/recipe/provision/website.php) - - -## Configuration -### domain -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L4) - - - -```php title="Default value" -return ask(' Domain: '); -``` - - -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L8) - - - -```php title="Default value" -return ask(' Public path: ', 'public'); -``` - - - -## Tasks - -### provision:website -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L13) - -Provision website. - - - - -### logs:caddy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L82) - -Shows caddy logs. - - - - -### logs:caddy:syslog -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L87) - -Shows caddy syslog. - - - - diff --git a/docs/recipe/shopware.md b/docs/recipe/shopware.md deleted file mode 100644 index db75a08d7..000000000 --- a/docs/recipe/shopware.md +++ /dev/null @@ -1,267 +0,0 @@ - - - - -# How to Deploy a Shopware Project - -```php -require 'recipe/shopware.php'; -``` - -[Source](/recipe/shopware.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Shopware application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Shopware** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [sw:deploy](/docs/recipe/shopware.md#swdeploy) – - * [sw:database:migrate](/docs/recipe/shopware.md#swdatabasemigrate) – - * [sw:plugin:refresh](/docs/recipe/shopware.md#swpluginrefresh) – - * [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) – - * [sw:plugin:update:all](/docs/recipe/shopware.md#swpluginupdateall) – - * [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) – -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) – Cleanup files and/or directories -* [sw:cache:warmup](/docs/recipe/shopware.md#swcachewarmup) – -* [sw:writable:jwt](/docs/recipe/shopware.md#swwritablejwt) – -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The shopware recipe is based on the [common](/docs/recipe/common.md) recipe. - - -## Usage - -Add {{repository}} to your _deploy.php_ file: - -```php -set('repository', 'git@github.com:shopware/production.git'); -``` - -:::note -Please remember that the installation must be modified so that it can be -[build without database](https://developer.shopware.com/docs/guides/hosting/installation-updates/deployments/build-w-o-db#compiling-the-storefront-without-database). -::: - - -## Configuration -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L22) - - - -```php title="Default value" -'{{bin/php}} {{release_or_current_path}}/bin/console' -``` - - -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L24) - -Overrides [default_timeout](/docs/recipe/common.md#default_timeout) from `recipe/common.php`. - - - - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L27) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -These files are shared among all releases. - -```php title="Default value" -[ - '.env', - 'install.lock', - 'public/.htaccess', - 'public/.user.ini', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L35) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -These directories are shared among all releases. - -```php title="Default value" -[ - 'config/jwt', - 'files', - 'var/log', - 'public/media', - 'public/thumbnail', - 'public/sitemap', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L46) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -These directories are made writable (the definition of "writable" requires attention). -Please note that the files in `config/jwt/*` receive special attention in the `sw:writable:jwt` task. - -```php title="Default value" -[ - 'config/jwt', - 'custom/plugins', - 'files', - 'public/bundles', - 'public/css', - 'public/fonts', - 'public/js', - 'public/media', - 'public/sitemap', - 'public/theme', - 'public/thumbnail', - 'var', -] -``` - - - -## Tasks - -### sw:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L62) - - - -This task remotely executes the `cache:clear` console command on the target server. - - -### sw:cache:warmup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L68) - - - -This task remotely executes the cache warmup console commands on the target server, so that the first user, who -visits the website, doesn't have to wait for the cache to be built up. - - -### sw:database:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L74) - - - -This task remotely executes the `database:migrate` console command on the target server. - - -### sw:plugin:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L78) - - - - - - -### sw:plugin:update:all -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L114) - - - - - - -### sw:writable:jwt -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L124) - - - - - - -### sw:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L131) - - - -Grouped SW deploy tasks. - - -This task is group task which contains next tasks: -* [sw:database:migrate](/docs/recipe/shopware.md#swdatabasemigrate) -* [sw:plugin:refresh](/docs/recipe/shopware.md#swpluginrefresh) -* [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) -* [sw:plugin:update:all](/docs/recipe/shopware.md#swpluginupdateall) -* [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L140) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [sw:deploy](/docs/recipe/shopware.md#swdeploy) -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) -* [sw:cache:warmup](/docs/recipe/shopware.md#swcachewarmup) -* [sw:writable:jwt](/docs/recipe/shopware.md#swwritablejwt) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### sw-build-without-db:get-remote-config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L150) - - - - - - -### sw-build-without-db:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L163) - - - - - - -### sw-build-without-db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L167) - - - - - - -This task is group task which contains next tasks: -* [sw-build-without-db:get-remote-config](/docs/recipe/shopware.md#sw-build-without-dbget-remote-config) -* [sw-build-without-db:build](/docs/recipe/shopware.md#sw-build-without-dbbuild) - - diff --git a/docs/recipe/silverstripe.md b/docs/recipe/silverstripe.md deleted file mode 100644 index 659859935..000000000 --- a/docs/recipe/silverstripe.md +++ /dev/null @@ -1,136 +0,0 @@ - - - - -# How to Deploy a Silverstripe Project - -```php -require 'recipe/silverstripe.php'; -``` - -[Source](/recipe/silverstripe.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Silverstripe application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Silverstripe** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [silverstripe:buildflush](/docs/recipe/silverstripe.md#silverstripebuildflush) – Runs /dev/build?flush=all -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The silverstripe recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L12) - - - -```php title="Default value" -if (test('[ -d {{release_or_current_path}}/public ]') || test('[ -d {{deploy_path}}/shared/public ]')) { -return 'public/assets'; -} -return 'assets'; -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L21) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Silverstripe shared dirs - -```php title="Default value" -[ - '{{shared_assets}}' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L26) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Silverstripe writable dirs - -```php title="Default value" -[ - '{{shared_assets}}' -] -``` - - -### silverstripe_cli_script -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L31) - -Silverstripe cli script -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### silverstripe:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L47) - -Runs /dev/build. - -Helper tasks - - -### silverstripe:buildflush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L52) - -Runs /dev/build?flush=all. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L60) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [silverstripe:buildflush](/docs/recipe/silverstripe.md#silverstripebuildflush) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/statamic.md b/docs/recipe/statamic.md deleted file mode 100644 index 9f0d7507b..000000000 --- a/docs/recipe/statamic.md +++ /dev/null @@ -1,222 +0,0 @@ - - - - -# How to Deploy a Statamic Project - -```php -require 'recipe/statamic.php'; -``` - -[Source](/recipe/statamic.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Statamic application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Statamic** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) – Creates the symbolic links configured for the application -* [artisan:cache:clear](/docs/recipe/laravel.md#artisancacheclear) – Flushes the application cache -* [statamic:stache:clear](/docs/recipe/statamic.md#statamicstacheclear) – Clears the "Stache" cache -* [statamic:stache:warm](/docs/recipe/statamic.md#statamicstachewarm) – Builds the "Stache" cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The statamic recipe is based on the [laravel](/docs/recipe/laravel.md) recipe. - -## Configuration -### statamic_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L15) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/please --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 'unknown'; -``` - - - -## Tasks - -### statamic:addons:discover -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L26) - -Rebuilds the cached addon package manifest. - - - - -### statamic:assets:generate-presets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L33) - -Generates asset preset manipulations. - - - - -### statamic:assets:meta -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L36) - -Generates asset metadata files. - - - - -### statamic:git:commit -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L43) - -Git add and commit tracked content. - - - - -### statamic:glide:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L50) - -Clears the Glide image cache. - - - - -### statamic:responsive:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L57) - -Generates responsive images. - - - - -### statamic:responsive:regenerate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L60) - -Regenerate responsive images. - - - - -### statamic:search:insert -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L67) - -Inserts an item into its search indexes. - - - - -### statamic:search:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L70) - -Update a search index. - - - - -### statamic:stache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L77) - -Clears the "Stache" cache. - - - - -### statamic:stache:doctor -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L80) - -Diagnose any problems with the Stache. - - - - -### statamic:stache:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L83) - -Clears and rebuild the "Stache" cache. - - - - -### statamic:stache:warm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L86) - -Builds the "Stache" cache. - - - - -### statamic:static:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L93) - -Clears the static page cache. - - - - -### statamic:static:warm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L96) - -Warms the static cache by visiting all URLs. - - - - -### statamic:support:details -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L103) - -Outputs details helpful for support requests. - - - - -### statamic:updates:run -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L110) - -Runs update scripts from specific version. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L118) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) -* [artisan:cache:clear](/docs/recipe/laravel.md#artisancacheclear) -* [statamic:stache:clear](/docs/recipe/statamic.md#statamicstacheclear) -* [statamic:stache:warm](/docs/recipe/statamic.md#statamicstachewarm) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/sulu.md b/docs/recipe/sulu.md deleted file mode 100644 index cfcc503f7..000000000 --- a/docs/recipe/sulu.md +++ /dev/null @@ -1,87 +0,0 @@ - - - - -# How to Deploy a Sulu Project - -```php -require 'recipe/sulu.php'; -``` - -[Source](/recipe/sulu.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Sulu application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Sulu** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The sulu recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - -## Configuration -### bin/websiteconsole -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L12) - - - -```php title="Default value" -return parse('{{bin/php}} {{release_or_current_path}}/bin/websiteconsole --no-interaction'); -``` - - - -## Tasks - -### phpcr:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L17) - -Migrates PHPCR. - - - - -### deploy:website:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L22) - -Clears cache. - - - - -### deploy:website:cache:warmup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L27) - -Warmups cache. - - - - diff --git a/docs/recipe/symfony.md b/docs/recipe/symfony.md deleted file mode 100644 index 5bafaffd4..000000000 --- a/docs/recipe/symfony.md +++ /dev/null @@ -1,183 +0,0 @@ - - - - -# How to Deploy a Symfony Application - -```php -require 'recipe/symfony.php'; -``` - -[Source](/recipe/symfony.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Symfony application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Symfony** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The symfony recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### symfony_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L8) - - - -```php title="Default value" -$result = run('{{bin/console}} --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.0; -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L14) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'var/log', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L18) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '.env.local' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L22) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'var', - 'var/cache', - 'var/log', - 'var/sessions', -] -``` - - -### migrations_config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L29) - - - - - -### doctrine_schema_validate_config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L31) - - - - - -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L33) - - - -```php title="Default value" -'{{bin/php}} {{release_or_current_path}}/bin/console' -``` - - -### console_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L35) - - - -```php title="Default value" -return '--no-interaction'; -``` - - - -## Tasks - -### database:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L40) - -Migrates database. - - - - -### doctrine:schema:validate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L50) - -Validate the Doctrine mapping files. - - - - -### deploy:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L55) - -Clears cache. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L64) - -Deploys project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/typo3.md b/docs/recipe/typo3.md deleted file mode 100644 index ad84e4a4e..000000000 --- a/docs/recipe/typo3.md +++ /dev/null @@ -1,123 +0,0 @@ - - - - -# How to Deploy a TYPO3 Project - -```php -require 'recipe/typo3.php'; -``` - -[Source](/recipe/typo3.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your TYPO3 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **TYPO3** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The typo3 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### typo3_webroot -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L11) - -DocumentRoot / WebRoot for the TYPO3 installation - -```php title="Default value" -'Web' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L26) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Shared directories - -```php title="Default value" -[ - '{{typo3_webroot}}/fileadmin', - '{{typo3_webroot}}/typo3temp', - '{{typo3_webroot}}/uploads' -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L35) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Shared files - -```php title="Default value" -[ - '{{typo3_webroot}}/.htaccess' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L42) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Writeable directories - -```php title="Default value" -[ - '{{typo3_webroot}}/fileadmin', - '{{typo3_webroot}}/typo3temp', - '{{typo3_webroot}}/typo3conf', - '{{typo3_webroot}}/uploads' -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L17) - -Deploys your project. - -Main TYPO3 task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/wordpress.md b/docs/recipe/wordpress.md deleted file mode 100644 index 67c40ff9a..000000000 --- a/docs/recipe/wordpress.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a WordPress Project - -```php -require 'recipe/wordpress.php'; -``` - -[Source](/recipe/wordpress.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your WordPress application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **WordPress** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The wordpress recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['wp-config.php'] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['wp-content/uploads'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -['wp-content/uploads'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L13) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/yii.md b/docs/recipe/yii.md deleted file mode 100644 index af7df22f5..000000000 --- a/docs/recipe/yii.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# How to Deploy a Yii2 Project - -```php -require 'recipe/yii.php'; -``` - -[Source](/recipe/yii.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Yii2 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Yii2** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The yii recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Yii shared dirs - -```php title="Default value" -['runtime'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L12) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Yii writable dirs - -```php title="Default value" -['runtime'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L18) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/zend_framework.md b/docs/recipe/zend_framework.md deleted file mode 100644 index b9f34b88a..000000000 --- a/docs/recipe/zend_framework.md +++ /dev/null @@ -1,65 +0,0 @@ - - - - -# How to Deploy a Zend Framework Project - -```php -require 'recipe/zend_framework.php'; -``` - -[Source](/recipe/zend_framework.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Zend Framework application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Zend Framework** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The zend_framework recipe is based on the [common](/docs/recipe/common.md) recipe. - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/zend_framework.php#L12) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/selector.md b/docs/selector.md deleted file mode 100644 index 6d9f8f165..000000000 --- a/docs/selector.md +++ /dev/null @@ -1,178 +0,0 @@ -# Selector - -Deployer uses the selector to choose hosts. Each host can have a set of labels. -Labels are key-value pairs. - -For example, `stage: production` or `role: web`. - -You can use labels to select hosts. For example, `dep deploy stage=production` -will deploy to all hosts with `stage: production` label. - -Let's define two labels **type** and **env** of our hosts: - -```php -host('web.example.com') - ->setLabels([ - 'type' => 'web', - 'env' => 'prod', - ]); - -host('db.example.com') - ->setLabels([ - 'type' => 'db', - 'env' => 'prod', - ]); -``` - -Now let's define a task to check labels: - -```php -task('info', function () { - writeln('type:' . get('labels')['type'] . ' env:' . get('labels')['env']); -}); -``` - -Now we can run this task on with a selector: - -```bash -$ dep info env=prod -task info -[web.example.com] type:web env:prod -[db.example.com] type:db env:prod -``` - -As you can see, Deployer will run this task on all hosts with `env: prod` label. -And if we define only `type` label, Deployer will run this task on specified host. - -```bash -dep info type=web -task info -[web.example.com] type:web env:prod -``` - -## Selector syntax - -Label syntax is represented by [disjunctive normal form](https://en.wikipedia.org/wiki/Disjunctive_normal_form) -(**OR of ANDs**). - -For example, `type=web,env=prod` is a selector of: `type=web` **OR** `env=prod`. - -```bash -$ dep info 'type=web,env=prod' -task info -[web.example.com] type:web env:prod -[db.example.com] type:db env:prod -``` - -As you can see both hosts are selected (as both of them has `env: prod` label). - -We can use `&` to define **AND**. For example, `type=web & env=prod` is a selector -for hosts with `type: web` **AND** `env: prod` labels. - -```bash -$ dep info 'type=web & env=prod' -task info -[web.example.com] type:web env:prod -``` - -We can also use `!=` to negate a label. For example, `type!=web` is a selector for -all hosts what has not `type: web` label. - -```bash -$ dep info 'type!=web' -task info -[db.example.com] type:db env:prod -``` - -:::note -Deployer CLI can take a few selectors as arguments. For example, -`dep info type=web env=prod` is a same as `dep info 'type=web,env=prod'`. - -You can install bash autocompletion for Deployer CLI, which will help you to -write selectors. See [installation](installation.md) for more. -::: - -Deployer also has a few special selectors: - -- `all` - select all hosts -- `alias=...` - select host by alias - -If a selector does not contain `=` sign, Deployer will assume that it is an alias. - -For example `dep info web.example.com` is a same as `dep info alias=web.example.com`. - -```bash -$ dep info web.example.com -task info -[web.example.com] type:web env:prod -``` - -```bash -$ dep info 'web.example.com' 'db.example.com' -$ # Same as: -$ dep info 'alias=web.example.com,alias=db.example.com' -```` - -## Using select() function - -You can use [select()](api.md#select) function to select hosts by selector from PHP code. - -```php -task('info', function () { - $hosts = select('type=web,env=prod'); - foreach ($hosts as $host) { - writeln('type:' . $host->get('labels')['type'] . ' env:' . $host->get('labels')['env']); - } -}); -``` - -Or you can use [on()](api.md#on) function to run a task on selected hosts. - -```php -task('info', function () { - on(select('all'), function () { - writeln('type:' . get('labels')['type'] . ' env:' . get('labels')['env']); - }); -}); -``` - -## Task selectors - -To restrict a task to run only on selected hosts, you can use [select()](tasks.md#select) method. - -```php -task('info', function () { - // ... -})->select('type=web,env=prod'); -``` - -## Labels in YAML - -You can also define labels in YAML recipe. For example: - -```yaml -hosts: - web.example.com: - remote_user: deployer - env: - environment: production - labels: - env: prod -``` - -But make sure to distinguish between `env` and `labels.env` keys. -`env` is a configuration key, and `labels.env` is a label. - -```php -task('info', function () { - writeln('env:' . get('env')['environment'] . ' labels.env:' . get('labels')['env']); -}); -``` - -Will print: - -```bash -$ dep info env=prod -task info -[web.example.com] env:production labels.env:prod -``` diff --git a/docs/sidebar.js b/docs/sidebar.js deleted file mode 100644 index c465bc5ab..000000000 --- a/docs/sidebar.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = [ - "installation", - "getting-started", - "basics", - { - type: "category", - label: "Main Concepts", - items: ["hosts", "tasks", "selector"], - }, - "ci-cd", - "yaml", - "cli", - "api", - { - type: "category", - label: "Other", - items: ["avoid-php-fpm-reloading", "UPGRADE", "KNOWN_BUGS"], - }, -]; diff --git a/docs/tasks.md b/docs/tasks.md deleted file mode 100644 index 406ccd586..000000000 --- a/docs/tasks.md +++ /dev/null @@ -1,135 +0,0 @@ -# Tasks - -Define a tasks by using the [task](api.md#task) function. Also, you can give a description -for a task with the [desc](api.md#desc) function called before _task_: - -```php -desc('My task'); -task('my_task', function () { - .... -}); -``` - -To get the task or override task config call the _task_ function without second argument: - -```php -task('my_task')->disable(); -``` - -## Task config - -### desc() - -Sets task's description. - -```php -task('deploy', function () { - // ... -})->desc('Task description'); -``` - -Same as using [desc()](api.md#desc) func helper: - -```php -desc('Task description'); -task('deploy', function () { - // ... -}); -``` - -### once() - -Sets the task to run only on one of selected hosts. - -### oncePerNode() - -Sets the task to run only on **one node** of selected hosts. - -Node determined by [hostname](hosts.md#hostname). For example a few different -hosts can be deploying to one physical machine (uniq hostname). - -```php -host('foo')->setHostname('example.com'); -host('bar')->setHostname('example.com'); -host('pro')->setHostname('another.com'); - -task('apt:update', function () { - // This task will be executed twice, only on "foo" and "pro" hosts. - run('apt-get update'); -})->oncePerNode(); -``` - -### hidden() - -Hides task from CLI usage page. - -### addBefore() - -Adds before hook to the task. - -### addAfter() - -Adds after hook to the task. - -### limit() - -Limits number of hosts the task will be executed in parallel. - -Default is unlimited (runs the task on all host in parallel). - -### select() - -Sets task's host selector. - -### addSelector() - -Adds task's selector. - -### verbose() - -Makes task always verbose. As if `-v` option persists. - -### disable() - -Disables the task. Task will not be executed. - -### enable() - -Enables the task. - -## Task grouping - -You can combine tasks in groups: - -```php -task('deploy', [ - 'deploy:prepare', - 'deploy:update_code', - 'deploy:vendors', - 'deploy:symlink', - 'cleanup' -]); -``` - -## Task hooks - -You can define tasks to be run before or after specific tasks. - -```php -task('deploy:done', function () { - writeln('Deploy done!'); -}); - -after('deploy', 'deploy:done'); -``` - -After the `deploy` task executed, `deploy:done` will be triggered. - -:::note -You can see which hooks is enabled via **dep tree** command. - -``` -dep tree deploy -``` - -::: diff --git a/docs/yaml.md b/docs/yaml.md deleted file mode 100644 index 71906117e..000000000 --- a/docs/yaml.md +++ /dev/null @@ -1,31 +0,0 @@ -# YAML - -Deployer supports recipes written in YAML. For validating structure, Deployer uses -JSON Schema declared in [schema.json](https://github.com/deployphp/deployer/blob/master/src/schema.json). - -Here is an example of YAML recipe: - -```yaml -import: - - recipe/laravel.php - -config: - repository: "git@github.com:example/example.com.git" - remote_user: deployer - -hosts: - example.com: - deploy_path: "~/example" - -tasks: - build: - - cd: "{{release_path}}" - - run: "npm run build" - -after: - deploy:failed: deploy:unlock -``` - -YAML recipes can include recipes written in PHP. For example, some tasks maybe written in PHP and imported in YAML. - -Also, other way around is possible: import YAML recipe from PHP. Use [import()](api.md#import) function for that. diff --git a/phpcs.xml b/phpcs.xml deleted file mode 100644 index df21cf250..000000000 --- a/phpcs.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - src - - - - - - diff --git a/phpstan.neon b/phpstan.neon deleted file mode 100644 index 99d3c05a4..000000000 --- a/phpstan.neon +++ /dev/null @@ -1,15 +0,0 @@ -includes: - - tests/phpstan-baseline.neon - -parameters: - level: 5 - paths: - - src - - recipe - - contrib - - ignoreErrors: - - "#^Constant DEPLOYER_VERSION not found\\.$#" - - "#^Constant DEPLOYER_BIN not found\\.$#" - - "#CpanelPhp#" - - "#AMQPMessage#" diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 9d98c66bf..000000000 --- a/phpunit.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - src/ - recipe/ - - - vendor/ - bin/ - - - - - tests/src/ - - - tests/legacy/ - - - tests/joy/ - - - diff --git a/tests/bootstrap.php b/tests/bootstrap.php deleted file mode 100644 index 6835938bd..000000000 --- a/tests/bootstrap.php +++ /dev/null @@ -1,40 +0,0 @@ -&1`; -`cd $repository && git add .`; -`cd $repository && git config user.name 'Anton Medvedev'`; -`cd $repository && git config user.email 'anton.medv@example.com'`; -`cd $repository && git commit -m 'first commit'`; diff --git a/tests/docker/Dockerfile b/tests/docker/Dockerfile deleted file mode 100644 index edd5914c2..000000000 --- a/tests/docker/Dockerfile +++ /dev/null @@ -1,102 +0,0 @@ -FROM php:7.3-cli-alpine AS composer -RUN apk add wget -COPY ./scripts/install-composer.sh /tmp/install-composer.sh -RUN sh /tmp/install-composer.sh - - - - - -FROM php:7.3-cli-alpine AS deployer -RUN apk add \ - git \ - openssh-client \ - rsync - -RUN ssh-keygen \ - -q \ - -b 2048 \ - -t rsa \ - -f ~/.ssh/id_rsa - -RUN git config --global user.email "e2e@deployer.test" \ - && git config --global user.name "E2E Deployer" - -ARG XDEBUG_VERSION=2.9.8 -RUN set -eux; \ - apk add --no-cache --virtual .build-deps $PHPIZE_DEPS; \ - pecl install xdebug-$XDEBUG_VERSION; \ - docker-php-ext-enable xdebug; \ - apk del .build-deps - -COPY scripts/php-code-coverage/coverage-start-wrapper.php /usr/local/etc/php/php-code-coverage/ -COPY conf/10-coverage.ini /usr/local/etc/php/conf.d/ - -COPY --from=composer /tmp/composer /bin/composer -VOLUME [ "/project" ] -WORKDIR /project - - - - - -FROM php:7.3-apache AS server -RUN apt-get update && apt-get install -y \ - acl \ - git \ - openssh-server \ - sudo \ - && rm -rf /var/lib/apt/lists/* - -# SSH login fix. Otherwise user is kicked off after login -RUN mkdir /run/sshd \ - && sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd - -# Configure Apache to expose healthcheck & configure site to use /var/www/html/current ad document root -COPY conf/healthcheck.conf /etc/apache2/sites-available/healthcheck.conf -COPY ./initial-site /var/www/html/initial-site - -ENV APACHE_DOCUMENT_ROOT /var/www/html/current/public -RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/000-default.conf \ - && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \ - && ln -s /var/www/html/initial-site /var/www/html/current \ - && chown -R www-data:www-data /var/www/html \ - && echo "Listen 81" >> /etc/apache2/ports.conf \ - && a2enmod rewrite \ - && a2ensite healthcheck - -RUN useradd \ - --create-home \ - deployer \ - && echo 'deployer:deployer' | chpasswd \ - && echo 'deployer ALL=(ALL) ALL' >> /etc/sudoers \ - && mkdir ~deployer/.ssh \ - && touch ~deployer/.ssh/authorized_keys \ - && chown -R deployer:deployer ~deployer/.ssh \ - && chmod 700 ~deployer/.ssh \ - && chmod 600 ~deployer/.ssh/authorized_keys \ - && usermod -a -G www-data deployer - -RUN useradd \ - --create-home \ - git \ - && mkdir ~git/.ssh \ - && touch ~git/.ssh/authorized_keys \ - && chown -R git:git ~git/.ssh \ - && chmod 700 ~git/.ssh \ - && chmod 700 ~git/.ssh/authorized_keys \ - && mkdir ~git/repository \ - && git init --bare ~git/repository \ - && chown -R git:git ~git/repository - -COPY scripts/start-servers.sh /usr/local/bin/start-servers -COPY --from=composer /tmp/composer /usr/local/bin/composer -COPY --from=deployer /root/.ssh/id_rsa.pub /tmp/root_rsa.pub - -RUN chmod a+x /usr/local/bin/start-servers \ - && cat /tmp/root_rsa.pub >> ~deployer/.ssh/authorized_keys \ - && cat /tmp/root_rsa.pub >> ~git/.ssh/authorized_keys \ - && rm -rf /tmp/root_rsa.pub - -EXPOSE 22 80 81 -CMD [ "start-servers" ] diff --git a/tests/docker/README.md b/tests/docker/README.md deleted file mode 100644 index eb7ef2342..000000000 --- a/tests/docker/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Deployer E2E testing environment - -This directory contains an end-to-end testing environment for Deployer. - -All commands mentioned in this readme, should be executed in the `docker` directory. - -## Requirements - -* Docker -* docker-compose - -## Running tests - -The E2E are started when running the `docker-compose up` command. -This will start the `server` container that has the Apache, OpenSSH & PHP 7.3 enabled. - -Once the `server` is up and running, the `deployer` container will be started and alongside it -the tests will be ran. - -## Adding new E2E tests - -The E2E test should be a part of the `e2e` test suite. -Each `e2e` test class should inherit from `AbstractE2ETest` class. - -Note: E2E tests will only run in an environment where env variable `E2E_ENV` has been set and has a truthy value. - -## Manually accessing the `deployer` container. - -The container can be accessed by running: - -``` -docker-compose run deployer sh -``` - -This command will spawn a `sh` shell inside the `deployer` container. - -## About containers - -### `deployer` container - -The `deployer` container contains: - -* git -* PHP 7.3 with XDebug enabled -* rsync -* SSH client - -It is possible to access the `server` container via ssh by running: - -``` -ssh deployer@server -``` - -`root`'s public key has been added to authorized keys for `deployer` user. - -#### Enabling XDebug - -To enable XDebug create a `docker-compose.override.yml` file with following content: - -```dockerfile -services: - deployer: - environment: - # See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host - # See https://github.com/docker/for-linux/issues/264 - # The `remote_host` below may optionally be replaced with `remote_connect_back=1` - XDEBUG_CONFIG: >- - remote_enable=1 - remote_host=${XDEBUG_HOST:-host.docker.internal} - remote_autostart=1 - remote_port=9000 - idekey=PHPSTORM - # This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers` - # Then PHPStorm will use the corresponding path mappings - PHP_IDE_CONFIG: serverName=deployer-e2e -``` - -Note: you may want to set the `XDEBUG_HOST` env variable to point to your IP address when running tests in Linux. - -### `server` container - -The `server` container contains: - -* Apache (with the `DocumentRoot` set to `/var/www/html/current`) -* git -* PHP 7.3 -* SSH server with -* sudo (user `deployer` can use `sudo` after providing a password: `deployer`) diff --git a/tests/docker/conf/10-coverage.ini b/tests/docker/conf/10-coverage.ini deleted file mode 100644 index 038ce7c9e..000000000 --- a/tests/docker/conf/10-coverage.ini +++ /dev/null @@ -1,2 +0,0 @@ -auto_prepend_file = /usr/local/etc/php/php-code-coverage/coverage-start-wrapper.php -auto_append_file = /usr/local/etc/php/php-code-coverage/coverage-start-wrapper.php \ No newline at end of file diff --git a/tests/docker/conf/healthcheck.conf b/tests/docker/conf/healthcheck.conf deleted file mode 100644 index f51410f86..000000000 --- a/tests/docker/conf/healthcheck.conf +++ /dev/null @@ -1,32 +0,0 @@ - - # The ServerName directive sets the request scheme, hostname and port that - # the server uses to identify itself. This is used when creating - # redirection URLs. In the context of virtual hosts, the ServerName - # specifies what hostname must appear in the request's Host: header to - # match this virtual host. For the default virtual host (this file) this - # value is not decisive as it is used as a last resort host regardless. - # However, you must set it for any further virtual host explicitly. - #ServerName www.example.com - - ServerAdmin webmaster@localhost - DocumentRoot /var/www/html - - # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, - # error, crit, alert, emerg. - # It is also possible to configure the loglevel for particular - # modules, e.g. - #LogLevel info ssl:warn - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - - RewriteEngine on - RedirectMatch 204 /health_check - - # For most configuration files from conf-available/, which are - # enabled or disabled at a global level, it is possible to - # include a line for only one particular virtual host. For example the - # following line enables the CGI configuration for this host only - # after it has been globally disabled with "a2disconf". - #Include conf-available/serve-cgi-bin.conf - diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml deleted file mode 100644 index cd51b193a..000000000 --- a/tests/docker/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: '2.4' - -services: - deployer: - build: - context: "" - target: deployer - depends_on: - server: - condition: service_healthy - volumes: - - ./../../:/project - command: "sh /project/tests/e2e/coverage/start-e2e-test.sh" - networks: - - e2e - environment: - PHP_CCOV_START_FILE: '/project/tests/e2e/coverage/coverage-start.php' - PHP_CCOV_OUTPUT_FILE: '/project/tests/e2e/report/clover.xml' -# # See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host -# # See https://github.com/docker/for-linux/issues/264 -# # The `remote_host` below may optionally be replaced with `remote_connect_back=1` -# XDEBUG_CONFIG: >- -# remote_enable=1 -# remote_host=${XDEBUG_RHOST:-host.docker.internal} -# remote_autostart=1 -# remote_port=9000 -# idekey=PHPSTORM -# # This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers` -# # Then PHPStorm will use the corresponding path mappings -# PHP_IDE_CONFIG: serverName=deployer-e2e - - server: - build: - context: "" - target: server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:81/health_check"] - interval: 5s - timeout: 2s - retries: 3 - start_period: 2s - networks: - e2e: - aliases: - - server.test - -networks: - e2e: diff --git a/tests/docker/initial-site/public/index.html b/tests/docker/initial-site/public/index.html deleted file mode 100644 index 5016ba876..000000000 --- a/tests/docker/initial-site/public/index.html +++ /dev/null @@ -1,5 +0,0 @@ - - - Hello World! - - \ No newline at end of file diff --git a/tests/docker/scripts/install-composer.sh b/tests/docker/scripts/install-composer.sh deleted file mode 100644 index e2ac87df5..000000000 --- a/tests/docker/scripts/install-composer.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -EXPECTED_CHECKSUM="$(wget -q -O - https://composer.github.io/installer.sig)" -php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" - -if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] -then - >&2 echo 'ERROR: Invalid installer checksum' - rm composer-setup.php - exit 1 -fi - -php composer-setup.php --quiet --install-dir=/tmp --filename=composer -RESULT=$? -rm composer-setup.php -chmod a+x /tmp/composer -exit $RESULT \ No newline at end of file diff --git a/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php b/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php deleted file mode 100644 index a93060aa3..000000000 --- a/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php +++ /dev/null @@ -1,5 +0,0 @@ -tester = new ConsoleApplicationTester(__DIR__ . '/../../bin/dep', __DIR__); - } -} diff --git a/tests/e2e/ConsoleApplicationTester.php b/tests/e2e/ConsoleApplicationTester.php deleted file mode 100644 index 3136b291b..000000000 --- a/tests/e2e/ConsoleApplicationTester.php +++ /dev/null @@ -1,147 +0,0 @@ -binaryPath ], $arguments); - - $outputArgs = []; - foreach ($arguments as $key => $value) { - if (!is_numeric($key)) { - $outputArgs[] = $key; - } - - $outputArgs[] = $value; - } - - return $outputArgs; - } - - private function prepareProcess(array $arguments): Process - { - $commandLine = $this->generateCommand($arguments); - - $process = new Process($commandLine); - $process->setTimeout($this->timeout); - - if (!empty($this->inputs)) { - $inputs = self::createInputsStream($this->inputs); - $process->setInput($inputs); - } - - if (!empty($this->cwd)) { - $process->setWorkingDirectory($this->cwd); - } - - return $process; - } - - public function __construct(string $binaryPath, string $cwd = '') - { - $this->binaryPath = $binaryPath; - $this->cwd = $cwd; - } - - public function __destruct() - { - if ($this->process && $this->process->isRunning()) { - $this->process->stop(0); - } - } - - /** - * @param int $timeout timout in seconds after which process will be stopped - * @return $this - */ - public function setTimeout(int $timeout): self - { - $this->timeout = $timeout; - return $this; - } - - public function setInputs(array $inputs): self - { - $this->inputs = $inputs; - return $this; - } - - public function run(array $arguments): self - { - if ($this->process && $this->process->isRunning()) { - throw new \RuntimeException('Previous process did not end yet'); - } - - $this->process = $this->prepareProcess($arguments); - $this->process->run(); - - return $this; - } - - public function getDisplay(bool $normalize = false): string - { - if ($this->process === null) { - throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); - } - - $display = $this->process->getOutput(); - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - public function getErrors(bool $normalize = false): string - { - if ($this->process === null) { - throw new \RuntimeException('Error output not initialized, did you execute the command before requesting the display?'); - } - - $display = $this->process->getErrorOutput(); - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - public function getStatusCode() - { - if ($this->process === null) { - throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the display?'); - } - - return $this->process->getExitCode(); - } -} diff --git a/tests/e2e/FunctionsE2ETest.php b/tests/e2e/FunctionsE2ETest.php deleted file mode 100644 index eec7fc4d5..000000000 --- a/tests/e2e/FunctionsE2ETest.php +++ /dev/null @@ -1,24 +0,0 @@ -tester->run([ - '-f' => self::RECIPE, - 'test:functions:run-with-placeholders', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('placeholder {{bar}} xyz%', $display); - } -} diff --git a/tests/e2e/LaravelBoilerplateE2ETest.php b/tests/e2e/LaravelBoilerplateE2ETest.php deleted file mode 100644 index 7110811c4..000000000 --- a/tests/e2e/LaravelBoilerplateE2ETest.php +++ /dev/null @@ -1,37 +0,0 @@ -tester->setTimeout(180) - ->run([ - '-f' => self::RECIPE, - 'deploy', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - $siteContent = file_get_contents('http://server.test'); - $expectedSiteContent = "Build v8."; - self::assertStringContainsString($expectedSiteContent, $siteContent); - } - - protected function tearDown(): void - { - parent::tearDown(); - - if ($this->tester) { - $this->tester->run([ - '-f' => self::RECIPE, - 'deploy:unlock', - 'all', - ]); - } - } -} diff --git a/tests/e2e/MiscE2ETest.php b/tests/e2e/MiscE2ETest.php deleted file mode 100644 index e800d5948..000000000 --- a/tests/e2e/MiscE2ETest.php +++ /dev/null @@ -1,45 +0,0 @@ -tester->setInputs(['deployer']); - - $this->tester->run([ - '-f' => self::RECIPE, - 'test:misc:sudo-write-user', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('Current user is: root', $display); - } - - /** - * @group e2e - */ - public function testSudoWithPasswordProvidedViaArgument(): void - { - $this->tester->run([ - '-f' => self::RECIPE, - 'test:misc:sudo-write-user', - '-o' => 'sudo_pass=deployer', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('Current user is: root', $display); - } -} diff --git a/tests/e2e/SymfonyBoilerplateE2ETest.php b/tests/e2e/SymfonyBoilerplateE2ETest.php deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/e2e/TimeoutsE2ETest.php b/tests/e2e/TimeoutsE2ETest.php deleted file mode 100644 index ce12d6a03..000000000 --- a/tests/e2e/TimeoutsE2ETest.php +++ /dev/null @@ -1,25 +0,0 @@ -tester->run([ - '-f' => self::RECIPE, - 'test:timeouts', - 'all', - '-v', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('+timeout', $display); - } -} diff --git a/tests/e2e/bootstrap.php b/tests/e2e/bootstrap.php deleted file mode 100644 index f95e2e680..000000000 --- a/tests/e2e/bootstrap.php +++ /dev/null @@ -1,14 +0,0 @@ -includeDirectory('/project'); -$filter->excludeDirectory('/project/vendor'); -$filter->excludeDirectory('/project/tests'); - -$outputCoverage = new CodeCoverage( - (new Selector)->forLineCoverage($filter), - $filter -); - -$coverageReports = glob("/tmp/ccov/*.php"); -foreach ($coverageReports as $reportPath) { - /** @var CodeCoverage $partialCoverage */ - $partialCoverage = include $reportPath; - if (!$partialCoverage) { - throw new \Exception("Failed to load coverage report from file '{$reportPath}'"); - } - $outputCoverage->merge($partialCoverage); -} - -$cloverReport = new Clover(); -$cloverReport->process($outputCoverage, $outputFile); - -echo "Clover report file written to {$outputFile}\n"; - diff --git a/tests/e2e/coverage/coverage-start.php b/tests/e2e/coverage/coverage-start.php deleted file mode 100644 index 538669856..000000000 --- a/tests/e2e/coverage/coverage-start.php +++ /dev/null @@ -1,60 +0,0 @@ -includeDirectory('/project'); -$filter->excludeDirectory('/project/vendor'); -$filter->excludeDirectory('/project/tests'); -$report = new PHPReport(); - -$coverage = new CodeCoverage( - (new Selector)->forLineCoverage($filter), - $filter -); - -$outputDir = '/tmp/ccov'; -if (!is_dir($outputDir)) { - mkdir($outputDir); -} - -// use anonymous class as we don't really want to pollute class space with this stuff -(new class ($coverage, $report, $outputDir) { - /** @var CodeCoverage */ - private $coverage; - /** @var PHPReport */ - private $report; - /** @var string */ - private $outputDir; - /** @var string|null */ - private $coverageName; - - public function __construct(CodeCoverage $coverage, PHPReport $report, string $outputDir) { - $this->coverage = $coverage; - $this->report = $report; - $this->outputDir = $outputDir; - } - - public function start():void { - register_shutdown_function([$this, 'stop']); - - $coverageName = uniqid('coverage_'); - $this->coverageName = $coverageName; - $this->coverage->start($this->coverageName); - } - - public function stop():void { - $this->coverage->stop(); - - $outputFile = $this->outputDir . "/{$this->coverageName}.php"; - $this->report->process($this->coverage, $outputFile); - } -})->start(); - - - diff --git a/tests/e2e/coverage/start-e2e-test.sh b/tests/e2e/coverage/start-e2e-test.sh deleted file mode 100644 index ba82ffe23..000000000 --- a/tests/e2e/coverage/start-e2e-test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -ROOTDIR=$(readlink -f "$(dirname "$0")/../../..") - -# Run E2E tests and grab exit code of the process -php "$ROOTDIR/vendor/bin/pest" --config "$ROOTDIR/tests/e2e/phpunit-e2e.xml" -E2E_EXIT_CODE=$? - -# Generate coverage report file -php "$ROOTDIR/tests/e2e/coverage/coverage-report.php" - -return $E2E_EXIT_CODE \ No newline at end of file diff --git a/tests/e2e/phpunit-e2e.xml b/tests/e2e/phpunit-e2e.xml deleted file mode 100644 index aac4227af..000000000 --- a/tests/e2e/phpunit-e2e.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - . - - - diff --git a/tests/e2e/recipe/functions.php b/tests/e2e/recipe/functions.php deleted file mode 100644 index e3eaa3c43..000000000 --- a/tests/e2e/recipe/functions.php +++ /dev/null @@ -1,14 +0,0 @@ - '{{bar}}', 'baz' => 'xyz%']; - - $output = run($cmd, ['env' => $env]); - output()->writeln($output); // we use this to skip \Deployer\parse() being called in normal \Deployer\writeln() -}); diff --git a/tests/e2e/recipe/hosts.php b/tests/e2e/recipe/hosts.php deleted file mode 100644 index 89906faf5..000000000 --- a/tests/e2e/recipe/hosts.php +++ /dev/null @@ -1,13 +0,0 @@ -setDeployPath('/var/www/html') - ->set('bin/php', '/usr/local/bin/php') - ->setTag('e2e') - ->setRemoteUser('deployer') - ->set('timeout', 600) - ->setSshArguments([ - '-o UserKnownHostsFile=/dev/null', - '-o StrictHostKeyChecking=no', - ]); diff --git a/tests/e2e/recipe/laravel-boilerplate.php b/tests/e2e/recipe/laravel-boilerplate.php deleted file mode 100644 index 8a31898b8..000000000 --- a/tests/e2e/recipe/laravel-boilerplate.php +++ /dev/null @@ -1,29 +0,0 @@ -disable(); - -before('deploy:shared', 'laravel:setup-env'); -before('artisan:storage:link', 'artisan:key:generate'); diff --git a/tests/e2e/recipe/misc.php b/tests/e2e/recipe/misc.php deleted file mode 100644 index c3d2a4cb8..000000000 --- a/tests/e2e/recipe/misc.php +++ /dev/null @@ -1,12 +0,0 @@ - 1 ] ); - } catch (TimeoutException $e) { - $ps = run("if ps aux | grep '[p]hp -r while(true){}'; then echo still running; else echo +timeout; fi"); - if ($ps != '+timeout') { - throw new \Exception('Process still running.'); - } - } -}); - diff --git a/tests/fixtures/project/uploaded.html b/tests/fixtures/project/uploaded.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/fixtures/repository/.env b/tests/fixtures/repository/.env deleted file mode 100644 index ead49fb51..000000000 --- a/tests/fixtures/repository/.env +++ /dev/null @@ -1 +0,0 @@ -ENV=prod diff --git a/tests/fixtures/repository/README.md b/tests/fixtures/repository/README.md deleted file mode 100644 index 32d99c612..000000000 --- a/tests/fixtures/repository/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Example repository - - diff --git a/tests/fixtures/repository/composer.json b/tests/fixtures/repository/composer.json deleted file mode 100644 index 4d13e3c6e..000000000 --- a/tests/fixtures/repository/composer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "ಠ_ಠ", - "require": { - "php": "^7.3" - } -} diff --git a/tests/fixtures/repository/uploads/poem.txt b/tests/fixtures/repository/uploads/poem.txt deleted file mode 100644 index e5c64ea00..000000000 --- a/tests/fixtures/repository/uploads/poem.txt +++ /dev/null @@ -1,12 +0,0 @@ -Night, street, lamp, drugstore, -A dull and meaningless light. -Go on and live another quarter century - -Nothing will change. There's no way out. - -You'll die, then start from the beginning, -It will repeat, just like before: -Night, icy ripples on a canal, -Drugstore, street, lamp. - - A. A. Blok - 10 October 1912 diff --git a/tests/joy/HostDefaultConfigTest.php b/tests/joy/HostDefaultConfigTest.php deleted file mode 100644 index 3cfdacc33..000000000 --- a/tests/joy/HostDefaultConfigTest.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -class HostDefaultConfigTest extends JoyTest -{ - protected function recipe(): string - { - return <<<'PHP' -getPort(); - writeln(empty($port) ? 'empty' : "port:$port"); -}); -PHP; - } - - public function testOnFunc() - { - $this->dep('test'); - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('empty', $display); - } -} diff --git a/tests/joy/JoyTest.php b/tests/joy/JoyTest.php deleted file mode 100644 index 5d95df15c..000000000 --- a/tests/joy/JoyTest.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -use Deployer\Deployer; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Tester\ApplicationTester; -use const __TEMP_DIR__; - -abstract class JoyTest extends TestCase -{ - /** - * @var ApplicationTester - */ - protected $tester; - - /** - * @var Deployer - */ - protected $deployer; - - public static function setUpBeforeClass(): void - { - self::cleanUp(); - mkdir(__TEMP_DIR__); - } - - public static function tearDownAfterClass(): void - { - self::cleanUp(); - } - - protected static function cleanUp() - { - if (is_dir(__TEMP_DIR__)) { - exec('rm -rf ' . __TEMP_DIR__); - } - } - - protected function init(string $recipe) - { - $console = new Application(); - $console->setAutoExit(false); - $this->tester = new ApplicationTester($console); - - $this->deployer = new Deployer($console); - $this->deployer->importer->import($recipe); - $this->deployer->init(); - $this->deployer->config->set('deploy_path', __TEMP_DIR__ . '/{{hostname}}'); - } - - protected function dep(string $task, array $args = []): int - { - $recipe = __TEMP_DIR__ . '/' . get_called_class() . '.php'; - file_put_contents($recipe, $this->recipe()); - $this->init($recipe); - return $this->tester->run(array_merge([ - $task, - 'selector' => 'all', - '--file' => $recipe, - '--limit' => 1 - ], $args), [ - 'verbosity' => OutputInterface::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - } - - abstract protected function recipe(): string; -} diff --git a/tests/joy/OnFuncTest.php b/tests/joy/OnFuncTest.php deleted file mode 100644 index f2d6bb1f7..000000000 --- a/tests/joy/OnFuncTest.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -class OnFuncTest extends JoyTest -{ - protected function recipe(): string - { - return <<<'PHP' -once(); -PHP; - } - - public function testOnFunc() - { - putenv('DEPLOYER_LOCAL_WORKER=false'); - $this->dep('test'); - putenv('DEPLOYER_LOCAL_WORKER=true'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] foo = prod', $display); - self::assertStringContainsString('[beta] foo = beta', $display); - } -} diff --git a/tests/legacy/AbstractTest.php b/tests/legacy/AbstractTest.php deleted file mode 100644 index bc8a08590..000000000 --- a/tests/legacy/AbstractTest.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Output\Output; -use Symfony\Component\Console\Tester\ApplicationTester; - -/** - * @deprecated Use JoyTest instead. - */ -abstract class AbstractTest extends TestCase -{ - /** - * @var ApplicationTester - */ - protected $tester; - - /** - * @var Deployer - */ - protected $deployer; - - public static function setUpBeforeClass(): void - { - self::cleanUp(); - mkdir(__TEMP_DIR__); - } - - public static function tearDownAfterClass(): void - { - self::cleanUp(); - } - - protected static function cleanUp() - { - if (is_dir(__TEMP_DIR__)) { - exec('rm -rf ' . __TEMP_DIR__); - } - } - - protected function init(string $recipe) - { - $console = new Application(); - $console->setAutoExit(false); - $this->tester = new ApplicationTester($console); - - $this->deployer = new Deployer($console); - $this->deployer->importer->import($recipe); - $this->deployer->init(); - $this->deployer->config->set('deploy_path', __TEMP_DIR__ . '/{{hostname}}'); - } - - protected function dep(string $recipe, string $task) - { - $this->init($recipe); - $this->tester->run([ - $task, - 'selector' => 'all', - '-f' => $recipe, - '-l' => 1 - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - } -} diff --git a/tests/legacy/CurrentPathTest.php b/tests/legacy/CurrentPathTest.php deleted file mode 100644 index 96b7c49e4..000000000 --- a/tests/legacy/CurrentPathTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class CurrentPathTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.php'; - - public function testDeployWithDifferentCurrentPath() - { - $currentPath = __TEMP_DIR__ . '/prod/public_html'; - - $this->init(self::RECIPE); - $this->tester->run([ - 'deploy', - 'selector' => 'prod', - '-f' => self::RECIPE, - '-o' => ['current_path=' . $currentPath], - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertFileExists($currentPath . '/README.md'); - self::assertFileExists($currentPath . '/config/test.yaml'); - } -} diff --git a/tests/legacy/DeployTest.php b/tests/legacy/DeployTest.php deleted file mode 100644 index e62079d22..000000000 --- a/tests/legacy/DeployTest.php +++ /dev/null @@ -1,144 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class DeployTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.php'; - - public function testDeploy() - { - $display = $this->dep(self::RECIPE, 'deploy'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertDirectoryExists($deployPath . '/.dep'); - self::assertDirectoryExists($deployPath . '/releases'); - self::assertDirectoryExists($deployPath . '/shared'); - self::assertDirectoryExists($deployPath . '/current'); - self::assertDirectoryExists($deployPath . '/current/'); - self::assertFileExists($deployPath . '/current/README.md'); - self::assertDirectoryExists($deployPath . '/current/storage/logs'); - self::assertDirectoryExists($deployPath . '/current/storage/db'); - self::assertDirectoryExists($deployPath . '/shared/storage/logs'); - self::assertDirectoryExists($deployPath . '/shared/storage/db'); - self::assertFileExists($deployPath . '/shared/uploads/poem.txt'); - self::assertFileExists($deployPath . '/shared/.env'); - self::assertFileExists($deployPath . '/current/config/test.yaml'); - self::assertFileExists($deployPath . '/shared/config/test.yaml'); - self::assertEquals(1, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - public function testDeploySelectHosts() - { - $this->init(self::RECIPE); - $this->tester->setInputs(['0,1']); - $this->tester->run(['deploy', '-f' => self::RECIPE, '-l' => 1], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - 'interactive' => true, - ]); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - public function testKeepReleases() - { - for ($i = 0; $i < 3; $i++) { - $this->dep(self::RECIPE, 'deploy'); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - for ($i = 0; $i < 6; $i++) { - $this->dep(self::RECIPE, 'deploy:fail'); - self::assertEquals(1, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - for ($i = 0; $i < 3; $i++) { - $this->dep(self::RECIPE, 'deploy'); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals(3, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - /** - * @depends testKeepReleases - */ - public function testRollback() - { - $this->dep(self::RECIPE, 'rollback'); - - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals(3, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - public function testFail() - { - $this->dep(self::RECIPE, 'deploy:fail'); - - $display = $this->tester->getDisplay(); - self::assertEquals(1, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals('ok', exec("cd $deployPath && [ -f .dep/deploy.lock ] || echo ok"), 'fail hooks deploy:unlock did not run'); - } - } - - /** - * @depends testFail - */ - public function testCleanup() - { - $this->dep(self::RECIPE, 'deploy:cleanup'); - - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertFileDoesNotExist($deployPath . '/release'); - } - } - - public function testIsUnlockedExitsWithOneWhenDeployIsLocked() - { - $this->dep(self::RECIPE, 'deploy:lock'); - $this->dep(self::RECIPE, 'deploy:is_locked'); - $display = $this->tester->getDisplay(); - - self::assertStringContainsString('Deploy is locked by ', $display); - self::assertSame(1, $this->tester->getStatusCode()); - } - - public function testIsUnlockedExitsWithZeroWhenDeployIsNotLocked() - { - $this->dep(self::RECIPE, 'deploy:unlock'); - $this->dep(self::RECIPE, 'deploy:is_locked'); - $display = $this->tester->getDisplay(); - - self::assertStringContainsString('Deploy is unlocked.', $display); - self::assertSame(0, $this->tester->getStatusCode()); - } -} diff --git a/tests/legacy/EnvTest.php b/tests/legacy/EnvTest.php deleted file mode 100644 index 27b4c0552..000000000 --- a/tests/legacy/EnvTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class EnvTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/env.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('global=global', $display); - self::assertStringContainsString('local=local', $display); - self::assertStringContainsString('dotenv=Hello, world!', $display); - self::assertStringContainsString('dotenv=local', $display); - } -} diff --git a/tests/legacy/NamedArgumentsTest.php b/tests/legacy/NamedArgumentsTest.php deleted file mode 100644 index 7b19a0d96..000000000 --- a/tests/legacy/NamedArgumentsTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -// TODO: Wait until Deployer 7.1 with only php8 supports. -//class NamedArgumentsTest extends AbstractTest -//{ -// const RECIPE = __DIR__ . '/recipe/named_arguments.php'; -// -// public function testRunWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, world!', $display); -// } -// -// public function testRunWithOptions() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['options', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, Anton!', $display); -// } -// -// public function testRunWithOptionsWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['options_with_named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, override!', $display); -// } -// -// public function testRunLocallyWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['run_locally_named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, world!', $display); -// } -//} diff --git a/tests/legacy/OncePerNodeTest.php b/tests/legacy/OncePerNodeTest.php deleted file mode 100644 index b42c88229..000000000 --- a/tests/legacy/OncePerNodeTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class OncePerNodeTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/once_per_node.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test_once_per_node'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('alias: group_a_1 hostname: localhost', $display); - self::assertStringNotContainsString('alias: group_a_2 hostname: localhost', $display); - self::assertStringContainsString('alias: group_b_1 hostname: group_b_1', $display); - self::assertStringNotContainsString('alias: group_b_2 hostname: group_b_2', $display); - } -} diff --git a/tests/legacy/OnceTest.php b/tests/legacy/OnceTest.php deleted file mode 100644 index 540a21a36..000000000 --- a/tests/legacy/OnceTest.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class OnceTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/once.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test_once'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, 'SHOULD BE ONCE') == 1, $display); - } -} diff --git a/tests/legacy/ParallelTest.php b/tests/legacy/ParallelTest.php deleted file mode 100644 index 4f84f66c5..000000000 --- a/tests/legacy/ParallelTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class ParallelTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/parallel.php'; - - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - putenv('DEPLOYER_LOCAL_WORKER=false'); // Allow to start workers. Don't forget to disable it later. - } - - public static function tearDownAfterClass(): void - { - putenv('DEPLOYER_LOCAL_WORKER=true'); - parent::tearDownAfterClass(); - } - - public function testWorker() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'echo', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - public function testServer() - { - $this->init(self::RECIPE); - $this->tester->setInputs(['prod', 'Black bear']); - $this->tester->run([ - 'ask', - '-f' => self::RECIPE, - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - 'interactive' => true, - ]); - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] Question: What kind of bear is best?', $display); - self::assertStringContainsString('[prod] Black bear', $display); - } - - public function testOption() - { - $this->init(self::RECIPE); - $this->tester->run( - [ - 'echo', - 'selector' => 'all', - '-o' => ['greet=Hello'], - '-f' => self::RECIPE, - //'-l' => 1, - ], - [ - 'verbosity' => Output::VERBOSITY_DEBUG, - 'interactive' => false, - ] - ); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] Hello, prod!', $display); - self::assertStringContainsString('[beta] Hello, beta!', $display); - } - - public function testCachedHostConfig() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'cache_config_test', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, 'worker on prod') == 1, $display); - self::assertTrue(substr_count($display, 'worker on beta') == 1, $display); - } - - public function testHostConfigFromCallback() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'host_config_from_callback', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, '[prod] config value is from global') == 1, $display); - self::assertTrue(substr_count($display, '[beta] config value is from callback') == 1, $display); - } -} diff --git a/tests/legacy/SelectTest.php b/tests/legacy/SelectTest.php deleted file mode 100644 index ccb6b43b0..000000000 --- a/tests/legacy/SelectTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class SelectTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/select.php'; - - public function testSelect() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'test', - '-f' => self::RECIPE, - 'selector' => 'prod' - ], [ - 'verbosity' => Output::VERBOSITY_DEBUG, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringNotContainsString('executing on prod', $display); - self::assertStringContainsString('executing on beta', $display); - self::assertStringContainsString('executing on dev', $display); - } -} diff --git a/tests/legacy/UpdateCodeTest.php b/tests/legacy/UpdateCodeTest.php deleted file mode 100644 index cd2018d5b..000000000 --- a/tests/legacy/UpdateCodeTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class UpdateCodeTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/update_code.php'; - - public function testDeployWithDifferentUpdateCodeTask() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'deploy', - 'selector' => 'prod', - '-f' => self::RECIPE, - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - ]); - - $display = $this->tester->getDisplay(); - $deployPath = $this->deployer->hosts->get('prod')->getDeployPath(); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertFileExists($deployPath . '/current/uploaded.html'); - } -} diff --git a/tests/legacy/YamlTest.php b/tests/legacy/YamlTest.php deleted file mode 100644 index f4854d079..000000000 --- a/tests/legacy/YamlTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class YamlTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.yaml'; - - public function testDeploy() - { - $this->init(self::RECIPE); - $this->deployer->config->set('repository', __REPOSITORY__); - $this->tester->run([ - 'deploy', - 'selector' => 'all', - '-f' => self::RECIPE - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertDirectoryExists($deployPath . '/.dep'); - self::assertDirectoryExists($deployPath . '/releases'); - self::assertDirectoryExists($deployPath . '/shared'); - self::assertDirectoryExists($deployPath . '/current'); - self::assertDirectoryExists($deployPath . '/current/'); - self::assertFileExists($deployPath . '/current/README.md'); - self::assertDirectoryExists($deployPath . '/current/storage/logs'); - self::assertDirectoryExists($deployPath . '/current/storage/db'); - self::assertDirectoryExists($deployPath . '/shared/storage/logs'); - self::assertDirectoryExists($deployPath . '/shared/storage/db'); - self::assertFileExists($deployPath . '/shared/uploads/poem.txt'); - self::assertFileExists($deployPath . '/shared/.env'); - self::assertFileExists($deployPath . '/current/config/test.yaml'); - self::assertFileExists($deployPath . '/shared/config/test.yaml'); - self::assertEquals(1, intval(`cd $deployPath && ls -1 releases | wc -l`)); - } - } -} diff --git a/tests/legacy/recipe/deploy.php b/tests/legacy/recipe/deploy.php deleted file mode 100644 index 23d4907ae..000000000 --- a/tests/legacy/recipe/deploy.php +++ /dev/null @@ -1,47 +0,0 @@ -&1'); -}); - -task('deploy:fail', [ - 'deploy:prepare', - 'fail', - 'deploy:publish' -]); - -task('fail', function () { - run('false'); -}); - -fail('deploy:fail', 'deploy:unlock'); diff --git a/tests/legacy/recipe/deploy.yaml b/tests/legacy/recipe/deploy.yaml deleted file mode 100644 index cddacf5de..000000000 --- a/tests/legacy/recipe/deploy.yaml +++ /dev/null @@ -1,27 +0,0 @@ -import: recipe/common.php - -config: - application: deployer - shared_dirs: - - uploads - - storage/logs/ - - storage/db - shared_files: - - .env - - config/test.yaml - keep_releases: 3 - http_user: false - -hosts: - prod: - local: true - -tasks: - deploy: - - deploy:prepare - - deploy:vendors - - deploy:publish - - deploy:vendors: - - cd: '{{release_path}}' - - run: echo {{bin/composer}} {{composer_options}} 2>&1 diff --git a/tests/legacy/recipe/env.php b/tests/legacy/recipe/env.php deleted file mode 100644 index 09da6f9c7..000000000 --- a/tests/legacy/recipe/env.php +++ /dev/null @@ -1,22 +0,0 @@ - 'global', -]); - -task('test', function () { - info('global=' . run('echo $VAR')); - info('local=' . run('echo $VAR', ['env' => ['VAR' => 'local']])); - info('dotenv=' . run('echo $KEY')); - info('dotenv=' . run('echo $KEY', ['env' => ['KEY' => 'local']])); -}); - -before('test', function () { - run('mkdir -p {{deploy_path}}'); - run('echo KEY="\'Hello, world!\'" > {{deploy_path}}/.env'); - set('dotenv', '{{deploy_path}}/.env'); -}); diff --git a/tests/legacy/recipe/named_arguments.php b/tests/legacy/recipe/named_arguments.php deleted file mode 100644 index 204412185..000000000 --- a/tests/legacy/recipe/named_arguments.php +++ /dev/null @@ -1,22 +0,0 @@ - 'world']); -}); - -task('options', function () { - run('echo "Hello, $name!"', ['env' => ['name' => 'Anton']]); -}); - -task('options_with_named_arguments', function () { - // The `options:` arg has higher priority than named arguments. - run('echo "Hello, $name!"', ['env' => ['name' => 'override']], env: ['name' => 'world']); -}); - -task('run_locally_named_arguments', function () { - runLocally('echo "Hello, $name!"', env: ['name' => 'world']); -}); diff --git a/tests/legacy/recipe/once.php b/tests/legacy/recipe/once.php deleted file mode 100644 index 84f8bbe24..000000000 --- a/tests/legacy/recipe/once.php +++ /dev/null @@ -1,10 +0,0 @@ -once(); diff --git a/tests/legacy/recipe/once_per_node.php b/tests/legacy/recipe/once_per_node.php deleted file mode 100644 index d41c66e19..000000000 --- a/tests/legacy/recipe/once_per_node.php +++ /dev/null @@ -1,16 +0,0 @@ -setHostname('localhost'); -localhost('group_a_2') - ->setHostname('localhost'); -localhost('group_b_1') - ->setLabels(['node' => 'anna']); -localhost('group_b_2') - ->setLabels(['node' => 'anna']); - -task('test_once_per_node', function () { - writeln('alias: {{alias}} hostname: {{hostname}}'); -})->oncePerNode(); diff --git a/tests/legacy/recipe/parallel.php b/tests/legacy/recipe/parallel.php deleted file mode 100644 index f95c125e8..000000000 --- a/tests/legacy/recipe/parallel.php +++ /dev/null @@ -1,49 +0,0 @@ -set('host_level_callback_config', function () { - return 'from callback'; - }); - -// testServer: - -task('ask', function () { - $answer = ask('Question: What kind of bear is best?'); - writeln($answer); -}); - -// testWorker, testOption: - -set('greet', '_'); - -task('echo', function () { - $alias = currentHost()->getAlias(); - run("echo {{greet}}, $alias!"); -}); - -// testCachedHostConfig: - -set('upper_host', function () { - writeln('running ' . (Deployer::isWorker() ? 'worker' : 'master') . ' on ' . currentHost()->getAlias()); - return strtoupper(currentHost()->getAlias()); -}); - -task('cache_config_test', function () { - writeln('echo 1: {{upper_host}}'); -}); - -after('cache_config_test', function () { - writeln('echo 2: {{upper_host}}'); -}); - -// testHostConfigFromCallback: - -set('host_level_callback_config', 'from global'); - -task('host_config_from_callback', function () { - writeln('config value is {{host_level_callback_config}}'); -}); - diff --git a/tests/legacy/recipe/select.php b/tests/legacy/recipe/select.php deleted file mode 100644 index 8951edbfe..000000000 --- a/tests/legacy/recipe/select.php +++ /dev/null @@ -1,13 +0,0 @@ -setLabels(['env' => 'prod']); -localhost('beta')->setLabels(['env' => 'dev']); -localhost('dev')->setLabels(['env' => 'dev']); - -task('test', function () { - on(select('env=dev'), function () { - info('executing on {{alias}}'); - }); -}); diff --git a/tests/legacy/recipe/update_code.php b/tests/legacy/recipe/update_code.php deleted file mode 100644 index 637f1e83c..000000000 --- a/tests/legacy/recipe/update_code.php +++ /dev/null @@ -1,9 +0,0 @@ -\" between 100|125|200|100000 and 0 is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Else branch is unreachable because previous condition is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^If condition is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^If condition is always false\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Comparison operation \"\\>\" between 0 and 0 is always false\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Unsafe usage of new static\\(\\)\\.$#" - count: 2 - path: ../src/Component/PharUpdate/Exception/Exception.php - - - - message: "#^Unsafe usage of new static\\(\\)\\.$#" - count: 1 - path: ../src/Component/PharUpdate/Manifest.php - - - - message: "#^If condition is always true\\.$#" - count: 1 - path: ../src/Host/Host.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: ../src/Importer/Importer.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: ../src/functions.php - diff --git a/tests/src/Collection/CollectionTest.php b/tests/src/Collection/CollectionTest.php deleted file mode 100644 index 7d7da392b..000000000 --- a/tests/src/Collection/CollectionTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Collection; - -use Deployer\Host\HostCollection; -use Deployer\Task\TaskCollection; -use PHPUnit\Framework\TestCase; - -class CollectionTest extends TestCase -{ - public static function collections() - { - return [ - [new Collection()], - [new TaskCollection()], - [new HostCollection()], - ]; - } - - /** - * @dataProvider collections - */ - public function testCollection($collection) - { - $this->assertInstanceOf(Collection::class, $collection); - - $object = new \stdClass(); - $collection->set('object', $object); - - $this->assertTrue($collection->has('object')); - $this->assertEquals($object, $collection->get('object')); - - $this->assertEquals(['object' => $object], $collection->select(function ($value, $key) use ($object) { - return $value === $object && $key === 'object'; - })); - } - - /** - * @dataProvider collections - * @depends testCollection - */ - public function testException($collection) - { - $this->expectException(\InvalidArgumentException::class); - $collection->get('unexpected'); - } -} diff --git a/tests/src/Command/BlackjackCommandTest.php b/tests/src/Command/BlackjackCommandTest.php deleted file mode 100644 index 6faa6331a..000000000 --- a/tests/src/Command/BlackjackCommandTest.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Component\Pimple; - -use Deployer\Component\Pimple\Exception\FrozenServiceException; -use Deployer\Component\Pimple\Exception\InvalidServiceIdentifierException; -use Deployer\Component\Pimple\Exception\UnknownIdentifierException; -use InvalidArgumentException; -use PHPUnit\Framework\TestCase; -use ReflectionProperty; -use RuntimeException; -use function extension_loaded; - -class PimpleTest extends TestCase -{ - public function testWithString() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - - $this->assertEquals('value', $pimple['param']); - } - - public function testWithClosure() - { - $pimple = new Container(); - $pimple['service'] = function () { - return new Service(); - }; - - $this->assertInstanceOf(Service::class, $pimple['service']); - } - - public function testServicesShouldBeDifferent() - { - $pimple = new Container(); - $pimple['service'] = $pimple->factory(function () { - return new Service(); - }); - - $serviceOne = $pimple['service']; - $this->assertInstanceOf(Service::class, $serviceOne); - - $serviceTwo = $pimple['service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - - $this->assertNotSame($serviceOne, $serviceTwo); - } - - public function testShouldPassContainerAsParameter() - { - $pimple = new Container(); - $pimple['service'] = function () { - return new Service(); - }; - $pimple['container'] = function ($container) { - return $container; - }; - - $this->assertNotSame($pimple, $pimple['service']); - $this->assertSame($pimple, $pimple['container']); - } - - public function testIsset() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - $pimple['service'] = function () { - return new Service(); - }; - - $pimple['null'] = null; - - $this->assertTrue(isset($pimple['param'])); - $this->assertTrue(isset($pimple['service'])); - $this->assertTrue(isset($pimple['null'])); - $this->assertFalse(isset($pimple['non_existent'])); - } - - public function testConstructorInjection() - { - $params = ['param' => 'value']; - $pimple = new Container($params); - - $this->assertSame($params['param'], $pimple['param']); - } - - public function testOffsetGetValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - echo $pimple['foo']; - } - - /** - * @group legacy - */ - public function testLegacyOffsetGetValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - echo $pimple['foo']; - } - - public function testOffsetGetHonorsNullValues() - { - $pimple = new Container(); - $pimple['foo'] = null; - $this->assertNull($pimple['foo']); - } - - public function testUnset() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - $pimple['service'] = function () { - return new Service(); - }; - - unset($pimple['param'], $pimple['service']); - $this->assertFalse(isset($pimple['param'])); - $this->assertFalse(isset($pimple['service'])); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testShare($service) - { - $pimple = new Container(); - $pimple['shared_service'] = $service; - - $serviceOne = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - - $serviceTwo = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - - $this->assertSame($serviceOne, $serviceTwo); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testProtect($service) - { - $pimple = new Container(); - $pimple['protected'] = $pimple->protect($service); - - $this->assertSame($service, $pimple['protected']); - } - - public function testGlobalFunctionNameAsParameterValue() - { - $pimple = new Container(); - $pimple['global_function'] = 'strlen'; - $this->assertSame('strlen', $pimple['global_function']); - } - - public function testRaw() - { - $pimple = new Container(); - $pimple['service'] = $definition = $pimple->factory(function () { - return 'foo'; - }); - $this->assertSame($definition, $pimple->raw('service')); - } - - public function testRawHonorsNullValues() - { - $pimple = new Container(); - $pimple['foo'] = null; - $this->assertNull($pimple->raw('foo')); - } - - public function testRawValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->raw('foo'); - } - - /** - * @group legacy - */ - public function testLegacyRawValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->raw('foo'); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testExtend($service) - { - $pimple = new Container(); - $pimple['shared_service'] = function () { - return new Service(); - }; - $pimple['factory_service'] = $pimple->factory(function () { - return new Service(); - }); - - $pimple->extend('shared_service', $service); - $serviceOne = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - $serviceTwo = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - $this->assertSame($serviceOne, $serviceTwo); - $this->assertSame($serviceOne->value, $serviceTwo->value); - - $pimple->extend('factory_service', $service); - $serviceOne = $pimple['factory_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - $serviceTwo = $pimple['factory_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - $this->assertNotSame($serviceOne, $serviceTwo); - $this->assertNotSame($serviceOne->value, $serviceTwo->value); - } - - public function testExtendDoesNotLeakWithFactories() - { - if (extension_loaded('pimple')) { - $this->markTestSkipped('Pimple extension does not support this test'); - } - $pimple = new Container(); - - $pimple['foo'] = $pimple->factory(function () { - return; - }); - $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { - return; - }); - unset($pimple['foo']); - - $p = new ReflectionProperty($pimple, 'values'); - $p->setAccessible(true); - $this->assertEmpty($p->getValue($pimple)); - - $p = new ReflectionProperty($pimple, 'factories'); - $p->setAccessible(true); - $this->assertCount(0, $p->getValue($pimple)); - } - - public function testExtendValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - */ - public function testLegacyExtendValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->extend('foo', function () { - }); - } - - public function testKeys() - { - $pimple = new Container(); - $pimple['foo'] = 123; - $pimple['bar'] = 123; - - $this->assertEquals(['foo', 'bar'], $pimple->keys()); - } - - /** @test */ - public function settingAnInvokableObjectShouldTreatItAsFactory() - { - $pimple = new Container(); - $pimple['invokable'] = new Invokable(); - - $this->assertInstanceOf(Service::class, $pimple['invokable']); - } - - /** @test */ - public function settingNonInvokableObjectShouldTreatItAsParameter() - { - $pimple = new Container(); - $pimple['non_invokable'] = new NonInvokable(); - - $this->assertInstanceOf(NonInvokable::class, $pimple['non_invokable']); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testFactoryFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->factory($service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyFactoryFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->factory($service); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testProtectFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->protect($service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyProtectFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->protect($service); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testExtendFailsForKeysNotContainingServiceDefinitions($service) - { - $this->expectException(InvalidServiceIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.'); - - $pimple = new Container(); - $pimple['foo'] = $service; - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service) - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.'); - - $pimple = new Container(); - $pimple['foo'] = $service; - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected? - */ - public function testExtendingProtectedClosureDeprecation() - { - $pimple = new Container(); - $pimple['foo'] = $pimple->protect(function () { - return 'bar'; - }); - - $pimple->extend('foo', function ($value) { - return $value . '-baz'; - }); - - $this->assertSame('bar-baz', $pimple['foo']); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testExtendFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple['foo'] = function () { - }; - $pimple->extend('foo', $service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyExtendFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple['foo'] = function () { - }; - $pimple->extend('foo', $service); - } - - public function testExtendFailsIfFrozenServiceIsNonInvokable() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return new NonInvokable(); - }; - $foo = $pimple['foo']; - - $pimple->extend('foo', function () { - }); - } - - public function testExtendFailsIfFrozenServiceIsInvokable() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return new Invokable(); - }; - $foo = $pimple['foo']; - - $pimple->extend('foo', function () { - }); - } - - /** - * Provider for invalid service definitions. - */ - public function badServiceDefinitionProvider() - { - return [ - [123], - [new NonInvokable()], - ]; - } - - /** - * Provider for service definitions. - */ - public function serviceDefinitionProvider() - { - return [ - [function ($value) { - $service = new Service(); - $service->value = $value; - - return $service; - }], - [new Invokable()], - ]; - } - - public function testDefiningNewServiceAfterFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['bar'] = function () { - return 'bar'; - }; - $this->assertSame('bar', $pimple['bar']); - } - - public function testOverridingServiceAfterFreeze() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['foo'] = function () { - return 'bar'; - }; - } - - /** - * @group legacy - */ - public function testLegacyOverridingServiceAfterFreeze() - { - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['foo'] = function () { - return 'bar'; - }; - } - - public function testRemovingServiceAfterFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - unset($pimple['foo']); - $pimple['foo'] = function () { - return 'bar'; - }; - $this->assertSame('bar', $pimple['foo']); - } - - public function testExtendingService() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) { - return "$foo.bar"; - }); - $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) { - return "$foo.baz"; - }); - $this->assertSame('foo.bar.baz', $pimple['foo']); - } - - public function testExtendingServiceAfterOtherServiceFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $pimple['bar'] = function () { - return 'bar'; - }; - $foo = $pimple['foo']; - - $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) { - return "$bar.baz"; - }); - $this->assertSame('bar.baz', $pimple['bar']); - } -} - -class Invokable -{ - public function __invoke($value = null) - { - $service = new Service(); - $service->value = $value; - - return $service; - } -} - -class NonInvokable -{ - public function __call($a, $b) - { - } -} - -class Service -{ - public $value; -} diff --git a/tests/src/Component/Ssh/IOArgumentsTest.php b/tests/src/Component/Ssh/IOArgumentsTest.php deleted file mode 100644 index 4a722cde1..000000000 --- a/tests/src/Component/Ssh/IOArgumentsTest.php +++ /dev/null @@ -1,34 +0,0 @@ -set('foo', 'a'); - $config['bar'] = 'b'; - - self::assertEquals('a b', $config->parse('{{foo}} {{bar}}')); - } - - public function testUnset() - { - $config = new Configuration(); - $config->set('opt', true); - unset($config['opt']); - self::assertFalse(isset($config['opt'])); - } - - public function testGet() - { - $config = new Configuration(); - $config->set('opt', true); - $config->set('fn', function () { - return 'func'; - }); - - self::assertTrue(isset($config['opt'])); - self::assertEquals(true, $config['opt']); - self::assertEquals('func', $config['fn']); - } - - public function testGetDefault() - { - $config = new Configuration(); - $config->set('name', 'alpha'); - - self::assertEquals('/alpha', $config->get('path', '/{{name}}')); - } - - public function testGetException() - { - $this->expectException(ConfigurationException::class); - - $config = new Configuration(); - $config->set('name', 'alpha'); - - self::assertEquals('/alpha', $config->get('path')); - } - - public function testGetParent() - { - $parent = new Configuration(); - $config = new Configuration($parent); - - $parent->set('opt', 'value'); - self::assertEquals('value', $parent['opt']); - self::assertEquals('value', $config['opt']); - - $parent->set('opt', 'newValue'); - self::assertEquals('newValue', $parent['opt']); - self::assertEquals('value', $config['opt']); - - $config->set('opt', 'hostValue'); - self::assertEquals('newValue', $parent['opt']); - self::assertEquals('hostValue', $config['opt']); - self::assertEquals('okay', $config->get('miss', 'okay')); - } - - public function testGetParentParent() - { - $global = new Configuration(); - $parent = new Configuration($global); - $config = new Configuration($parent); - - $global->set('global', 'value from {{path}}'); - $parent->set('path', 'parent'); - - self::assertEquals('value from parent', $config->get('global')); - } - - public function testGetParentWhatDependsOnChild() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - $beta = new Configuration($parent); - - $parent->set('deploy_path', 'path/{{name}}'); - $alpha->set('name', 'alpha'); - $beta->set('name', 'beta'); - - self::assertEquals('path/alpha', $alpha->get('deploy_path')); - self::assertEquals('path/beta', $beta->get('deploy_path')); - } - - public function testGetFromCallback() - { - $config = new Configuration(); - $config->set('func', function () { - return 'param'; - }); - self::assertEquals('param', $config['func']); - } - - public function testAdd() - { - $config = new Configuration(); - $config->set('opt', ['foo', 'bar']); - $config->add('opt', ['baz']); - self::assertEquals(['foo', 'bar', 'baz'], $config['opt']); - } - - public function testAddEmpty() - { - $config = new Configuration(); - $config->add('opt', ['baz']); - self::assertEquals(['baz'], $config['opt']); - } - - public function testAddDefaultToNotArray() - { - $this->expectException(\RuntimeException::class); - $this->expectExceptionMessage('Config option "config" isn\'t array.'); - - $config = new Configuration(); - $config->set('config', 'option'); - $config->add('config', ['three']); - } - - public function testAddToParent() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('files', ['a', 'b']); - $alpha->add('files', ['c']); - - self::assertEquals(['a', 'b', 'c'], $alpha->get('files')); - } - - public function testAddToParentCallback() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('files', function () { - return ['a', 'b']; - }); - $alpha->add('files', ['c']); - - self::assertEquals(['a', 'b', 'c'], $alpha->get('files')); - } - - public function testPersist() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('global', 'do not include'); - $alpha->set('whoami', function () { - $this->fail('should not be called'); - }); - $alpha->set('name', 'alpha'); - - self::assertEquals(['name' => 'alpha'], $alpha->persist()); - } -} diff --git a/tests/src/DeployerTest.php b/tests/src/DeployerTest.php deleted file mode 100644 index e3b4d4da4..000000000 --- a/tests/src/DeployerTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class DeployerTest extends TestCase -{ - private $deployer; - - protected function setUp(): void - { - $console = new Application(); - $input = $this->createMock(InputInterface::class); - $output = $this->createMock(OutputInterface::class); - $this->deployer = new Deployer($console, $input, $output); - } - - protected function tearDown(): void - { - unset($this->deployer); - } - - public function testInstance() - { - $this->assertEquals($this->deployer, Deployer::get()); - } -} diff --git a/tests/src/FunctionsTest.php b/tests/src/FunctionsTest.php deleted file mode 100644 index ceae06a05..000000000 --- a/tests/src/FunctionsTest.php +++ /dev/null @@ -1,185 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Deployer\Configuration\Configuration; -use Deployer\Host\Host; -use Deployer\Host\Localhost; -use Deployer\Task\Context; -use Deployer\Task\GroupTask; -use Deployer\Task\Task; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\Input; -use Symfony\Component\Console\Output\Output; -use function Deployer\localhost; - -class FunctionsTest extends TestCase -{ - /** - * @var Deployer - */ - private $deployer; - - protected function setUp(): void - { - $console = new Application(); - - $input = $this->createMock(Input::class); - $output = $this->createMock(Output::class); - $host = new Localhost(); - - $this->deployer = new Deployer($console); - $this->deployer['input'] = $input; - $this->deployer['output'] = $output; - Context::push(new Context($host)); - } - - protected function tearDown(): void - { - Context::pop(); - unset($this->deployer); - $this->deployer = null; - } - - public function testHost() - { - host('domain.com'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('domain.com')); - - host('a1.domain.com', 'a2.domain.com')->set('roles', 'app'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('a1.domain.com')); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('a2.domain.com')); - - host('db[1:2].domain.com')->set('roles', 'db'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('db1.domain.com')); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('db2.domain.com')); - } - - public function testLocalhost() - { - localhost('domain.com'); - self::assertInstanceOf(Localhost::class, $this->deployer->hosts->get('domain.com')); - } - - public function testTask() - { - task('task', function () { - }); - - $task = $this->deployer->tasks->get('task'); - self::assertInstanceOf(Task::class, $task); - - $task = task('task'); - self::assertInstanceOf(Task::class, $task); - - task('group', ['task']); - $task = $this->deployer->tasks->get('group'); - self::assertInstanceOf(GroupTask::class, $task); - - $task = task('callable', [$this, __METHOD__]); - self::assertInstanceOf(Task::class, $task); - } - - public function testBefore() - { - task('main', function () {}); - task('before', function () {}); - before('main', 'before'); - before('before', function () {}); - - $names = $this->taskToNames($this->deployer->scriptManager->getTasks('main')); - self::assertEquals(['before:before', 'before', 'main'], $names); - } - - public function testAfter() - { - task('main', function () {}); - task('after', function () {}); - after('main', 'after'); - after('after', function () {}); - - $names = $this->taskToNames($this->deployer->scriptManager->getTasks('main')); - self::assertEquals(['main', 'after', 'after:after'], $names); - } - - public function testRunLocally() - { - $output = runLocally('echo "hello"'); - self::assertEquals('hello', $output); - } - - public function testRunLocallyWithOptions() - { - Context::get()->getConfig()->set('env', ['DEPLOYER_ENV' => 'default', 'DEPLOYER_ENV_TMP' => 'default']); - - $output = runLocally('echo $DEPLOYER_ENV'); - self::assertEquals('default', $output); - $output = runLocally('echo $DEPLOYER_ENV_TMP'); - self::assertEquals('default', $output); - - $output = runLocally('echo $DEPLOYER_ENV', ['env' => ['DEPLOYER_ENV_TMP' => 'overwritten']]); - self::assertEquals('default', $output); - $output = runLocally('echo $DEPLOYER_ENV_TMP', ['env' => ['DEPLOYER_ENV_TMP' => 'overwritten']]); - self::assertEquals('overwritten', $output); - } - - public function testWithinSetsWorkingPaths() - { - Context::get()->getConfig()->set('working_path', '/foo'); - - within('/bar', function () { - $withinWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/bar', $withinWorkingPath); - }); - - $originalWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/foo', $originalWorkingPath); - } - - public function testWithinRestoresWorkingPathInCaseOfException() - { - Context::get()->getConfig()->set('working_path', '/foo'); - - try { - within('/bar', function () { - throw new \Exception('Dummy exception'); - }); - } catch (\Exception $exception) { - // noop - } - - $originalWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/foo', $originalWorkingPath); - } - - public function testWithinReturningValue() - { - $output = within('/foo', function () { - return 'bar'; - }); - - self::assertEquals('bar', $output); - } - - public function testWithinWithVoidFunction() - { - $output = within('/foo', function () { - // noop - }); - - self::assertNull($output); - } - - private function taskToNames($tasks) - { - return array_map(function (Task $task) { - return $task->getName(); - }, $tasks); - } -} diff --git a/tests/src/Host/ConfigurationTest.php b/tests/src/Host/ConfigurationTest.php deleted file mode 100644 index ae5a6d82e..000000000 --- a/tests/src/Host/ConfigurationTest.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use Deployer\Configuration\Configuration; -use Deployer\Exception\ConfigurationException; -use PHPUnit\Framework\TestCase; - -class ConfigurationTest extends TestCase -{ - public function testConfiguration() - { - $config = new Configuration(); - $config->set('int', 42); - $config->set('string', 'value'); - $config->set('array', [1, 'two']); - $config->set('hyphen-ated', 'hyphen'); - $config->set('parse', 'is {{int}}'); - $config->set('parse-hyphen', 'has {{hyphen-ated}}'); - $config->set('callback', function () { - return 'callback'; - }); - $this->assertEquals(42, $config->get('int')); - $this->assertEquals('value', $config->get('string')); - $this->assertEquals([1, 'two'], $config->get('array')); - $this->assertEquals('default', $config->get('no', 'default')); - $this->assertEquals(null, $config->get('no', null)); - $this->assertEquals('callback', $config->get('callback')); - $this->assertEquals('is 42', $config->get('parse')); - $this->assertEquals('has hyphen', $config->get('parse-hyphen')); - - $config->set('int', 11); - $this->assertEquals('is 11', $config->get('parse')); - - $this->expectException('RuntimeException'); - $config->get('so'); - } - - public function testAddParams() - { - $config = new Configuration(); - $config->set('config', [ - 'one', - 'two' => 2, - 'nested' => [], - ]); - $config->add('config', [ - 'two' => 20, - 'nested' => [ - 'first', - ], - ]); - $config->add('config', [ - 'nested' => [ - 'second', - ], - ]); - $config->add('config', [ - 'extra', - ]); - - $expected = [ - 'one', - 'two' => 20, - 'nested' => [ - 'first', - 'second', - ], - 'extra', - ]; - $this->assertEquals($expected, $config->get('config')); - } - - public function testAddParamsToNotArray() - { - $this->expectException(ConfigurationException::class); - - $config = new Configuration(); - $config->set('config', 'option'); - $config->add('config', ['three']); - } -} diff --git a/tests/src/Host/HostTest.php b/tests/src/Host/HostTest.php deleted file mode 100644 index d1f66234c..000000000 --- a/tests/src/Host/HostTest.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use Deployer\Configuration\Configuration; -use PHPUnit\Framework\TestCase; - -class HostTest extends TestCase -{ - public function testHost() - { - $host = new Host('host'); - $host - ->setHostname('hostname') - ->setRemoteUser('remote_user') - ->setPort(22) - ->setConfigFile('~/.ssh/config') - ->setIdentityFile('~/.ssh/id_rsa') - ->setForwardAgent(true) - ->setSshMultiplexing(true); - - self::assertEquals('host', $host->getAlias()); - self::assertStringContainsString('host', $host->getTag()); - self::assertEquals('hostname', $host->getHostname()); - self::assertEquals('remote_user', $host->getRemoteUser()); - self::assertEquals(22, $host->getPort()); - self::assertEquals('~/.ssh/config', $host->getConfigFile()); - self::assertEquals('~/.ssh/id_rsa', $host->getIdentityFile()); - self::assertEquals(true, $host->getForwardAgent()); - self::assertEquals(true, $host->getSshMultiplexing()); - } - - public function testConfigurationAccessor() - { - $host = new Host('host'); - $host - ->set('roles', ['db', 'app']) - ->set('key', 'value') - ->set('array', [1]) - ->add('array', [2]); - - self::assertEquals(['db', 'app'], $host->get('roles')); - self::assertEquals('value', $host->get('key')); - self::assertEquals([1, 2], $host->get('array')); - } - - public function testHostAlias() - { - $host = new Host('host/alias'); - self::assertEquals('host/alias', $host->getAlias()); - self::assertEquals('host', $host->getHostname()); - } - - public function testHostWithParams() - { - $host = new Host('host'); - $value = 'new_value'; - $host - ->set('env', $value) - ->set('identity_file', '{{env}}'); - - self::assertEquals($value, $host->getIdentityFile()); - } - - public function testHostWithUserFromConfig() - { - $parent = new Configuration(); - $parent->set("deploy_user", function () { - return "test_user"; - }); - - $host = new Host('host'); - $host->config()->bind($parent); - $host - ->setHostname('host') - ->setRemoteUser('{{deploy_user}}') - ->setPort(22); - - self::assertEquals('test_user@host', $host->connectionString()); - } -} diff --git a/tests/src/Host/RangeTest.php b/tests/src/Host/RangeTest.php deleted file mode 100644 index 15cb9c0a4..000000000 --- a/tests/src/Host/RangeTest.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use PHPUnit\Framework\TestCase; - -class RangeTest extends TestCase -{ - public function testExpand() - { - self::assertEquals(['h1', 'h2', 'h3'], Range::expand(['h[1:3]'])); - self::assertEquals(['h1', 'h2', 'ha'], Range::expand(['h[1:2]', 'ha'])); - self::assertEquals(['h0', 'h1'], Range::expand(['h[0:1]'])); - self::assertEquals(['h1'], Range::expand(['h[1:1]'])); - self::assertEquals(['ha', 'hb', 'hc', 'hd'], Range::expand(['h[a:d]'])); - - $hostnames = Range::expand(['h[01:20]']); - self::assertContains('h01', $hostnames); - self::assertContains('h10', $hostnames); - self::assertContains('h20', $hostnames); - - self::assertCount(100, Range::expand(['h[1:100]'])); - self::assertCount(26, Range::expand(['h[a:z]'])); - } -} diff --git a/tests/src/Importer/ImporterTest.php b/tests/src/Importer/ImporterTest.php deleted file mode 100644 index 1f03602db..000000000 --- a/tests/src/Importer/ImporterTest.php +++ /dev/null @@ -1,82 +0,0 @@ -previousInput = $deployer->input; - $this->previousOutput = $deployer->output; - } - - public function tearDown(): void - { - Deployer::get()->input = $this->previousInput; - Deployer::get()->output = $this->previousOutput; - } - - public function testCanOneOverrideStaticMethod(): void - { - $extendedImporter = new class extends Importer - { - public static $config = []; - - protected static function config(array $config) - { - static::$config = $config; - } - }; - - $data = << 'bar'], $extendedImporter::$config); - } - - public function testImporterIgnoresYamlHiddenKeys(): void - { - $data = <<hosts->has('production')); - self::assertTrue(Deployer::get()->hosts->has('acceptance')); - self::assertTrue(Deployer::get()->hosts->has('production.beta')); - self::assertEquals('acceptance', Deployer::get()->hosts->get('acceptance')->getLabels()['stage']); - self::assertEquals('production', Deployer::get()->hosts->get('production')->getLabels()['stage']); - self::assertEquals('foo', Deployer::get()->hosts->get('acceptance')->getRemoteUser()); - self::assertEquals('bar', Deployer::get()->hosts->get('production')->getRemoteUser()); - } -} diff --git a/tests/src/Selector/SelectorTest.php b/tests/src/Selector/SelectorTest.php deleted file mode 100644 index d8dc61a99..000000000 --- a/tests/src/Selector/SelectorTest.php +++ /dev/null @@ -1,32 +0,0 @@ -set('labels', ['stage' => 'prod']); - $front = (new Host('prod.domain.com/front'))->set('labels', ['stage' => 'prod', 'tier' => 'frontend']); - $beta = (new Host('beta.domain.com'))->set('labels', ['stage' => 'beta']); - $dev = (new Host('dev'))->set('labels', ['stage' => 'dev']); - $multi = (new Host('multi'))->set('labels', ['stage' => ['prod', 'beta']]); - $allHosts = [$prod, $front, $beta, $dev, $multi]; - - $hosts = new HostCollection(); - foreach ($allHosts as $host) { - $hosts->set($host->getAlias(), $host); - } - $selector = new Selector($hosts); - self::assertEquals($allHosts, $selector->select('all')); - self::assertEquals([$prod, $front, $multi], $selector->select('stage=prod')); - self::assertEquals([$front], $selector->select('stage=prod & tier=frontend')); - self::assertEquals([$front, $beta, $multi], $selector->select('prod.domain.com/front, stage=beta')); - self::assertEquals([$prod, $beta, $dev, $multi], $selector->select('all & tier != frontend')); - self::assertEquals([$prod, $front, $dev], $selector->select('stage != beta')); - } -} diff --git a/tests/src/Support/HelpersTest.php b/tests/src/Support/HelpersTest.php deleted file mode 100644 index 1a4624761..000000000 --- a/tests/src/Support/HelpersTest.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Support; - -use PHPUnit\Framework\TestCase; - -class HelpersTest extends TestCase -{ - public function testArrayFlatten() - { - self::assertEquals(['a', 'b', 'c'], array_flatten(['a', ['b', 'key' => ['c']]])); - } - - public function testArrayMergeAlternate() - { - $config = [ - 'one', - 'two' => 2, - 'nested' => [], - ]; - - $config = array_merge_alternate($config, [ - 'two' => 20, - 'nested' => [ - 'first', - ], - ]); - - $config = array_merge_alternate($config, [ - 'nested' => [ - 'second', - ], - ]); - - $config = array_merge_alternate($config, [ - 'extra' - ]); - - self::assertEquals([ - 'one', - 'two' => 20, - 'nested' => [ - 'first', - 'second', - ], - 'extra', - ], $config); - } - - public function testParseHomeDir() - { - $this->assertStringStartsWith('/', parse_home_dir('~/path')); - $this->assertStringStartsWith('/', parse_home_dir('~')); - $this->assertStringStartsWith('~', parse_home_dir('~path')); - $this->assertStringEndsWith('~', parse_home_dir('path~')); - } -} diff --git a/tests/src/Support/ObjectProxyTest.php b/tests/src/Support/ObjectProxyTest.php deleted file mode 100644 index 42322ed5e..000000000 --- a/tests/src/Support/ObjectProxyTest.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Support; - -use PHPUnit\Framework\TestCase; - -class ObjectProxyTest extends TestCase -{ - public function testObjectProxy() - { - $mock = self::getMockBuilder('stdClass') - ->setMethods(['foo']) - ->getMock(); - $mock - ->expects(self::once()) - ->method('foo') - ->with('a', 'b'); - - $proxy = new ObjectProxy([$mock]); - $proxy->foo('a', 'b'); - } -} diff --git a/tests/src/Task/ContextTest.php b/tests/src/Task/ContextTest.php deleted file mode 100644 index 131b01db4..000000000 --- a/tests/src/Task/ContextTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use Deployer\Configuration\Configuration; -use Deployer\Host\Host; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class ContextTest extends TestCase -{ - public function testContext() - { - $host = $this->getMockBuilder(Host::class)->disableOriginalConstructor()->getMock(); - $host - ->expects($this->once()) - ->method('config') - ->willReturn($this->createMock(Configuration::class)); - - $context = new Context($host); - - $this->assertInstanceOf(Host::class, $context->getHost()); - $this->assertInstanceOf(Configuration::class, $context->getConfig()); - - Context::push($context); - - $this->assertEquals($context, Context::get()); - $this->assertEquals($context, Context::pop()); - } -} diff --git a/tests/src/Task/ScriptManagerTest.php b/tests/src/Task/ScriptManagerTest.php deleted file mode 100644 index c061ffd78..000000000 --- a/tests/src/Task/ScriptManagerTest.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use PHPUnit\Framework\TestCase; - -class ScriptManagerTest extends TestCase -{ - public function testGetTasks() - { - $notify = new Task('notify'); - $info = new GroupTask('info', ['notify']); - $deploy = new GroupTask('deploy', ['deploy:setup', 'deploy:release']); - $deploy->addBefore($info); - $setup = new Task('deploy:setup'); - $release = new Task('deploy:release'); - - $taskCollection = new TaskCollection(); - $taskCollection->set($notify->getName(), $notify); - $taskCollection->set($info->getName(), $info); - $taskCollection->set($deploy->getName(), $deploy); - $taskCollection->set($setup->getName(), $setup); - $taskCollection->set($release->getName(), $release); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$notify, $setup, $release], $scriptManager->getTasks('deploy')); - } - - public function testOnce() - { - $a = new Task('a'); - $b = new Task('b'); - $b->once(); - $group = new GroupTask('group', ['a', 'b']); - - $taskCollection = new TaskCollection(); - $taskCollection->add($a); - $taskCollection->add($b); - $taskCollection->add($group); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertFalse($a->isOnce()); - self::assertTrue($b->isOnce()); - - $group->once(); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertTrue($a->isOnce()); - self::assertTrue($b->isOnce()); - } - - public function testSelectsCombine() - { - $a = new Task('a'); - $b = new Task('b'); - $b->select('stage=beta'); - $group = new GroupTask('group', ['a', 'b']); - - $taskCollection = new TaskCollection(); - $taskCollection->add($a); - $taskCollection->add($b); - $taskCollection->add($group); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertNull($a->getSelector()); - self::assertEquals([[['=', 'stage', 'beta']]], $b->getSelector()); - - $group->select('role=prod'); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertEquals([[['=', 'role', 'prod']]], $a->getSelector()); - self::assertEquals([[['=', 'stage', 'beta']],[['=', 'role', 'prod']]], $b->getSelector()); - } - - public function testThrowsExceptionIfTaskCollectionEmpty() - { - self::expectException(\InvalidArgumentException::class); - - $scriptManager = new ScriptManager(new TaskCollection()); - $scriptManager->getTasks(''); - } - - public function testThrowsExceptionIfTaskDontExists() - { - self::expectException(\InvalidArgumentException::class); - - $taskCollection = new TaskCollection(); - $taskCollection->set('testTask', new Task('testTask')); - - $scriptManager = new ScriptManager($taskCollection); - $scriptManager->getTasks('testTask2'); - } -} diff --git a/tests/src/Task/TaskTest.php b/tests/src/Task/TaskTest.php deleted file mode 100644 index 16c44f4b6..000000000 --- a/tests/src/Task/TaskTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use Deployer\Host\Host; -use PHPUnit\Framework\TestCase; -use function Deployer\invoke; -use function Deployer\task; - -class TaskTest extends TestCase -{ - protected function tearDown(): void - { - StubTask::$runned = 0; - } - - public function testTask() - { - $mock = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock - ->expects(self::exactly(1)) - ->method('callback'); - - $task = new Task('task_name', function () use ($mock) { - $mock->callback(); - }); - - $context = self::getMockBuilder(Context::class) - ->disableOriginalConstructor() - ->getMock(); - $task->run($context); - - self::assertEquals('task_name', $task->getName()); - - $task->desc('Task description.'); - self::assertEquals('Task description.', $task->getDescription()); - - $task->hidden(); - self::assertTrue($task->isHidden()); - - $task->once(); - self::assertTrue($task->isOnce()); - - $task->oncePerNode(); - self::assertTrue($task->isOncePerNode()); - } - - public function testInit() - { - $context = self::getMockBuilder(Context::class)->disableOriginalConstructor()->getMock(); - - // Test create task with [$object, 'method'] - $mock1 = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock1 - ->expects(self::once()) - ->method('callback'); - $task1 = new Task('task1', [$mock1, 'callback']); - $task1->run($context); - - // Test create task with anonymous functions - $mock2 = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock2 - ->expects(self::once()) - ->method('callback'); - $task2 = new Task('task2', function () use ($mock2) { - $mock2->callback(); - }); - $task2->run($context); - - self::assertEquals(0, StubTask::$runned); - $task3 = new Task('task3', new StubTask()); - $task3->run($context); - self::assertEquals(1, StubTask::$runned); - } - - public function testGroupInvoke(): void - { - $spy = new StubTask(); - - task('foo', $spy); - task('bar', $spy); - task('group', ['foo', 'bar']); - - (new Task('group:invoke', function () { - invoke('group'); - }))->run(new Context(new Host('localhost'))); - - $this->assertSame(2, StubTask::$runned); - } -} - -/** - * Stub class for task callable by __invoke() - */ -class StubTask -{ - public static $runned = 0; - - public function __invoke() - { - self::$runned++; - } -}