1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

安装 PHP 依赖包

PHP 有两种常用扩展依赖包:

  • C 扩展:使用 pecl 安装;
  • PHP 扩展:使用 composer 安装;

pecl

主机环境

CODING 持续集成为 Ubuntu 系统,可使用 aptpecl 命令安装 pecl 扩展:

pipeline {
  agent any
  stages {
    stage('首选 apt 安装') {
      steps {
        sh 'update-alternatives --set php /usr/bin/php7.4'
        sh 'apt-get install -y php7.4-xdebug'
        sh 'php -i | grep xdebug.mode'
        sh 'echo "xdebug.mode=coverage" >> /etc/php/7.4/cli/conf.d/20-xdebug.ini'
        sh 'php -i | grep xdebug.mode'
      }
    }
    stage('候选 pecl 安装') {
      steps {
        sh 'update-alternatives --set php /usr/bin/php7.4'
        sh 'apt-get install -y php7.4-dev'
        sh 'pecl install redis'
        sh 'echo extension="redis.so" > /etc/php/7.4/cli/conf.d/20-redis.ini'
        sh 'php -i | grep redis'
      }
    }
  }
}

Docker 环境

如果使用 Docker 构建环境,可使用 docker-php-ext-installpecl 命令安装 pecl 扩展:

pipeline {
  agent any
  stages {
    stage('安装依赖') {
      agent {
        docker {
          reuseNode 'true'
          image 'php:8.0-cli'
        }
      }
      steps {
        // 第 1 种方式
        // Possible values for ext-name:
        // bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp
        // hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo
        // pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell
        // readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard
        // sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip
        sh 'docker-php-ext-install pdo_mysql'
        sh 'php -i | grep mysql'
        // 第 2 种方式
        sh "yes '' | pecl install redis"
        sh 'docker-php-ext-enable redis'
        sh 'php -i | grep redis'
        // 第 3 种方式
        sh 'pecl install xdebug'
        sh 'docker-php-ext-enable xdebug'
        sh 'php -i | grep xdebug.mode'
        sh 'echo "xdebug.mode=coverage" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini'
        sh 'php -i | grep xdebug.mode'
      }
    }
  }
}

公共 composer 制品库

composer 公共制品库 Packagist 在海外,内地用户访问可能很慢,建议切换为腾讯云镜像:

composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 恢复默认官方源(海外)
# composer config -g --unset repos.packagist

私有 composer 制品库

使用私有制品库需先获得用户名/密码,参考文档:《团队级制品库》

composer.json

进入 PHP 项目目录,设置制品库地址:

composer config repos.private-composer composer https://codes-farm-composer.pkg.coding.net/composer-demo/private-composer

可以看到 composer.json 发生了变化,将它提交到代码库。

auth.json

进入 PHP 项目目录,设置制品库用户名/密码:

composer config http-basic.codes-farm-composer.pkg.coding.net pt03xe33nvww 0ad2d123456

可以看到生成了 auth.json,将它忽略掉,不要提交到代码库。

本地安装

本地安装私有包:

composer require codes-farm/socialite-providers:0.3.0

然后将 composer.lock 提交到代码库。

持续集成构建

把用户名/密码填入环境变量:

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], 
            userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('安装依赖') {
      steps {
        sh "composer config http-basic.codes-farm-composer.pkg.coding.net ${CODING_ARTIFACTS_USERNAME} ${CODING_ARTIFACTS_PASSWORD}"
        sh "composer install"
      }
    }
  }
}

上一篇安装 Maven 依赖包
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?