Jenkins一个自动化构建版本的工具,配合Git Hooks,刚好能实现push代码即可自动发版。
听起来很骚,实操起来,却也不难,以下记录一些要点。

Step 1: 安装Jenkins

略,常规操作,可问度娘;

Step 2: 安装Deploy

  • 本地项目通过composera安装Deploy工具;

composer global require deployer/deployer -vvv

Step 3: 项目初始化

  • 在项目目录生成deploye.php文件
    deploy init

  • 这个可以选择不同框架,相当于自动生成模板脚本,但是没有TP,我这里手动配置了一下,需要注意的是文件夹权限要配置好。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    namespace Deployer;

    require 'recipe/common.php';

    // Project name
    set('application', 'XXXX管理系统');

    // Project repository
    set('repository', 'git@git.wisder.net:wisder/car-oil-php.git');

    // [Optional] Allocate tty for git clone. Default value is false.
    set('git_tty', false);

    // Shared files/dirs between deploys
    set('shared_files', [
    ]);
    set('shared_dirs', []);

    // Writable dirs by web server
    set('writable_dirs', []);


    // Hosts
    inventory('hosts.yml');

    //host('project.com')
    // ->set('deploy_path', '~/{{application}}');

    // Tasks

    task('php-fpm:restart', function () {
    run('{{php_fpm_restart}}');
    })->desc('Restart PHP-FPM service');


    desc('Deploy car-oil');
    task('deploy', [
    'deploy:info',
    'deploy:prepare',
    'deploy:lock',
    'deploy:release',
    'deploy:update_code',
    'deploy:shared',
    'deploy:writable',
    'deploy:vendors',
    'deploy:clear_paths',
    'deploy:symlink',
    'deploy:unlock',
    'cleanup',
    'success'
    ]);

    // [Optional] If deploy fails automatically unlock.
    after('deploy:failed', 'deploy:unlock');
  • 站点配置文件host.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dev:
hostname: dev.ybphp.com
deploy_path: /var/www/dev
user: root
stage: dev
branch: master
init_env: Development
php_fpm_restart: 'systemctl restart php-fpm'

prod:
hostname: prod.ybphp.com
deploy_path: /var/www/prod
user: root
stage: prod
branch: master
init_env: Production
php_fpm_restart: 'systemctl restart php-fpm'
  • 一通配置后,项目目录下创建jenkins配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    pipeline {
    agent any

    environment {
    HOME = '/root'
    }

    stages {
    stage('Build') {
    steps {
    git branch: 'master', url: 'git@git.wisder.net:wisder/car-oil-php.git'
    sh 'php vendor/bin/dep deploy dev -vvv'
    }
    }
    }
    }

最后jenkens配置

  • 登录jenkins, 新建项目,根据选项配置即可;

基于码云+jenkins构建

  • Jenkins安装好码云插件,目前卡在web hooks自动构建这一块,跨域问题也好,权限不足也罢,未完待续,后期解决再更新。