Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cloud
Manage
Activity
Members
Labels
Plan
Wiki
Custom issue tracker
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
project
cloud
Commits
e2bf559c
Commit
e2bf559c
authored
3 years ago
by
Yas Naoi
Browse files
Options
Downloads
Patches
Plain Diff
Issue
#3264010
by yas: Refactor .tugboat/config.yml for live previews on cloud module at d.o
parent
63188582
No related branches found
No related tags found
4 merge requests
!1316
Issue #3310263: Release 4.5.0
,
!1260
Issue #3307397: Release 4.4.0
,
!804
Issue #3272190: Release 4.1.0
,
!668
Issue #3264010: Refactor .tugboat/config.yml for live previews on cloud module at d.o.
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
.tugboat/config.yml
+72
-38
72 additions, 38 deletions
.tugboat/config.yml
src/Plugin/cloud/config/CloudConfigPluginManager.php
+2
-1
2 additions, 1 deletion
src/Plugin/cloud/config/CloudConfigPluginManager.php
with
74 additions
and
39 deletions
.tugboat/config.yml
+
72
−
38
View file @
e2bf559c
...
...
@@ -4,46 +4,63 @@ services:
default
:
true
http
:
false
# depends: mysql
depends
:
memcached
commands
:
update
:
|
set -eux
# Avoid an error: "Allowed memory size of 134217728 bytes exhausted"
export PHP_INI='/usr/local/etc/php/conf.d/my-php.ini'
echo 'memory_limit = -1' >> "${PHP_INI}"
# Set up the max execution time.
echo 'max_execution_time = 600' >> "${PHP_INI}"
# Check out a branch using the unique Tugboat ID for this repository, to
# ensure we don't clobber an existing branch.
git checkout -b
$
TUGBOAT_REPO_ID
git checkout -b
"${
TUGBOAT_REPO_ID
}"
# Composer is hungry. You need a Tugboat project with a pretty sizeable
# chunk of memory.
export COMPOSER_MEMORY_LIMIT=-1
# This is an environment variable we added in the Dockerfile that
# provides the path to Drupal composer root (not the web root).
cd
$
DRUPAL_COMPOSER_ROOT
cd
"${
DRUPAL_COMPOSER_ROOT
}"
# We configure the Drupal project to use the checkout of the module as a
# Composer package repository.
composer config repositories.tugboat vcs
$
TUGBOAT_ROOT
#
Require
Admin Toolbar
composer config repositories.tugboat vcs
"${
TUGBOAT_ROOT
}"
#
Install
Admin Toolbar
.
composer require drupal/admin_toolbar
# Install Memcached.
composer require drupal/memcache
# Allow "minimum-stability": "dev" and "prefer-stable": true
composer config minimum-stability dev
composer config prefer-stable true
# Now we can require drupal/cloud, specifing the branch name we created
# above that uses the
$
TUGBOAT_REPO_ID environment variable.
composer require drupal/cloud:dev-$TUGBOAT_REPO_ID
# Set
the $PATH for vendor/bin/drush
export PATH=$PATH:./vendor/bin
# above that uses the
"${
TUGBOAT_REPO_ID
}"
environment variable.
composer require
"
drupal/cloud:dev-$
{
TUGBOAT_REPO_ID
}"
# Set
up a drush command.
ln -s "$(pwd)/vendor/bin/drush" /usr/local/bin/
# Install Drupal on the site.
# Use --db-url=mysql://tugboat:tugboat@mysql:3306/tugboat for mysql connection.
drush \
--yes \
drush -y \
--db-url=sqlite://sites/default/files/db.sqlite \
--site-name="Live preview for ${TUGBOAT_PREVIEW_NAME}" \
--account-pass=admin \
site:install standard
# Set up the files directory permissions.
mkdir -p $DRUPAL_DOCROOT/sites/default/files
chgrp -R www-data $DRUPAL_DOCROOT/sites/default/files
chmod 2775 $DRUPAL_DOCROOT/sites/default/files
chmod -R g+w $DRUPAL_DOCROOT/sites/default/files
# Avoid an error: "Allowed memory size of 134217728 bytes exhausted"
echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/my-php.ini
--site-name="Cloud Orchestrator live preview for '${TUGBOAT_PREVIEW_NAME}'" \
--account-pass='admin' \
si standard
# Set up a files directory.
export FILES_DIR='sites/default/files'
mkdir -p "${DRUPAL_DOCROOT}/${FILES_DIR}"
chgrp -R www-data "${DRUPAL_DOCROOT}/${FILES_DIR}"
chmod 2775 "${DRUPAL_DOCROOT}/${FILES_DIR}"
chmod -R g+w "${DRUPAL_DOCROOT}/${FILES_DIR}"
# Set a private directory.
export PRIVATE_DIR="${FILES_DIR}/private"
mkdir -p "${PRIVATE_DIR}"
chgrp -R www-data "${PRIVATE_DIR}"
chmod 2775 "${PRIVATE_DIR}"
chmod -R g+w "${PRIVATE_DIR}"
# Set up $settings['file_private_path'] in settings.php
export SETTINGS_FILE="${DRUPAL_DOCROOT}/sites/default/settings.php"
echo "\$settings['file_private_path'] = '${PRIVATE_DIR}';" >> "${SETTINGS_FILE}"
# Set up $settings['trusted_host_patterns'] in settings.php
echo "\$settings['trusted_host_patterns'] = ['^.+\.tugboat\.qa$'];" >> "${SETTINGS_FILE}"
# Enable the Cloud family modules.
drush -y en cloud cloud_dashboard
drush -y en aws_cloud gapps
...
...
@@ -57,32 +74,49 @@ services:
drush -y en geocoder
drush -y en simple_oauth
# Enable the themes.
drush -y theme:enable bootstrap_cloud
drush -y theme:enable claro
drush -y config:set system.theme default bootstrap_cloud
drush -y config:set system.theme admin claro
drush -y then bootstrap_cloud
drush -y then claro
drush -y cset system.theme default bootstrap_cloud
drush -y cset system.theme admin claro
# Install Memcached libraries.
apt-get install -y libmemcached-dev
git clone https://github.com/php-memcached-dev/php-memcached /usr/src/php/ext/memcached
cd /usr/src/php/ext/memcached
docker-php-ext-configure memcached
docker-php-ext-install memcached
# Install APCU libraries.
git clone https://github.com/krakjoe/apcu /usr/src/php/ext/apcu
cd /usr/src/php/ext/apcu
docker-php-ext-configure apcu
docker-php-ext-install apcu
# Install OpCache
docker-php-ext-install -j "$(nproc)" opcache
# Setup Memcache module
drush en -y memcache memcache_admin
tee -a "${SETTINGS_FILE}" > /dev/null <<EOF
\$settings['memcache']['servers'] = ['memcached:11211' => 'default'];
\$settings['memcache']['bins'] = ['default' => 'default'];
\$settings['memcache']['key_prefix'] = '';
\$settings['cache']['default'] = 'cache.backend.memcache';
EOF
# Setup crontab.
{ echo '*/5 * * * * www-data cd /var/www/cloud_orchestrator && /usr/local/bin/drush cron > /dev/null 2>&1'; } >> /etc/crontab
{ echo '*/5 * * * * www-data cd /var/www/html/web && for MODULE in '\''aws_cloud'\'' '\''k8s'\'' '\''openstack'\'' '\''vmware'\'' '\''terraform'\''; do export QUEUE=$(drush queue-list | grep "$''{MODULE}" | awk '\''{print $1}'\''); if [ "$''{QUEUE}" ]; then drush queue-run "$''{QUEUE}" --time-limit=120 > /dev/null 2>&1; fi done'; } >> /etc/crontab
build
:
|
set -eux
# Delete and re-check out this branch in case this is built from a Base Preview.
git branch -D
$
TUGBOAT_REPO_ID && git checkout -b
$
TUGBOAT_REPO_ID || true
git
checkout 5.x && git
branch -D
"${
TUGBOAT_REPO_ID
}"
&& git checkout -b
"${
TUGBOAT_REPO_ID
}"
|| true
export COMPOSER_MEMORY_LIMIT=-1
cd
$
DRUPAL_COMPOSER_ROOT
cd
"${
DRUPAL_COMPOSER_ROOT
}"
composer install --optimize-autoloader
# Update installed modules.
composer update aws/aws-sdk-php
composer update drupal/admin_toolbar
composer update drupal/bootstrap_cloud
composer update drupal/cloud
composer update drupal/entity_export_csv
composer update drupal/geocoder
composer update drupal/simple_oauth
composer update google/apiclient
composer update geocoder-php/nominatim-provider
composer update maclof/kubernetes-client
# Set the $PATH for vendor/bin/drush
export PATH=$PATH:./vendor/bin
composer update "drupal/cloud:dev-${TUGBOAT_REPO_ID}" --with-all-dependencies
composer update drupal/memcache
# Update databases and clear cache.
drush -y updb
drush c
ache:rebuild
drush c
r
# mysql:
# image: tugboatqa/mariadb
memcached
:
image
:
tugboatqa/memcached
This diff is collapsed.
Click to expand it.
src/Plugin/cloud/config/CloudConfigPluginManager.php
+
2
−
1
View file @
e2bf559c
...
...
@@ -128,7 +128,8 @@ class CloudConfigPluginManager extends CloudPluginManager implements CloudConfig
// Load the plugin variant since we know the cloud_context.
$this
->
plugin
=
$this
->
loadPluginVariant
();
if
(
empty
(
$this
->
plugin
))
{
// DO NOT translate the message. See also: https://www.drupal.org/docs/develop/coding-standards/php-exceptions.
// DO NOT translate the message.
// @see https://www.drupal.org/docs/develop/coding-standards/php-exceptions
throw
new
CloudConfigPluginException
(
"Cannot load cloud service provider plugin for '
{
$this
->
cloudContext
}
'"
);
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment