curl -LO https://deployer.org/deployer.phar && sudo mv deployer.phar /usr/local/bin/dep && sudo chmod +x /usr/local/bin/dep
composer require deployer/recipes --dev
composer require rafaelstz/deployer-magento2 dev-master --dev
Last active
September 12, 2024 22:05
-
-
Save rafaelstz/a3a074bb083bdce362f4afbd61a7b985 to your computer and use it in GitHub Desktop.
Automated deploy using Magento 2 + Bitbucket Pipelines + Deployer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
34.199.54.113,34.232.25.90,34.232.119.183,34.236.25.177,35.171.175.212,52.54.90.98,52.202.195.162,52.203.14.55,52.204.96.37,34.218.156.209,34.218.168.212,52.41.219.63,35.155.178.254,35.160.177.10,34.216.18.129,34.199.54.113, 34.232.25.90, 34.232.119.183, 34.236.25.177, 52.204.96.37, 35.171.175.212, 52.54.90.98, 52.202.195.162, 52.203.14.55, 34.218.156.209, 34.218.168.212, 52.41.219.63, 35.155.178.254, 35.160.177.10, 34.216.18.129, 52.8.84.222, 52.52.234.127, 104.192.136.0/21 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
image: rafaelcgstz/magento2 | |
clone: | |
depth: 1 # include just the last commit | |
pipelines: | |
branches: | |
staging: | |
- step: | |
name: Deploy Staging | |
deployment: staging | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
script: | |
- echo "$AUTH" > auth.json | |
- composer install --quiet | |
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > /root/.ssh/id_rsa.tmp | |
- base64 -d /root/.ssh/id_rsa.tmp > /root/.ssh/id_rsa | |
- echo "$SSH_PUBLIC_KEY" | tr -d '\r' > /root/.ssh/id_rsa.pub | |
- cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys | |
- eval "$(ssh-agent -s)" | |
- echo "$KNOWN_HOSTS" >> /root/.ssh/known_hosts | |
- chmod 700 /root/.ssh | |
- chmod 600 /root/.ssh/id_rsa | |
- chmod 644 /root/.ssh/authorized_keys | |
- chmod 644 /root/.ssh/known_hosts | |
- echo -e "Host *\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null" > /root/.ssh/config | |
- curl -LO https://deployer.org/deployer.phar && mv deployer.phar /usr/local/bin/dep && chmod +x /usr/local/bin/dep | |
- echo "set('slack_text', '_Bitbucket Pipelines_ deploying `{{branch}}` to *{{target}}*');" >> deploy.php | |
- dep deploy staging | |
- step: | |
name: PHP Copy/Paste Detector | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
trigger: manual | |
script: | |
- composer install --quiet | |
- php vendor/bin/phpcpd app/ | |
- step: | |
name: PHP CodeSniffer PSR1 | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
trigger: manual | |
script: | |
- composer install --quiet | |
- php vendor/bin/phpcs --standard=PSR1 app/code app/design | |
- step: | |
name: PHP Mess Detector | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
trigger: manual | |
script: | |
- composer install --quiet | |
- php vendor/bin/phpmd app/code,app/design text cleancode,codesize,controversial,design,naming,unusedcode | |
- step: | |
name: ECG Magento Code Sniffer PSR2 | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
trigger: manual | |
script: | |
- composer install --quiet | |
- composer require magento-ecg/coding-standard | |
- php vendor/bin/phpcs --standard=PSR2 app/code app/design | |
- php vendor/bin/phpcs --standard=vendor/magento-ecg/coding-standard/EcgM2/ruleset.xml --extensions=php,phtml app/code app/design | |
master: | |
- step: | |
name: Deploy Production | |
deployment: production | |
size: 2x # Double resources available for this step | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
script: | |
- echo "$AUTH" > auth.json | |
- composer install --quiet | |
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > /root/.ssh/id_rsa.tmp | |
- base64 -d /root/.ssh/id_rsa.tmp > /root/.ssh/id_rsa | |
- echo "$SSH_PUBLIC_KEY" | tr -d '\r' > /root/.ssh/id_rsa.pub | |
- cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys | |
- eval "$(ssh-agent -s)" | |
- echo "$KNOWN_HOSTS" >> /root/.ssh/known_hosts | |
- chmod 700 /root/.ssh | |
- chmod 600 /root/.ssh/id_rsa | |
- chmod 644 /root/.ssh/authorized_keys | |
- chmod 644 /root/.ssh/known_hosts | |
- echo -e "Host *\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null" > /root/.ssh/config | |
- curl -LO https://deployer.org/deployer.phar && mv deployer.phar /usr/local/bin/dep && chmod +x /usr/local/bin/dep | |
- echo "set('slack_text', '_Bitbucket Pipelines_ deploying `{{branch}}` to *{{target}}*');" >> deploy.php | |
- dep deploy production | |
- step: | |
name: Install Magento 2 Local | |
trigger: manual | |
caches: | |
- composer | |
artifacts: | |
- vendor/** | |
script: | |
- echo "$AUTH" > auth.json | |
- composer install --no-dev --quiet | |
- chmod u+w -R ./var ./vendor ./pub/static ./pub/media ./app/etc | |
- chmod u+x ./bin/magento | |
- php -f ./bin/magento setup:install --base-url=http://localhost/ --use-secure=0 --db-host=127.0.0.1 --db-name=magento2 --db-user=root --db-password=root --admin-firstname=Magento --admin-lastname=Commerce [email protected] --admin-user=admin --admin-password=admin123 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1 --backend-frontname=admin | |
- php -f ./bin/magento setup:upgrade | |
- php -f ./bin/magento deploy:mode:set production --skip-compilation | |
- php -f ./bin/magento setup:di:compile | |
- php -f ./bin/magento setup:static-content:deploy -j 10 | |
- composer dump-autoload --no-dev --no-interaction --optimize | |
services: | |
- mysql | |
definitions: | |
services: | |
mysql: | |
image: mysql:5.6 | |
environment: | |
MYSQL_ROOT_PASSWORD: 'root' | |
MYSQL_DATABASE: 'magento2' | |
MYSQL_USER: 'magento' | |
MYSQL_PASSWORD: 'magento' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Deployer; | |
require __DIR__ . '/vendor/rafaelstz/deployer-magento2/deploy.php'; | |
// Project | |
set('application', 'My Project Name'); | |
set('repository', '[email protected]:lesite/my-project.git'); | |
set('default_stage', 'staging'); | |
// Env Configurations | |
set('php', '/usr/bin/php70'); | |
set('magerun', '/usr/bin/n98-magerun2'); | |
set('composer', '/usr/bin/composer'); | |
// Project Configurations | |
host('my-store.com') | |
->hostname('iuse.magemojo.com') | |
->user('my-user') | |
->port(22) | |
->set('deploy_path', '/home/my-project-folder') | |
->set('branch', 'master') | |
->set('is_production', 0) | |
->stage('production') | |
//->configFile('~/.ssh/config') | |
->identityFile('~/.ssh/id_rsa') | |
->addSshOption('UserKnownHostsFile', '/dev/null') | |
->addSshOption('StrictHostKeyChecking', 'no'); | |
// Slack | |
set('slack_webhook', 'https://hooks.slack.com/services/YOUR/REGISTER/HERE'); | |
before('deploy', 'slack:notify'); | |
after('success', 'slack:notify:success'); | |
after('deploy:failed', 'slack:notify:failure'); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The SSH keys are generated by Bitbucket. You can generate those in the settings of your project. The values are passed to your bitbucket pipelines as environment variables. Also see https://support.atlassian.com/bitbucket-cloud/docs/using-ssh-keys-in-bitbucket-pipelines/