Могу ли я использовать php deployer для CI / CD в Laravel? - PullRequest
2 голосов
/ 02 мая 2020

Я пытаюсь использовать Gitlab CI / CD, а для запуска тестов и развертывания кода на рабочем сервере, наконец, получается следующее .gitlab.ci.yml

Рабочий сервер - это простой сервер Ubuntu

Это плохая практика и как я могу ее улучшить?

stages:
  - testing
  - deploying

image: php:latest

services:
  - mysql:latest

variables:
  MYSQL_DATABASE: project_name
  MYSQL_ROOT_PASSWORD: secret

cache:
  paths:
    - vendor/
    - node_modules/

before_script:
  - apt-get update -yqq
  - apt-get install gnupg -yqq
  - curl -sL https://deb.nodesource.com/setup_8.x | bash -
  - apt-get install git nodejs libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev libonig-dev libzip-dev -yqq
  - docker-php-ext-install mbstring pdo_mysql curl json intl gd xml zip bz2 opcache
  - pecl install xdebug
  - docker-php-ext-enable xdebug
  - curl -sS https://getcomposer.org/installer | php
  - php composer.phar install

  - cp .env.testing .env

  - php artisan key:generate
  - php artisan config:cache
  - php artisan migrate
  - php artisan db:seed
  - 'which ssh-agent || ( apt-get install -qq openssh-client )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

test:
  stage: testing
  script:
    - php vendor/bin/phpunit --coverage-text --colors=never
deploy:
  stage: deploying
  script:
    - php artisan deploy

Ответы [ 2 ]

1 голос
/ 02 мая 2020

1) Рассмотрите возможность создания своего собственного docker изображения на основе php:latest, которое будет содержать все необходимые зависимости внутри (git nodejs ...), и используйте свое собственное изображение для ваших сборок. Это сэкономит вам время на каждую сборку, и вы получите чище .gitlab-ci.yml.

(PS вы даже можете разместить его в GitLab Container Registry)

2) Не рекомендуется использовать latest, потому что после обновления ваша сборка может перестать работать, даже если вы ничего не изменили

1 голос
/ 02 мая 2020

Я думаю, что это не плохая практика. но вы можете использовать такие инструменты, как Дженкин

https://www.jenkins.io

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...