Skip to content

B2C-CI

B2C-CI #1998

Workflow file for this run

name: B2C-CI
on:
pull_request:
push:
branches:
- master
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
validation:
name: "Static analysis / PHP 8.1"
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
php-version: [
'8.1',
'8.2'
]
env:
APPLICATION_ENV: ci.mysql
APPLICATION_STORE: DE
PROJECT: suite
services:
redis:
image: redis
ports:
- 6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v3
- name: Configure sysctl limits
run: |
sudo swapoff -a
sudo sysctl -w vm.swappiness=1
sudo sysctl -w fs.file-max=262144
sudo sysctl -w vm.max_map_count=262144
- name: Runs Elasticsearch
uses: elastic/elastic-github-actions/elasticsearch@master
with:
stack-version: 7.10.0
port: 9200
- uses: actions/setup-node@v3
with:
node-version: '18'
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
extensions: mbstring, intl, pdo_mysql, redis
tools: composer:v2
- name: Composer get cache directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Composer cache
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Composer validate
run: composer validate
- name: Composer version
run: composer --version
- name: Composer install
run: composer install
- name: Generate transfer objects
run: vendor/bin/console transfer:generate
- name: Generate transfer databuilder objects
run: vendor/bin/console transfer:databuilder:generate
- name: Propel install
run: |
vendor/bin/console propel:schema:copy
vendor/bin/console propel:model:build
vendor/bin/console transfer:entity:generate
- name: Setup search
run: vendor/bin/console setup:search
- name: Codecept build
run: vendor/bin/codecept build --ansi
- name: Generate autocompletion files
run: vendor/bin/console dev:ide-auto-completion:generate
- name: Generate rest API dcoumentation
run: vendor/bin/console rest-api:generate:documentation
- name: Frontend install-dependencies
run: |
vendor/bin/console frontend:project:install-dependencies -vvv
- name: Install NPM packages
run: |
sudo npm i --location=global --unsafe-perm speccy@0.11.0
- name: Speccy lint Glue specification
run: speccy lint src/Generated/Glue/Specification/spryker_rest_api.schema.yml --rules=default
- name: Style lint
run: npm run yves:stylelint
- name: ES lint
run: npm run yves:lint
- name: Front-end Formatter
run: npm run formatter
- name: Validate propel files
run: |
vendor/bin/console propel:schema:validate
vendor/bin/console propel:schema:validate-xml-names
- name: Validate transfer files
run: vendor/bin/console transfer:validate
- name: Run CodeStyle checks
run: vendor/bin/console code:sniff:style
- name: Run Architecture rules
run: vendor/bin/phpmd src/ text vendor/spryker/architecture-sniffer/src/ruleset.xml --minimumpriority 2
- name: Run PHPStan
run: vendor/bin/phpstan analyze -l 6 -c phpstan.neon src/
- name: Run Evaluator for main branch
run: vendor/bin/evaluator evaluate --format=compact
if: github.ref == 'refs/heads/master'
- name: Run Evaluator for feature branches
run: vendor/bin/evaluator evaluate --exclude-checkers=SPRYKER_DEV_PACKAGES_CHECKER --format=compact
if: github.ref != 'refs/heads/master'
php-82-mariadb-glue-alpine:
name: "PHP 8.2 / MariaDB / Glue / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot deploy.ci.api.mariadb.yml -v
docker/sdk up -t -v
docker/sdk testing codecept fixtures
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.api.yml
php-82-postgresql-glue-alpine:
name: "PHP 8.2 / PostgreSQL / Glue / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot deploy.ci.api.yml -v
docker/sdk up -t -v
docker/sdk testing codecept fixtures
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.api.yml
php-82-mariadb-acceptance-alpine:
name: "PHP 8.2 / MariaDB / Acceptance / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.mariadb.yml
docker/sdk up -t
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.acceptance.yml
php-82-postgresql-acceptance-alpine:
name: "PHP 8.2 / PostgreSQL / Acceptance / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.yml
docker/sdk up -t
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.acceptance.yml
php-82-mariadb-functional-alpine:
name: "PHP 8.2 / MariaDB / Functional / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot deploy.ci.functional.mariadb.yml -v
docker/sdk up -t -v
docker/sdk testing codecept run -c codeception.functional.yml
php-82-postgresql-functional-alpine:
name: "PHP 8.2 / PostgreSQL / Functional / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.functional.yml
docker/sdk up -t
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.functional.yml
php-81-mariadb-glue-alpine:
name: "PHP 8.1 / MariaDB / Glue / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot deploy.ci.api.mariadb.yml -v
docker/sdk up -t -v
docker/sdk testing codecept fixtures
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.api.yml
php-81-postgresql-acceptance-alpine:
name: "PHP 8.1 / PostgreSQL / Acceptance / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.yml
docker/sdk up -t
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.acceptance.yml
php-81-postgresql-functional-alpine:
name: "PHP 8.1 / PostgreSQL / Functional / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.yml
docker/sdk up -t
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.functional.yml
php-81-mariadb-acceptance-alpine:
name: "PHP 8.1 / MariaDB / Acceptance / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.mariadb.yml
docker/sdk up -t
docker/sdk testing console queue:worker:start --stop-when-empty
docker/sdk testing codecept run -c codeception.acceptance.yml
php-81-mariadb-functional-alpine:
name: "PHP 8.1 / MariaDB / Functional / Alpine"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot deploy.ci.functional.mariadb.yml -v
docker/sdk up -t -v
docker/sdk testing codecept run -c codeception.functional.yml
php-81-postgres-functional-debian:
name: "PHP 8.1 / PostgreSQL / Functional / Debian"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1-debian
TRAVIS: 1
steps:
- uses: actions/checkout@v3
- name: Install apt-packages
run: |
sudo apt-get install apache2-utils
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Run docker
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot deploy.ci.functional.yml -v
docker/sdk up -t -v
docker/sdk testing codecept run -c codeception.functional.yml
frontend-assets-via-docker-php-8-1:
name: "Docker / Alpine / PHP 8.1 / Frontend & Assets"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
steps:
- uses: actions/checkout@v3
- run: echo eyAiZXhwZXJpbWVudGFsIiA6IHRydWUsICJmZWF0dXJlcyIgOiB7ICJidWlsZGtpdCI6IHRydWUgfSB9Cg==|base64 -d|sudo tee /etc/docker/daemon.json
- run: sudo apt-get install --only-upgrade docker -y
- run: sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- run: sudo chmod +x /usr/local/bin/docker-compose
- run: git clone https://github.com/spryker/docker-sdk.git --single-branch --branch master ./docker
- run: docker/sdk boot deploy.yml
- run: SPRYKER_BUILD_HASH=myhash docker/sdk export images
- run: docker run -t --rm -e SPRYKER_NGINX_CGI_HOST_YVES_EU=localhost -e SPRYKER_NGINX_CGI_HOST_ZED_EU=localhost -e SPRYKER_NGINX_CGI_HOST_GLUE_EU=localhost -e SPRYKER_NGINX_CGI_HOST_YVES_US=localhost -e SPRYKER_NGINX_CGI_HOST_GLUE_US=localhost -e SPRYKER_NGINX_CGI_HOST_ZED_US=localhost -e ALLOWED_IP=127.0.0.1 spryker_b2c_frontend:1.0-frontend nginx -t
- run: docker run -t --rm --entrypoint='' spryker_b2c_frontend:1.0-frontend ls -al /data/public/Yves/assets/myhash
- run: docker run -t --rm --entrypoint='' spryker_b2c_frontend:1.0-frontend ls -al /data/public/Zed/assets/
docker-alpine-php-8-1-mariadb-robot:
name: "Docker / Alpine / PHP 8.1 / MariaDB / Robot"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.1
TRAVIS: 1
ROBOT_TESTS_ARTIFACTS_BUCKET_REGION: eu-west-1
steps:
- uses: actions/checkout@v3
- name: Install packages
run: |
sudo apt-get update
sudo apt-get install apache2-utils
sudo apt install awscli -q
- name: Composer install
run: composer install
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Install Project
continue-on-error: true
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.mariadb.yml
sudo bash -c "echo '127.0.0.1 backend-api.at.spryker.local backend-api.de.spryker.local glue-backend.de.spryker.local glue-backend.at.spryker.local glue-storefront.de.spryker.local glue-storefront.at.spryker.local backend-gateway.at.spryker.local backend-gateway.de.spryker.local backoffice.at.spryker.local backoffice.de.spryker.local date-time-configurator-example.spryker.local glue.at.spryker.local glue.de.spryker.local yves.at.spryker.local yves.de.spryker.local' >> /etc/hosts"
docker/sdk up -t -v
docker/sdk cli composer dump-autoload -o -a
docker/sdk testing console queue:worker:start --stop-when-empty
APPLICATION_STORE=AT docker/sdk console queue:worker:start --stop-when-empty
- name: Run Tests
run: |
docker/sdk exec robot-framework robot -v env:api_b2c -v docker:True --exclude skip-due-to-issueORskip-due-to-refactoring -d results -s tests.api.b2c .
- name: Upload artifacts
if: always()
run: |
AWS_DEFAULT_REGION=${{env.ROBOT_TESTS_ARTIFACTS_BUCKET_REGION}} AWS_ACCESS_KEY_ID=${{ secrets.ROBOT_TESTS_ARTIFACTS_KEY }} AWS_SECRET_ACCESS_KEY=${{ secrets.ROBOT_TESTS_ARTIFACTS_SECRET }} aws s3 cp .robot/results s3://${{vars.ROBOT_TESTS_ARTIFACTS_BUCKET}}/b2c-robot-api-ci/${GITHUB_RUN_ID}/PHP8.1MariaDBRobot/ \
--recursive \
--expires "$(date -d '+7 days' --utc +'%Y-%m-%dT%H:%M:%SZ')"
docker-alpine-php-8-2-postgresql-robot:
name: "Docker / Alpine / PHP 8.2 / PostgreSQL / Robot"
runs-on: ubuntu-22.04
env:
PROGRESS_TYPE: plain
SPRYKER_PLATFORM_IMAGE: spryker/php:8.2
TRAVIS: 1
ROBOT_TESTS_ARTIFACTS_BUCKET_REGION: eu-west-1
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install packages
run: |
sudo apt-get update
sudo apt-get install apache2-utils
sudo apt install awscli -q
- name: Composer install
run: composer install
- name: Install docker-compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Install Project
continue-on-error: true
run: |
git clone https://github.com/spryker/docker-sdk.git ./docker
docker/sdk boot -v deploy.ci.acceptance.yml
sudo bash -c "echo '127.0.0.1 backend-api.at.spryker.local backend-api.de.spryker.local glue-backend.de.spryker.local glue-backend.at.spryker.local glue-storefront.de.spryker.local glue-storefront.at.spryker.local backend-gateway.at.spryker.local backend-gateway.de.spryker.local backoffice.at.spryker.local backoffice.de.spryker.local date-time-configurator-example.spryker.local glue.at.spryker.local glue.de.spryker.local yves.at.spryker.local yves.de.spryker.local' >> /etc/hosts"
docker/sdk up -t -v
docker/sdk cli composer dump-autoload -o -a
docker/sdk testing console queue:worker:start --stop-when-empty
APPLICATION_STORE=AT docker/sdk console queue:worker:start --stop-when-empty
- name: Run Tests
run: |
docker/sdk exec robot-framework robot -v env:api_b2c -v db_engine:psycopg2 -v docker:True --exclude skip-due-to-issueORskip-due-to-refactoring -d results -s tests.api.b2c .
- name: Upload artifacts
if: always()
run: |
AWS_DEFAULT_REGION=${{env.ROBOT_TESTS_ARTIFACTS_BUCKET_REGION}} AWS_ACCESS_KEY_ID=${{ secrets.ROBOT_TESTS_ARTIFACTS_KEY }} AWS_SECRET_ACCESS_KEY=${{ secrets.ROBOT_TESTS_ARTIFACTS_SECRET }} aws s3 cp .robot/results s3://${{vars.ROBOT_TESTS_ARTIFACTS_BUCKET}}/b2c-robot-api-ci/${GITHUB_RUN_ID}/PHP8.2PostgreSQLRobot/ \
--recursive \
--expires "$(date -d '+7 days' --utc +'%Y-%m-%dT%H:%M:%SZ')"