在 CI 环境中使用 wp-cli 安装插件

Install plugin with wp-cli in a CI environment

我正在尝试安装非官方的 w3-total-cache plugin in a wordpress docker image with the wp-cli, but it seems to try to connect to the database, even tough I don't try to activate it. In the Dockerfile I install other themes/plugins with composer and everything seems fine, but the only package I found for the w3tc plugin is https://packagist.org/packages/finaldream/w3-total-cache,而且似乎也不是最新的(版本 0.9.4.6 而 w3tc 是版本 0.14.4).

我可以用 wp-cli 在最终环境的机器上安装它,因为它有数据库,但我似乎无法在 CI 环境中安装它来创建 docker 带有预装插件的图像,我还没有找到关于它的其他问题和解决方案。

有没有办法在没有数据库的CI环境中安装插件?(在最终环境中,无论是开发环境、暂存环境还是生产环境,我只会调用 wp-cli 来激活插件,就像我已经为使用 composer 安装的插件所做的那样)。

我最终认为在这种情况下最好的选择是 curl 来自 wordpress 的 zip 文件(因为最终 wordpress 插件主要是 plugins 文件夹中的目录)。

我在 dockerfile 中添加了以下指令:

ENV W3TC_VERSION 0.14.4

RUN mkdir -p /var/www/html/web/app/plugins \
 && curl -L https://downloads.wordpress.org/plugin/w3-total-cache.${W3TC_VERSION}.zip \
    -o /tmp/w3-total-cache.zip \
 && unzip /tmp/w3-total-cache.zip -d /var/www/html/web/app/plugins \
 && rm /tmp/w3-total-cache.zip \
 && chown -R www-data:www-data /var/www/html/web/app/plugins \
 && cp /var/www/html/web/app/plugins/w3-total-cache/wp-content/advanced-cache.php \
    /var/www/html/web/app/advanced-cache.php \
 && chown www-data:www-data /var/www/html/web/app/advanced-cache.php \
 && mkdir -p /var/www/html/web/app/cache \
 && chown www-data:www-data /var/www/html/web/app/cache \
 && mkdir -p /var/www/html/web/app/w3tc-config \
 && chown www-data:www-data /var/www/html/web/app/w3tc-config

更新 (2020-08-20)

我按照 leymannx 在评论中的建议做了,并在 composer.json 文件的 post 安装指令中包含了一条指令,以使用以下命令调用 shell 脚本:

#!/bin/bash
set -eou pipefail

echo "$(date '+%F %X') Custom install - Start"

W3TC_VERSION=0.14.4
APP_DIR=/var/www/html/web/app
PLUGINS_DIR="$APP_DIR/plugins"
W3TC_URL="https://downloads.wordpress.org/plugin/w3-total-cache.${W3TC_VERSION}.zip"

if [ ! -d "$PLUGINS_DIR/w3-total-cache" ]; then
    mkdir -p "$PLUGINS_DIR"

    curl -L "$W3TC_URL" -o /tmp/w3-total-cache.zip

    unzip /tmp/w3-total-cache.zip -d "$PLUGINS_DIR"
    rm /tmp/w3-total-cache.zip

    chown -R www-data:www-data "$PLUGINS_DIR"

    cp "$PLUGINS_DIR"/w3-total-cache/wp-content/advanced-cache.php \
        "$APP_DIR"/advanced-cache.php
    chown www-data:www-data "$APP_DIR"/advanced-cache.php

    mkdir -p "$APP_DIR"/cache
    chown www-data:www-data "$APP_DIR"/cache

    mkdir -p "$APP_DIR"/w3tc-config
    chown www-data:www-data "$APP_DIR"/w3tc-config
fi

echo "$(date '+%F %X') Custom install - End"

(我也从 Dockerfile 中删除了那些命令)

这使得整个过程对于使用此 wordpress 环境的人来说更加透明。