mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-08 19:46:41 +00:00
398 lines
13 KiB
YAML
398 lines
13 KiB
YAML
name: "Setup Mage-OS in Warden"
|
|
author: "Mage-OS"
|
|
description: "A Github Action that pull and set-up Mage-OS in Warden env."
|
|
|
|
inputs:
|
|
warden_version:
|
|
required: true
|
|
default: "0.14.2"
|
|
description: "The version of Warden to use."
|
|
|
|
php_version:
|
|
required: true
|
|
default: "8.2"
|
|
description: "PHP version used in Warden container."
|
|
|
|
composer_version:
|
|
required: true
|
|
default: "2.2.22"
|
|
description: "The version of Composer to use."
|
|
|
|
database:
|
|
required: true
|
|
default: "mariadb:10.6"
|
|
description: "The distribution : version of the database to use."
|
|
|
|
search:
|
|
required: true
|
|
default: "opensearch:2.5"
|
|
description: "The search engine to use."
|
|
|
|
varnish:
|
|
required: true
|
|
default: "varnish:7.3"
|
|
description: "Varnish version to use."
|
|
|
|
rabbitmq:
|
|
required: true
|
|
default: "rabbitmq:3.11"
|
|
description: "Rabbit MQ version to use."
|
|
|
|
redis:
|
|
required: true
|
|
default: "redis:7.0"
|
|
description: "Redis version to use."
|
|
|
|
run_composer_install:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run composer install or not."
|
|
|
|
run_setup_install:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run setup:install or not."
|
|
|
|
run_setup_upgrade:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run setup:upgrade or not."
|
|
|
|
run_reindex:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run indexer:reindex or not."
|
|
|
|
run_production_deploy_mode:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run deploy:mode:set production or not."
|
|
|
|
run_magento_config_preset:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run magento config preset or not."
|
|
|
|
run_admin_user_creation:
|
|
required: true
|
|
default: "0"
|
|
description: "Whether to run admin user creation or not."
|
|
|
|
base_directory:
|
|
required: true
|
|
default: "./"
|
|
description: "Base directory for the Mage-OS codebase."
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Checkout Warden Repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: wardenenv/warden
|
|
path: warden
|
|
ref: refs/tags/${{ inputs.warden_version }}
|
|
|
|
- name: Init / Configure Warden
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
env:
|
|
PHP_VERSION: ${{ inputs.php_version }}
|
|
COMPOSER_VERSION: ${{ inputs.composer_version }}
|
|
DATABASE: ${{ inputs.database }}
|
|
SEARCH: ${{ inputs.search }}
|
|
VARNISH: ${{ inputs.varnish }}
|
|
RABBITMQ: ${{ inputs.rabbitmq }}
|
|
REDIS: ${{ inputs.redis }}
|
|
run: |
|
|
# Splitting database input to distribution and version
|
|
DB_DISTRIBUTION=${DATABASE%%:*}
|
|
DB_DISTRIBUTION_VERSION=${DATABASE##*:}
|
|
|
|
# Splitting search input and setting corresponding flags and versions
|
|
if [[ $SEARCH == elasticsearch* ]]; then
|
|
WARDEN_ELASTICSEARCH=1
|
|
WARDEN_OPENSEARCH=0
|
|
ELASTICSEARCH_VERSION=${SEARCH##*:}
|
|
OPENSEARCH_VERSION=""
|
|
else
|
|
WARDEN_ELASTICSEARCH=0
|
|
WARDEN_OPENSEARCH=1
|
|
ELASTICSEARCH_VERSION=""
|
|
OPENSEARCH_VERSION=${SEARCH##*:}
|
|
fi
|
|
|
|
# Setting version variables based on the usage flags
|
|
RABBITMQ_VERSION=""
|
|
if [[ $RABBITMQ != null ]]; then
|
|
RABBITMQ_VERSION=${RABBITMQ##*:}
|
|
RABBITMQ=1
|
|
else
|
|
RABBITMQ=0
|
|
fi
|
|
|
|
REDIS_VERSION=""
|
|
if [[ $REDIS != null ]]; then
|
|
REDIS_VERSION=${REDIS##*:}
|
|
REDIS=1
|
|
else
|
|
REDIS=0
|
|
fi
|
|
|
|
VARNISH_VERSION=""
|
|
if [[ $VARNISH != null ]]; then
|
|
VARNISH_VERSION=${VARNISH##*:}
|
|
VARNISH=1
|
|
else
|
|
VARNISH=0
|
|
fi
|
|
|
|
# Creating .env file by substituting variables directly in the template
|
|
cat << EOF > .env
|
|
WARDEN_ENV_NAME=mageos
|
|
WARDEN_ENV_TYPE=magento2
|
|
WARDEN_WEB_ROOT=/
|
|
|
|
TRAEFIK_DOMAIN=mageos.test
|
|
TRAEFIK_SUBDOMAIN=app
|
|
|
|
WARDEN_DB=1
|
|
WARDEN_ELASTICSEARCH=${WARDEN_ELASTICSEARCH}
|
|
WARDEN_OPENSEARCH=${WARDEN_OPENSEARCH}
|
|
WARDEN_ELASTICHQ=0
|
|
WARDEN_VARNISH=${VARNISH}
|
|
WARDEN_RABBITMQ=${RABBITMQ}
|
|
WARDEN_REDIS=${REDIS}
|
|
|
|
ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION}
|
|
OPENSEARCH_VERSION=${OPENSEARCH_VERSION}
|
|
DB_DISTRIBUTION=${DB_DISTRIBUTION}
|
|
DB_DISTRIBUTION_VERSION=${DB_DISTRIBUTION_VERSION}
|
|
NODE_VERSION=12
|
|
COMPOSER_VERSION=${COMPOSER_VERSION}
|
|
PHP_VERSION=${PHP_VERSION}
|
|
PHP_XDEBUG_3=1
|
|
RABBITMQ_VERSION=${RABBITMQ_VERSION}
|
|
REDIS_VERSION=${REDIS_VERSION}
|
|
VARNISH_VERSION=${VARNISH_VERSION}
|
|
|
|
WARDEN_SYNC_IGNORE=
|
|
|
|
WARDEN_ALLURE=0
|
|
WARDEN_SELENIUM=0
|
|
WARDEN_SELENIUM_DEBUG=0
|
|
WARDEN_BLACKFIRE=0
|
|
WARDEN_SPLIT_SALES=0
|
|
WARDEN_SPLIT_CHECKOUT=0
|
|
WARDEN_TEST_DB=1
|
|
WARDEN_MAGEPACK=0
|
|
|
|
BLACKFIRE_CLIENT_ID=
|
|
BLACKFIRE_CLIENT_TOKEN=
|
|
BLACKFIRE_SERVER_ID=
|
|
BLACKFIRE_SERVER_TOKEN=
|
|
EOF
|
|
|
|
echo ".env created"
|
|
cat .env
|
|
|
|
- name: Warden svc up && Warden env up
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} svc up
|
|
${WARDEN} env up
|
|
|
|
- name: Change Directory Permissions
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm sudo chmod -R 777 .
|
|
|
|
- name: Wait for environment to be ready
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
env:
|
|
SEARCH: ${{ inputs.search }}
|
|
run: |
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
case "${SEARCH}" in
|
|
elasticsearch:*)
|
|
SEARCH_HOST="elasticsearch"
|
|
;;
|
|
*)
|
|
SEARCH_HOST="opensearch"
|
|
;;
|
|
esac
|
|
HEALTHY=1
|
|
for ((i=1; i<=24; i++)); do
|
|
SEARCH_STATUS=$(${WARDEN} env exec -T php-fpm bash -c "curl --write-out %{http_code} --silent --output /dev/null http://${SEARCH_HOST}:9200/_cat/health?h=st; exit 0")
|
|
echo "search status: ${SEARCH_STATUS}"
|
|
if [ ${SEARCH_STATUS} -eq "200" ]; then
|
|
HEALTHY=0
|
|
break
|
|
fi
|
|
sleep 5
|
|
done
|
|
echo "HEALTHY: ${HEALTHY}"
|
|
exit ${HEALTHY}
|
|
|
|
- name: composer install run
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
env:
|
|
RUN_INSTALL: ${{ inputs.run_composer_install }}
|
|
run: |
|
|
if [ $RUN_INSTALL == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
wget https://getcomposer.org/download/${{ inputs.composer_version }}/composer.phar -O composer.phar 1>/dev/null 2>&1 && chmod +x composer.phar
|
|
${WARDEN} env exec -T php-fpm php composer.phar -v
|
|
${WARDEN} env exec -T php-fpm php composer.phar install --no-interaction --no-progress
|
|
else
|
|
echo "Skipping composer install"
|
|
fi
|
|
|
|
- name: Install Magento
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
env:
|
|
SEARCH: ${{ inputs.search }}
|
|
REDIS: ${{ inputs.redis }}
|
|
RABBITMQ: ${{ inputs.rabbitmq }}
|
|
VARNISH: ${{ inputs.varnish }}
|
|
RUN_SETUP_INSTALL: ${{ inputs.run_setup_install }}
|
|
run: |
|
|
if [ $RUN_SETUP_INSTALL == "1" ]; then
|
|
SEARCH_ENGINE_VERSION=${SEARCH##*:}
|
|
case "$SEARCH" in
|
|
elasticsearch:*)
|
|
SEARCH_HOST="elasticsearch"
|
|
;;&
|
|
elasticsearch:5*)
|
|
SEARCH_TYPE="elasticsearch5"
|
|
;;
|
|
elasticsearch:6*)
|
|
SEARCH_TYPE="elasticsearch6"
|
|
;;
|
|
elasticsearch:7* | elasticsearch:8*)
|
|
SEARCH_TYPE="elasticsearch7"
|
|
;;
|
|
opensearch:*)
|
|
SEARCH_TYPE="opensearch"
|
|
SEARCH_HOST="opensearch"
|
|
;;
|
|
*)
|
|
# Default values
|
|
SEARCH_TYPE="elasticsearch7"
|
|
SEARCH_HOST="elasticsearch"
|
|
;;
|
|
esac
|
|
|
|
declare -a PARAMETERS
|
|
PARAMETERS+=(--backend-frontname=admin --db-host=db --db-name=magento --db-user=magento --db-password=magento)
|
|
|
|
if [[ -n $REDIS ]]; then
|
|
PARAMETERS+=(--session-save=redis --session-save-redis-host=redis --session-save-redis-port=6379 --session-save-redis-db=2 --cache-backend=redis --cache-backend-redis-server=redis --cache-backend-redis-db=0 --cache-backend-redis-port=6379 --page-cache=redis --page-cache-redis-server=redis --page-cache-redis-db=1 --page-cache-redis-port=6379)
|
|
fi
|
|
|
|
if [[ -n $VARNISH ]]; then
|
|
PARAMETERS+=(--http-cache-hosts=varnish:80)
|
|
fi
|
|
|
|
if [[ -n $RABBITMQ ]]; then
|
|
PARAMETERS+=(--amqp-host=rabbitmq --amqp-port=5672 --amqp-user=guest --amqp-password=guest)
|
|
fi
|
|
|
|
if [[ $SEARCH_TYPE == "opensearch" ]]; then
|
|
PARAMETERS+=(--opensearch-host=$SEARCH_HOST --opensearch-port=9200 --opensearch-index-prefix=magento2 --opensearch-enable-auth=0 --opensearch-timeout=15)
|
|
else
|
|
PARAMETERS+=(--search-engine=$SEARCH_TYPE --elasticsearch-host=$SEARCH_HOST --elasticsearch-port=9200 --elasticsearch-enable-auth=0 --elasticsearch-index-prefix=magento2)
|
|
fi
|
|
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm bin/magento setup:install "${PARAMETERS[@]}"
|
|
|
|
else
|
|
echo "Skipping setup:install"
|
|
fi
|
|
|
|
- name: Create Admin User
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
if [ ${{ inputs.run_admin_user_creation }} == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm php bin/magento admin:user:create \
|
|
--admin-user=admin \
|
|
--admin-password=abcABC123 \
|
|
--admin-email=user-email-dummy@mage-os-awesome.com \
|
|
--admin-firstname=Admin \
|
|
--admin-lastname=User
|
|
else
|
|
echo "Skipping admin user creation"
|
|
fi
|
|
|
|
- name: Set All Magento Configs
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
if [ ${{ inputs.run_magento_config_preset }} == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set --lock-env web/secure/use_in_adminhtml 1
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set --lock-env web/secure/use_in_frontend 1
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set --lock-env web/secure/use_in_frontend 1
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set cms/wysiwyg/enabled disabled
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set admin/security/admin_account_sharing 1
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set admin/security/use_form_key 0
|
|
${WARDEN} env exec -T php-fpm bin/magento config:set web/seo/use_rewrites 1
|
|
else
|
|
echo "Skipping magento config preset"
|
|
fi
|
|
|
|
- name: Run Magento Setup Upgrade
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
if [ ${{ inputs.run_setup_upgrade }} == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm bin/magento setup:upgrade
|
|
${WARDEN} env exec -T php-fpm bin/magento setup:db:status
|
|
else
|
|
echo "Skipping setup:upgrade"
|
|
fi
|
|
|
|
- name: Set to production mode
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
if [ ${{ inputs.run_production_deploy_mode }} == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm bin/magento deploy:mode:set production
|
|
else
|
|
echo "Skipping deploy:mode:set production"
|
|
fi
|
|
|
|
- name: Run Magento Re-indexation
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
if [ ${{ inputs.run_reindex }} == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm bin/magento indexer:reindex
|
|
else
|
|
echo "Skipping indexer:reindex"
|
|
fi
|
|
|
|
- name: Run PHP BIN/MAGENTO
|
|
working-directory: ${{ inputs.base_directory }}
|
|
shell: bash
|
|
run: |
|
|
if [ ${{ inputs.run_setup_install }} == "1" ]; then
|
|
export WARDEN="$(dirname $(pwd))/warden/bin/warden"
|
|
${WARDEN} env exec -T php-fpm php bin/magento
|
|
else
|
|
echo "Skipping php bin/magento test command"
|
|
fi
|