From 27519f6c67c67cbeafd743666d86b6fec503873a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Jan 2023 17:54:25 +0000 Subject: [PATCH] Deployer 7.1.3-beta.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 -> 780544 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 | 96 - docs/cli.md | 147 - docs/contrib/README.md | 33 - docs/contrib/bugsnag.md | 41 - docs/contrib/cachetool.md | 134 - 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 | 164 - 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 | 444 -- 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 | 257 - 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 | 177 - 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(+), 20284 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..ed1f098e62ff3dad366c7757feaf75a15fb590f2 GIT binary patch literal 780544 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

Im`IuP)&;&8C4$!?}&1RO4}G` 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θ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≫c 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 z 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 z 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¨%9(Vt+aB91k%7!SJ$hK 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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 389d68358..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. -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 bc36c3493..000000000 --- a/docs/ci-cd.md +++ /dev/null @@ -1,96 +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.0" - - - 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 db3863f14..000000000 --- a/docs/contrib/cachetool.md +++ /dev/null @@ -1,134 +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#L49) - - - -```php title="Default value" -'https://github.com/gordalina/cachetool/releases/download/7.0.0/cachetool.phar' -``` - - -### cachetool_args -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L50) - - - - - -### bin/cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L51) - - - -```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#L57) - - -:::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#L74) - -Clears OPcode cache. - -Clear opcache cache - - -### cachetool:clear:apcu -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L82) - -Clears APCu system cache. - -Clear APCU cache - - -### cachetool:clear:stat -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L90) - -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 b8976b7e9..000000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,164 +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 -``` - -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 ff8511847..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 `.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 b3b901090..000000000 --- a/docs/recipe/magento2.md +++ /dev/null @@ -1,444 +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(); -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L43) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'app/etc/env.php', - 'var/.maintenance.ip', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L47) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'var/composer_home', - 'var/log', - 'var/export', - 'var/report', - 'var/import', - 'var/import_history', - 'var/session', - 'var/importexport', - 'var/backups', - 'var/tmp', - 'pub/sitemap', - 'pub/media', - 'pub/static/_cache' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L62) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'var', - 'pub/static', - 'pub/media', - 'generated', - 'var/page_cache' -] -``` - - -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L69) - -Overrides [clear_paths](/docs/recipe/deploy/clear_paths.md#clear_paths) from `recipe/deploy/clear_paths.php`. - - - -```php title="Default value" -[ - 'generated/*', - 'pub/static/_cache/*', - 'var/generation/*', - 'var/cache/*', - 'var/page_cache/*', - 'var/view_preprocessed/*' -] -``` - - -### magento_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L78) - - - -```php title="Default value" -// detect version -$versionOutput = run('{{bin/php}} {{release_or_current_path}}/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#L85) - - - -```php title="Default value" -// detect maintenance mode active -$maintenanceModeStatusOutput = run("{{bin/php}} {{release_or_current_path}}/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#L92) - -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#L229) - -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#L230) - - - -```php title="Default value" -'artifacts' -``` - - -### artifact_excludes_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L231) - - - -```php title="Default value" -'artifacts/excludes' -``` - - -### artifact_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L233) - - - -```php title="Default value" -if (!test('[ -d {{artifact_dir}} ]')) { -run('mkdir {{artifact_dir}}'); -} -return get('artifact_dir') . '/' . get('artifact_file'); -``` - - -### bin/tar -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L240) - - -:::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#L301) - -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#L303) - -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#L96) - -Compiles magento di. - -Tasks - - -### magento:deploy:assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L103) - -Deploys assets. - - - - -### magento:sync:content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L116) - -Syncs content version. - - - - -### magento:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L126) - -Enables maintenance mode. - - - - -### magento:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L131) - -Disables maintenance mode. - - - - -### magento:config:import -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L136) - -Config Import. - - - - -### magento:upgrade:db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L171) - -Upgrades magento database. - - - - -### magento:cache:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L198) - -Flushes Magento Cache. - - - - -### deploy:magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L203) - -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#L211) - -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#L217) - -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#L250) - -Packages all relevant files in an artifact. - -tasks section - - -### artifact:upload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L260) - -Uploads artifact in release folder for extraction. - - - - -### artifact:extract -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L265) - -Extracts artifact in release path. - - - - -### build:remove-generated -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L271) - -Clears generated files prior to building. - - - - -### build:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L276) - -Prepare local artifact build. - - - - -### deploy:additional-shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L307) - -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 a71fd443b..000000000 --- a/docs/recipe/shopware.md +++ /dev/null @@ -1,257 +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 -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L23) - -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#L26) - -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#L34) - -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#L45) - -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#L61) - - - -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#L67) - - - -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#L73) - - - -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#L77) - - - - - - -### sw:plugin:update:all -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L113) - - - - - - -### sw:writable:jwt -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L123) - - - - - - -### sw:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L130) - - - -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#L139) - -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#L149) - - - - - - -### sw-build-without-db:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L162) - - - - - - -### sw-build-without-db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L166) - - - - - - -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 8b0e5e306..000000000 --- a/docs/selector.md +++ /dev/null @@ -1,177 +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: 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') . ' 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++; - } -}