Skip to content

Instantly share code, notes, and snippets.

@kirillrocks
Created May 19, 2020 07:50
Show Gist options
  • Save kirillrocks/2aeb124ee67b3fcf893209d875e87993 to your computer and use it in GitHub Desktop.
Save kirillrocks/2aeb124ee67b3fcf893209d875e87993 to your computer and use it in GitHub Desktop.
assets:
- .ENV
- .htaccess
image: proboci/ubuntu-16.04-lamp:php-7.2
steps:
- name: Install terminus.
command: 'curl -O https://raw.githubusercontent.com/pantheon-systems/terminus-installer/master/builds/installer.phar && php installer.phar install'
- name: Update wp-cli.
plugin: Script
script: |
wp cli update --allow-root --yes
- name: Log in to terminus.
command: 'source $ASSET_DIR/.ENV ; vendor/bin/terminus auth:login --email=$EMAIL --machine-token=$PANTHEON_TOKEN'
- name: Get the latest backup DB from Pantheon Live.
command: 'vendor/bin/terminus backup:get healthline-mu.live --element=database --to=$ASSET_DIR/export.sql.gz'
- name: Download Wordpress latest release.
plugin: Script
script: |
wget -c https://wordpress.org/wordpress-5.3.2.tar.gz -O - | tar -xz -C /src
- name: Wordpress Site Setup.
plugin: WordPressApp
subDirectory: 'wordpress'
devDomain: 'https://post.healthline.com/'
devHome: 'https://post.healthline.com/'
database: export.sql.gz
databaseGzipped: true
flushCaches: true
- name: Copy files.
plugin: Script
script: |
cp -Rf /src/mu-plugins /src/wordpress/wp-content/
cp -Rf /src/plugins /src/wordpress/wp-content/
cp -Rf /src/themes /src/wordpress/wp-content/
- name: Build theme assets.
plugin: Script
script: |
echo "Installing NVM...\n"
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
echo "Updating Node version...\n"
nvm install 8
nvm use 8
echo "Installing node dependencies...\n"
cd /src/wordpress/wp-content/themes/healthline-parent/
npm install
npm run build
cd /src/wordpress/wp-content/plugins/mercury/
npm install
npm run build
- name: Composer install on Post Core plugin
plugin: Script
script: |
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
cd /src/wordpress/wp-content/plugins/core
composer install
- name: Workaround git submodules.
plugin: Script
script: |
WP_PROBO_PATH="/src/wordpress/wp-content"
rm -Rf $WP_PROBO_PATH/mu-plugins/fm-zones
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/alleyinteractive/fm-zones.git
cd $WP_PROBO_PATH/mu-plugins/fm-zones
git checkout d849314
rm -Rf $WP_PROBO_PATH/mu-plugins/wordpress-fieldmanager
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/alleyinteractive/wordpress-fieldmanager.git
cd $WP_PROBO_PATH/mu-plugins/wordpress-fieldmanager
git checkout 5942c28
rm -Rf /src/wordpress/wp-content/mu-plugins/wp-seo
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/alleyinteractive/wp-seo.git
cd $WP_PROBO_PATH/mu-plugins/wp-seo
git checkout c6f885d
rm -Rf $WP_PROBO_PATH/mu-plugins/co-authors-plus
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/Automattic/co-authors-plus.git
cd $WP_PROBO_PATH/mu-plugins/co-authors-plus
git checkout d240e74
rm -Rf $WP_PROBO_PATH/mu-plugins/edit-flow
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/Automattic/edit-flow.git
cd $WP_PROBO_PATH/mu-plugins/edit-flow
git checkout 3eb2acd
rm -Rf $WP_PROBO_PATH/mu-plugins/wp-redis
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/pantheon-systems/wp-redis.git
cd $WP_PROBO_PATH/mu-plugins/wp-redis
git checkout 96ed05b
rm -Rf $WP_PROBO_PATH/mu-plugins/csv-import-framework
cd $WP_PROBO_PATH/mu-plugins
git clone https://github.com/alleyinteractive/csv-import-framework.git
cd $WP_PROBO_PATH/mu-plugins/csv-import-framework
git checkout 04a9071
rm -Rf $WP_PROBO_PATH/plugins/jsonfeed-wp
cd $WP_PROBO_PATH/plugins
git clone https://github.com/manton/jsonfeed-wp.git
cd $WP_PROBO_PATH/plugins/jsonfeed-wp
git checkout 09e9625
rm -Rf $WP_PROBO_PATH/plugins/meta-inspector
cd $WP_PROBO_PATH/plugins
git clone https://github.com/alleyinteractive/meta-inspector.git
cd $WP_PROBO_PATH/plugins/meta-inspector
git checkout bac257d
rm -Rf $WP_PROBO_PATH/plugins/wp-offload-ses-lite
cd $WP_PROBO_PATH/plugins
git clone https://github.com/deliciousbrains/wp-offload-ses-lite.git
cd $WP_PROBO_PATH/plugins/wp-offload-ses-lite
git checkout 050cf44
- name: Fix wp-config.php for multisite setup.
plugin: Script
script: |
rm /src/wordpress/wp-config.php
cp /src/probo-wp-settings.php /src/wordpress/wp-config.php
- name: Update db values.
plugin: Script
script: |
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_site SET domain = '${BUILD_ID}--site-healthline.probo.build' WHERE wp_site.id = 1;"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_blogs SET domain = '${BUILD_ID}--site-healthline.probo.build' WHERE wp_blogs.blog_id = 1;"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_blogs SET domain = '${BUILD_ID}--site-greatist.probo.build' WHERE wp_blogs.blog_id = 2;"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_blogs SET domain = '${BUILD_ID}--site-medicalnewstoday.probo.build' WHERE wp_blogs.blog_id = 3;"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_options SET option_value = 'https://${BUILD_ID}--site-healthline.probo.build' WHERE option_name = 'siteurl';"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_options SET option_value = 'https://frontend-stage.healthline.com' WHERE option_name = 'home';"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_2_options SET option_value = 'https://${BUILD_ID}--site-greatist.probo.build' WHERE option_name = 'siteurl';"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_2_options SET option_value = 'https://frontend-stage.greatist.com' WHERE option_name = 'home';"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_3_options SET option_value = 'https://${BUILD_ID}--site-medicalnewstoday.probo.build' WHERE option_name = 'siteurl';"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_3_options SET option_value = 'https://frontend-stage.medicalnewstoday.com' WHERE option_name = 'home';"
mysql -uroot -pstrongpassword wordpress -e "UPDATE wp_users SET user_email = CONCAT(user_email, '.localhost') where ID NOT IN (select u.ID from (select * from wp_users ) u INNER JOIN wp_usermeta m ON m.user_id = u.ID WHERE m.meta_key = 'wp_capabilities' AND m.meta_value LIKE '%administrator%');"
- name: Fix multisite CDN issue and set some required options
plugin: Script
script: |
wp --allow-root --path='/src/wordpress' option update probo_bar_enable 1 --url=$BUILD_ID--site-healthline.probo.build
wp --allow-root --path='/src/wordpress' option update probo_bar_enable 1 --url=$BUILD_ID--site-greatist.probo.build
wp --allow-root --path='/src/wordpress' option update probo_bar_enable 1 --url=$BUILD_ID--site-medicalnewstoday.probo.build
wp --allow-root --path='/src/wordpress' option delete recaptcha_site_key recaptcha_secret_key --url=$BUILD_ID--site-healthline.probo.build
wp --allow-root --path='/src/wordpress' option delete recaptcha_site_key recaptcha_secret_key --url=$BUILD_ID--site-greatist.probo.build
wp --allow-root --path='/src/wordpress' option delete recaptcha_site_key recaptcha_secret_key --url=$BUILD_ID--site-medicalnewstoday.probo.build
- name: Import new .ENV variables and post build notification to Slack.
plugin: Script
script: |
source $ASSET_DIR/.ENV
BRANCH_NAME=$(echo $BRANCH_NAME | awk '{print toupper($0)}')
curl -X POST -H 'Content-type: application/json' --data '{"text":"Probo Build: https://app.probo.ci/#/dashboard/build/'$BUILD_ID' \nPull Request: '$PULL_REQUEST_LINK' (branch '$BRANCH_NAME') is being tested now.\nLogin URLs: \nHealthline: https://'$BUILD_ID'--site-healthline.probo.build/wp-login.php \nGreatist: https://'$BUILD_ID'--site-greatist.probo.build/wp-login.php \nMedicalNewsToday: https://'$BUILD_ID'--site-medicalnewstoday.probo.build/wp-login.php."}' $SLACK_WEBHOOK_URL
- name: Import new .ENV variables and comment in Jira.
plugin: Script
script: |
source $ASSET_DIR/.ENV
BRANCH_NAME=$(echo $BRANCH_NAME | awk '{print toupper($0)}')
echo '{"body": "Probo Build: https://app.probo.ci/#/dashboard/build/'$BUILD_ID' for Pull Request: '$PULL_REQUEST_LINK' is being tested now. View the build at https://'$BUILD_ID'--site-healthline.probo.build/wp-login.php, https://'$BUILD_ID'--site-greatist.probo.build/wp-login.php, or https://'$BUILD_ID'--site-medicalnewstoday.probo.build/wp-login.php."}' >> comment.json
curl -D- -u $JIRA_NAME:$JIRA_PASS -X POST --data @comment.json -H "Content-Type: application/json" https://$JIRA_URL/rest/api/2/issue/$BRANCH_NAME/comment
- name: Add .htaccess file.
plugin: Script
script: |
cp $ASSET_DIR/.htaccess /src/wordpress/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment