danielbachhuber/composer-lock-updater

在您的 CI 系统中运行 composer-lock-updater 以实现 bot 动力的 composer.lock pull 请求。

v0.8.3 2021-11-10 11:51 UTC

README

在您的 CI 系统中运行 composer-lock-updater 以实现 bot 动力的 composer.lock pull 请求。

Build Status

当您运行 clu 时,它

  1. 将给定的 git 仓库克隆到工作 /tmp/ 目录。
  2. 在工作目录内运行 composer update
  3. 如果检测到跟踪的 composer.lock 文件中的更改,则提交一个 pull 请求。

太好了!现在您的依赖项不再是六个月前的版本了。

composer-lock-updater 与 dependabot 不同,因为它将所有更新捆绑成一个 pull 请求,而不是为每个依赖项创建单独的 pull 请求。

安装 | 使用 | 与 Travis CI 集成

安装

composer-lock-updater 是一个可以通过 Composer 安装的 PHP 库。

composer global require danielbachhuber/composer-lock-updater

composer-lock-updater 依赖于系统上已安装的 composergit。对于 GitHub 使用,还需要安装官方的 hub CLI 工具。对于 GitLab 使用,可以使用非官方的 lab CLI 工具,该工具模拟 hub

无论是 hub 还是 lab,都需要通过它们各自的服务进行认证,以便创建 pull/merge 请求。

其他提供商的支持

clu-config.dist.json 复制到 $COMPOSER_HOME/clu-config.json 以添加对您的 git 仓库提供商的支持,或者调整 pull 请求命令。例如,要使用 Terminus Bitbucket Plugin 添加对 Bitbucket-Pantheon 项目的支持,创建以下 clu-config.json

{
  "providers": {
    "terminus": {
      "provider": "terminus",
      "exec": ["terminus"],
      "pr_create": "terminus pr-create --title=\"Update Composer dependencies\" --description %s",
      "pr_list": "terminus pr-list",
      "pr_close": "terminus pr-close %d -y",
      "title_pattern": "%(\\d+)\\s+Update Composer dependencies\\s+clu\\-([0-9-]*)%"
    }
  }
}

使用

在现有的 GitHub 仓库中使用 composer-lock-updater

clu

composer-lock-updater 默认使用 git config --get remote.origin.url。如果您想指定不同的值,可以将仓库 URL 作为第一个位置参数传递,或者定义一个 CLU_GIT_URL 环境变量。

要使用 composer-lock-updater 与 GitLab 仓库一起使用,请

clu --provider=gitlab

composer-lock-updater 还支持以下环境变量来修改其行为

  • CLU_COMPOSER_INSTALL_ARGS:传递给 composer install 的参数;默认为 --no-dev --no-interaction
  • CLU_COMPOSER_UPDATE_ARGS:传递给 composer update 的参数;默认为 --no-progress --no-dev --no-interaction
  • CLU_GIT_NAME:用于 Git 提交的名称;默认为 'composer-lock-update'。
  • CLU_GIT_EMAIL:用于 Git 提交的电子邮件;默认为 'composer-lock-update@localhost'。

与 Travis CI 集成

如果没有自动运行,那就没什么用了。

要将 composer-lock-updater 配置为在 Travis master 分支构建时运行,请将以下内容添加到您的 .travis.yml 文件中

    after_script:
      - |
        ###
        # Only run on one job of a master branch build
        ###
        if [ -z "$CLU_RUN" ] || [ "$TRAVIS_BRANCH" != master ] ; then
          echo "composer.lock update disabled for this build"
          return
        fi
        ###
        # Install composer-lock-updater
        ###
        export PATH="$HOME/.composer/vendor/bin:$PATH"
        composer global require danielbachhuber/composer-lock-updater
        ###
        # Install hub for creating GitHub pull requests
        #
        # You could also replace this with lab to create GitLab merge requests.
        ###
        wget -O hub.tgz https://github.com/github/hub/releases/download/v2.2.9/hub-linux-amd64-2.2.9.tgz
        tar -zxvf hub.tgz
        export PATH=$PATH:$PWD/hub-linux-amd64-2.2.9/bin/
        ###
        # Optional: install Sensio Labs security checker to include security advisories in PR comments
        ###
        mkdir -p $HOME/bin
        wget -O $HOME/bin/security-checker.phar http://get.sensiolabs.org/security-checker.phar
        chmod +x $HOME/bin/security-checker.phar 
        ###
        # Run composer-lock-updater
        ###
        clu $CLU_REPO_URL

要授予 Travis 构建提交和 pull 请求访问权限,请在 Travis 控制面板中定义以下私有环境变量

GITHUB_TOKEN=<personal-oauth-token>
CLU_REPO_URL=https://<personal-oauth-token>:x-oauth-basic@github.com/<org>/<repo>.git

请确保将 <personal-oauth-token><org><repo> 替换为相应的值。

最后,由于存在CLU_RUN环境变量,默认情况下禁用了composer-lock-updater。通过修改您的环境矩阵,可以为每个构建启用一次。

matrix:
  include:
    - php: 7.1
      env: WP_VERSION=latest PHP_APCU=enabled CLU_RUN=1
    - php: 7.0
      env: WP_VERSION=latest PHP_APCU=enabled
    - php: 5.6
      env: WP_VERSION=latest PHP_APCU=enabled

由于composer-lock-updater是在after_script步骤中运行的,请确保它运行正确,因为如果配置错误,它不会使您的构建失败。