Files
backend/.gitlab-ci.yml
2025-05-27 16:15:42 +03:30

92 lines
2.5 KiB
YAML

default:
image: witel/rms:1.0
stages:
- test
- lint
- deploy
variables:
TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
TARGET_BRANCH_NAME: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
GIT_STRATEGY: fetch
GIT_DEPTH: 10
GIT_HTTP_LOW_SPEED_LIMIT: 1000 # Bytes per second
GIT_HTTP_LOW_SPEED_TIME: 30
MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
# https://docs.gitlab.com/ee/ci/yaml/index.html#cache
cache:
paths:
- vendor/
services:
- name: mysql:latest
alias: mysql
before_script:
- apk update
- command=$(ls && pwd)
- echo "'$command'"
- cp .env.example .env
- composer install
- php artisan key:generate
- apk add --no-cache ca-certificates
- update-ca-certificates
- git fetch
test:
stage: test
script:
- php artisan config:clear
- cp .env.example .env.testing
- sed -i "s/DB_HOST=127.0.0.1/DB_HOST=mysql/" .env.testing
- sed -i "s/DB_DATABASE=/DB_DATABASE=$MYSQL_DATABASE/" .env.testing
- sed -i "s/DB_USERNAME=/DB_USERNAME=$MYSQL_USERNAME/" .env.testing
- sed -i "s/DB_PASSWORD=/DB_PASSWORD=$MYSQL_ROOT_PASSWORD/" .env.testing
- cat .env.testing
- php artisan key:generate --env=testing
- php artisan migrate --path=/database/old_migrations/ --path=database/migrations --env=testing --force
- php artisan test
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
when: always
.lint:
stage: lint
script:
- log=$(git log && git log -p)
- echo "'$log'"
- echo "'$CI_COMMIT_SHA'"
- CHANGED_FILES=$( git diff-tree --name-only -r origin/$TARGET_BRANCH_NAME -r $CI_COMMIT_SHA)
- echo $CHANGED_FILES
- composer require --dev squizlabs/php_codesniffer
- vendor/bin/phpcs --standard=PSR12 $CHANGED_FILES
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
when: always
allow_failure: true
#deploy:
# stage: deploy
# script:
# - apt-get update && add --no-cache openssh-client
# - chmod og-rwx $ID_RSA
# - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "
# echo -e '$SHECAN_DNS' | sudo tee /etc/resolv.conf &&
# dns=\$(cat /etc/resolv.conf) &&
# echo \"\$dns\" &&
# cd $PROJECT_PATH &&
# git checkout $TARGET_BRANCH_NAME &&
# ssh -T git@gitlab.com &&
# git pull ssh-origin $TARGET_BRANCH_NAME &&
# echo -e '$DEFAULT_DNS' | sudo tee /etc/resolv.conf"
# resource_group: develop_deploy
# rules:
# - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_NAME == "develop"'