Files
web-crm.mcmed.ru/frontend/.gitlab-ci.yml
Viktoria Polyakova 4fb101c5db Init
2026-01-25 08:57:38 +00:00

177 lines
3.9 KiB
YAML

stages:
- prepare
- build
- deploy
default:
image: kroniak/ssh-client
interruptible: true
before_script:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 400 ~/.ssh/id_rsa
# Vercel
vercel:
image: node:18-alpine
stage: deploy
dependencies: []
rules:
- if: $CI_COMMIT_BRANCH != "main" && $CI_COMMIT_BRANCH != "develop" && $CI_COMMIT_BRANCH !~ /^release/
when: manual
script:
- npm install --global vercel
- vercel pull --yes --environment=preview --token=$VERCEL_TOKEN
- vercel build --token=$VERCEL_TOKEN
- vercel deploy --prebuilt --token=$VERCEL_TOKEN
environment:
name: vercel
# Storybook
storybook:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == "develop"
when: manual
variables:
SSH_PRIVATE_KEY: $STAGING_SSH_PRIVATE_KEY
script:
- tar -czf sources.tar.gz .
- scp -r sources.tar.gz $STAGING_USER@$STAGING_SERVER:/amwork/storybook
- ssh $STAGING_USER@$STAGING_SERVER "cd /amwork/storybook && ./deploy.sh"
environment:
name: staging
url: https://amwork.dev
.prepare_script: &prepare_script
- tar -czf sources.tar.gz .
- scp -r sources.tar.gz $USER@$SERVER:$FOLDER
.build_script: &build_script
- ssh $USER@$SERVER "cd $FOLDER && ./build.sh"
.deploy_script: &deploy_script
- ssh $USER@$SERVER "cd $FOLDER && ./deploy.sh && ./update-version.sh"
.staging_job:
rules:
- if: $CI_COMMIT_BRANCH == "develop"
variables:
SSH_PRIVATE_KEY: $STAGING_SSH_PRIVATE_KEY
USER: $STAGING_USER
SERVER: $STAGING_SERVER
FOLDER: /amwork/frontend
environment:
name: staging
url: https://amwork.dev
.amwork_job:
rules:
- if: $CI_COMMIT_BRANCH == "main"
variables:
SSH_PRIVATE_KEY: $AMWORK_PROD_SSH_PRIVATE_KEY
USER: $AMWORK_PROD_USER
SERVER: $AMWORK_PROD_SERVER
FOLDER: /amwork/frontend
environment:
name: production/amwork
url: https://amwork.com
.mywork_job:
rules:
- if: $CI_COMMIT_BRANCH == "main"
variables:
SSH_PRIVATE_KEY: $MYWORK_PROD_SSH_PRIVATE_KEY
USER: $MYWORK_PROD_USER
SERVER: $MYWORK_PROD_SERVER
FOLDER: /mywork/frontend
environment:
name: production/mywork
url: https://mywork.app
# Staging
staging_prepare:
extends: .staging_job
stage: prepare
script: *prepare_script
staging_build:
extends: .staging_job
stage: build
variables:
GIT_STRATEGY: none
script: *build_script
staging_deploy:
extends: .staging_job
stage: deploy
variables:
GIT_STRATEGY: none
script: *deploy_script
# Amwork Production
amwork_prepare:
extends: .amwork_job
stage: prepare
script: *prepare_script
amwork_build:
extends: .amwork_job
stage: build
variables:
GIT_STRATEGY: none
script: *build_script
amwork_deploy:
extends: .amwork_job
stage: deploy
when: manual
variables:
GIT_STRATEGY: none
script: *deploy_script
# Mywork Production
mywork_prepare:
extends: .mywork_job
stage: prepare
variables:
FOLDER: /apps/mywork/frontend
script: *prepare_script
mywork_build:
extends: .mywork_job
stage: build
variables:
GIT_STRATEGY: none
FOLDER: /apps/mywork/frontend
script: *build_script
mywork_deploy:
extends: .mywork_job
stage: deploy
when: manual
variables:
GIT_STRATEGY: none
FOLDER: /apps/mywork/frontend
script: *deploy_script
# Platforma500 Production
platforma500_prepare:
extends: .mywork_job
stage: prepare
needs: [mywork_prepare]
variables:
FOLDER: /apps/platforma500/frontend
script: *prepare_script
platforma500_build:
extends: .mywork_job
stage: build
needs: [mywork_build]
variables:
GIT_STRATEGY: none
FOLDER: /apps/platforma500/frontend
script: *build_script
platforma500_deploy:
extends: .mywork_job
stage: deploy
when: manual
variables:
GIT_STRATEGY: none
FOLDER: /apps/platforma500/frontend
script: *deploy_script