我可以在 Laravel 中为 CI/CD 使用 php 部署程序吗?
Can I use php deployer for CI/CD in Laravel?
我正在尝试使用 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
我认为这不是一个坏习惯。但是你可以使用位高级工具,比如 jenkin
1) 考虑基于 php:latest
构建您的自定义 docker 图像,它将在内部包含所有必需的依赖项 (git nodejs ...) 并将您的自定义图像用于您的建立。每次构建都会为您节省一些时间,并且您会变得更干净 .gitlab-ci.yml
.
(P.S。您甚至可以将其托管在 GitLab Container Registry 中)
2) 不建议使用 latest
标签,因为更新后,即使您个人没有更改任何东西,您的构建也可能开始失败
我正在尝试使用 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
我认为这不是一个坏习惯。但是你可以使用位高级工具,比如 jenkin
1) 考虑基于 php:latest
构建您的自定义 docker 图像,它将在内部包含所有必需的依赖项 (git nodejs ...) 并将您的自定义图像用于您的建立。每次构建都会为您节省一些时间,并且您会变得更干净 .gitlab-ci.yml
.
(P.S。您甚至可以将其托管在 GitLab Container Registry 中)
2) 不建议使用 latest
标签,因为更新后,即使您个人没有更改任何东西,您的构建也可能开始失败