Skip to content
Snippets Groups Projects

Feature/new ci

Merged Sebastian Pisula requested to merge feature/new-ci into main
1 file
+ 88
105
Compare changes
  • Side-by-side
  • Inline
+ 88
105
@@ -2,59 +2,108 @@ variables:
@@ -2,59 +2,108 @@ variables:
PHP_ERROR_REPORTING: E_ALL
PHP_ERROR_REPORTING: E_ALL
COMPOSER_ALLOW_SUPERUSER: 1
COMPOSER_ALLOW_SUPERUSER: 1
GIT_STRATEGY: fetch
GIT_STRATEGY: fetch
PRODUCTION_SHOPIFY_API_KEY: ""
PRODUCTION_DEPLOY_HOST: s125.cyber-folks.pl
PRODUCTION_DEPLOY_PORT: 222
PRODUCTION_DEPLOY_USER: wlgmnfabmq
PRODUCTION_DEPLOY_DIR: ""
STAGE_SHOPIFY_API_KEY: ""
STAGE_DEPLOY_HOST: s125.cyber-folks.pl
STAGE_DEPLOY_PORT: 222
STAGE_DEPLOY_USER: wlgmnfabmq
STAGE_DEPLOY_DIR: ""
RUN_AFTER_DEPLOY: "pwd"
RUN_AFTER_DEPLOY: "pwd"
DEPLOY_AFTER_SCRIPT: ""
DEPLOY_AFTER_SCRIPT: ""
PREDATORS_GROUP_ID: 788
PREDATORS_GROUP_ID: 788
stages:
stages:
- build
- tests
- tests
 
- build
- deploy
- deploy
- purge_cache
.template: &prepare-assets
.template: &build-rules
tags:
rules:
- vendor
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_NAME == "devel"'
 
when: always
 
variables:
 
APP_ENV: "staging"
 
SHOPIFY_APP_CLIENT_ID: $STAGING_SHOPIFY_APP_CLIENT_ID
 
MANTLE_PIXEL_TOKEN: $STAGING_MANTLE_PIXEL_TOKEN
 
- if: '$CI_COMMIT_TAG'
 
when: always
 
variables:
 
APP_ENV: "production"
 
SHOPIFY_APP_CLIENT_ID: $PRODUCTION_SHOPIFY_APP_CLIENT_ID
 
MANTLE_PIXEL_TOKEN: $PRODUCTION_MANTLE_PIXEL_TOKEN
 
 
.template: &deploy-rules
 
variables:
 
RELEASE_VERSION: $CI_JOB_ID
 
SHOPIFY_APP_CONFIG: "staging"
 
SHOPIFY_CLI_PARTNERS_TOKEN: $STAGING_SHOPIFY_CLI_PARTNERS_TOKEN
 
DEPLOY_DIR: $STAGING_DEPLOY_DIR
 
DEPLOY_USER: $STAGING_DEPLOY_USER
 
DEPLOY_PORT: $STAGING_DEPLOY_PORT
 
DEPLOY_HOST: $STAGING_DEPLOY_HOST
 
before_script:
 
- if [ "$RELEASE_VERSION" == "" ]; then echo "RELEASE_VERSION is empty" ; exit 1; fi
 
- if [ "$SHOPIFY_APP_CONFIG" == "" ]; then echo "SHOPIFY_APP_CONFIG is empty" ; exit 1; fi
 
- if [ "$SHOPIFY_CLI_PARTNERS_TOKEN" == "" ]; then echo "SHOPIFY_CLI_PARTNERS_TOKEN is empty" ; exit 1; fi
 
- if [ "$DEPLOY_DIR" == "" ]; then echo "DEPLOY_DIR is empty" ; exit 1; fi
 
- if [ "$DEPLOY_USER" == "" ]; then echo "DEPLOY_USER is empty" ; exit 1; fi
 
- if [ "$DEPLOY_PORT" == "" ]; then echo "DEPLOY_PORT is empty" ; exit 1; fi
 
- if [ "$DEPLOY_HOST" == "" ]; then echo "DEPLOY_HOST is empty" ; exit 1; fi
 
- echo $RELEASE_VERSION;
 
- echo $SHOPIFY_APP_CONFIG;
 
- echo $DEPLOY_DIR;
 
rules:
 
- if: '$CI_COMMIT_REF_NAME == "devel"' # Automatyczne na branchu `devel`
 
when: always
 
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"' # Manualne w kontekście Merge Request
 
when: manual
 
- if: '$CI_COMMIT_REF_NAME != "master" && $CI_COMMIT_TAG == ""' # Manualne na innych branchach (bez `master` i tagów)
 
when: manual
 
- if: '$CI_COMMIT_TAG' # Automatyczne na tagu (produkcja)
 
when: always
 
variables:
 
RELEASE_VERSION: $CI_COMMIT_TAG
 
SHOPIFY_APP_CONFIG: "production"
 
SHOPIFY_CLI_PARTNERS_TOKEN: $PRODUCTION_SHOPIFY_CLI_PARTNERS_TOKEN
 
DEPLOY_DIR: $PRODUCTION_DEPLOY_DIR
 
DEPLOY_USER: $PRODUCTION_DEPLOY_USER
 
DEPLOY_PORT: $PRODUCTION_DEPLOY_PORT
 
DEPLOY_HOST: $PRODUCTION_DEPLOY_HOST
 
 
build web frontend:
 
<<: *build-rules
 
image: node:latest
artifacts:
artifacts:
name: "assets"
paths:
paths:
- web/frontend/dist
- web/frontend/dist
image: node:latest
stage: build
stage: build
interruptible: true
before_script:
script:
- if [ "$APP_ENV" == "" ]; then echo "APP_ENV is empty" ; exit 1; fi
- if [ "$SHOPIFY_API_KEY" == "" ]; then echo "SHOPIFY_API_KEY is empty" ; exit 1; fi
- if [ "$SHOPIFY_APP_CLIENT_ID" == "" ]; then echo "SHOPIFY_APP_CLIENT_ID is empty" ; exit 1; fi
 
- echo $APP_ENV;
 
- node -v
- cd web/frontend
- cd web/frontend
- npm config set -- //${CI_SERVER_HOST}/:_authToken=${PREDATORS_DEPLOY_TOKEN}
- npm config set -- //${CI_SERVER_HOST}/:_authToken=${PREDATORS_DEPLOY_TOKEN}
- npm config set @octolize:registry=https://${CI_SERVER_HOST}/api/v4/packages/npm/
- npm config set @octolize:registry=https://${CI_SERVER_HOST}/api/v4/packages/npm/
- npm config list
script:
- npm ci
- npm ci --prefer-offline --no-audit
- npm run build
- npm run build
.template: &deploy-template
build web backend:
 
<<: *build-rules
 
image: composer:latest
 
artifacts:
 
paths:
 
- web/backend/vendor
 
stage: build
 
script:
 
- php -v
 
- cd web/backend
 
- composer config gitlab-token.gitlab.wpdesk.dev gitlab-ci-token ${CI_JOB_TOKEN}
 
- composer install --optimize-autoloader --no-dev --no-scripts
 
 
deploy web:
 
<<: *deploy-rules
image: wpdesknet/amazon-svn-deploy
image: wpdesknet/amazon-svn-deploy
stage: deploy
stage: deploy
tags:
script:
- vendor
before_script:
- echo "$DEMO_FS_SSH_KEY" | tr -d '\r' > ~/.ssh/id_rsa_demo_fs
- echo "$DEMO_FS_SSH_KEY" | tr -d '\r' > ~/.ssh/id_rsa_demo_fs
- chmod 0600 ~/.ssh/id_rsa_demo_fs
- chmod 0600 ~/.ssh/id_rsa_demo_fs
- echo "$SSH_KNOWN_HOSTS" | tr -d '\r' > ~/.ssh/known_hosts
- echo "$SSH_KNOWN_HOSTS" | tr -d '\r' > ~/.ssh/known_hosts
script:
- if [ "$DEPLOY_HOST" ] == "" ]; then echo "DEPLOY_HOST is empty" ; exit 1; fi
- if [ "$DEPLOY_USER" ] == "" ]; then echo "DEPLOY_USER is empty" ; exit 1; fi
- if [ "$DEPLOY_DIR" ] == "" ]; then echo "DEPLOY_DIR is empty" ; exit 1; fi
- if [ "$DEPLOY_PORT" ] == "" ]; then echo "DEPLOY_PORT is empty" ; exit 1; fi
- ls -al
- ls -al
- ssh-keyscan -H -p $DEPLOY_PORT $DEPLOY_HOST >> ~/.ssh/known_hosts
- ssh-keyscan -H -p $DEPLOY_PORT $DEPLOY_HOST >> ~/.ssh/known_hosts
- export RSYNC_RSH="ssh -p $DEPLOY_PORT -v -i ~/.ssh/id_rsa_demo_fs"
- export RSYNC_RSH="ssh -p $DEPLOY_PORT -v -i ~/.ssh/id_rsa_demo_fs"
@@ -63,80 +112,14 @@ stages:
@@ -63,80 +112,14 @@ stages:
- ssh -p $DEPLOY_PORT -i ~/.ssh/id_rsa_demo_fs $DEPLOY_USER@$DEPLOY_HOST "cd $DEPLOY_DIR && php bin/console doctrine:migrations:migrate --no-interaction && php bin/console cache:clear && $RUN_AFTER_DEPLOY"
- ssh -p $DEPLOY_PORT -i ~/.ssh/id_rsa_demo_fs $DEPLOY_USER@$DEPLOY_HOST "cd $DEPLOY_DIR && php bin/console doctrine:migrations:migrate --no-interaction && php bin/console cache:clear && $RUN_AFTER_DEPLOY"
after_script:
after_script:
- $DEPLOY_AFTER_SCRIPT
- $DEPLOY_AFTER_SCRIPT
.template: &deploy-to-stage
<<: *deploy-template
variables:
DEPLOY_HOST: $STAGE_DEPLOY_HOST
DEPLOY_PORT: $STAGE_DEPLOY_PORT
DEPLOY_USER: $STAGE_DEPLOY_USER
DEPLOY_DIR: $STAGE_DEPLOY_DIR
dependencies:
dependencies:
- composer install
- build web backend
- prepare assets stage
- build web frontend
.template: &deploy-to-production
deploy app:
<<: *deploy-template
<<: *deploy-rules
variables:
image: node:latest
DEPLOY_HOST: $PRODUCTION_DEPLOY_HOST
stage: deploy
DEPLOY_PORT: $PRODUCTION_DEPLOY_PORT
DEPLOY_USER: $PRODUCTION_DEPLOY_USER
DEPLOY_DIR: $PRODUCTION_DEPLOY_DIR
dependencies:
- composer install
- prepare assets production
composer install:
artifacts:
name: "vendor"
paths:
- web/backend/vendor
image: composer:latest
tags:
- vendor
stage: build
interruptible: true
script:
script:
- php -v
- npm ci
- cd web/backend
- npm run deploy -- --force --version=$RELEASE_VERSION --config=$SHOPIFY_APP_CONFIG
- composer config gitlab-token.gitlab.wpdesk.dev gitlab-ci-token ${CI_JOB_TOKEN}
\ No newline at end of file
- composer install --optimize-autoloader --no-dev --no-scripts
prepare assets stage:
<<: *prepare-assets
except:
- master
- tags
variables:
SHOPIFY_API_KEY: $STAGE_SHOPIFY_API_KEY
MANTLE_APP_TOKEN: $STAGE_MANTLE_APP_TOKEN
prepare assets production:
<<: *prepare-assets
only:
- master
- tags
variables:
SHOPIFY_API_KEY: $PRODUCTION_SHOPIFY_API_KEY
MANTLE_APP_TOKEN: $PRODUCTION_MANTLE_APP_TOKEN
deploy to stage:
<<: *deploy-to-stage
only:
- devel
deploy to stage manual:
<<: *deploy-to-stage
when: manual
deploy to production:
<<: *deploy-to-production
only:
- tags
deploy to production manual:
<<: *deploy-to-production
only:
- master
- tags
when: manual
Loading