carlalexander / bedrock-pantheon-circleci
WordPress 项目模板,用于在 Pantheon 和 CircleCI 上使用 Bedrock
Requires
- php: >=7.1
- composer/installers: ^1.8
- oscarotero/env: ^1.2.0
- roots/wordpress: 5.3.2
- roots/wp-config: 1.0.0
- roots/wp-password-bcrypt: 1.0.0
- vlucas/phpdotenv: ^4.1.0
Requires (Dev)
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.5.4
This package is auto-updated.
Last update: 2024-08-29 05:42:48 UTC
README
这是一个用于在 bedrock 与 Pantheon 上使用的项目模板。该项目展示了如何在 Pantheon 上使用 bedrock 并通过 CircleCI 处理持续部署。
创建项目
要创建一个新项目,只需使用以下命令
$ composer create-project carlalexander/bedrock-pantheon-circleci
然后您需要更新项目 .env
文件中的环境变量。您可以在 Bedrock 文档 中了解有关所有 Bedrock 环境变量的信息。
配置
本身,项目模板仅包含在 Pantheon 和 CircleCI 平台上工作的所需代码和配置文件。这两个平台都需要一些额外的配置才能使持续部署工作流程正常工作。
配置 SSH
您需要做的第一件事是授予 CircleCI 对您的账户的 SSH 访问权限。为此,您应该在项目目录中创建一个仅用于 CircleCI 的特殊 SSH 密钥。首先,在您的项目目录中运行以下命令
$ ssh-keygen -m pem -C "circleci"
此命令将在您的项目目录中创建两个文件,id_rsa
和 id_rsa.pub
。您将使用这两个文件来配置 CircleCI 和 Pantheon。
重要:不要将 id_rsa
和 id_rsa.pub
文件提交到您的项目中。
CircleCI
首先,我们将配置 CircleCI。在 CircleCI 应用程序中,通过点击您的项目旁边的齿轮图标,进入您的 bedrock 项目的设置。
在那里,您需要转到 SSH 权限 屏幕。然后,您需要点击 添加 SSH 密钥 按钮。这将打开一个模态窗口,您可以在其中输入要添加到您的 CircleCI 项目的 SSH 密钥。模态有两个字段:主机名 和 私钥。
对于 主机名,您需要输入 drush.in
。这将限制 SSH 密钥的使用范围仅为 Pantheon 服务器。如果您留空,则 SSH 密钥将用于所有 SSH 连接,我们不想这样做。
私钥 是我们使用 ssh-keygen
命令创建的 id_rsa
文件的内容。id_rsa
文件的内容始终以:-----BEGIN RSA PRIVATE KEY-----
开头。填写完两个表单字段后,您需要点击 添加 SSH 密钥 按钮,添加 SSH 密钥。
然后您应该看到它出现在 SSH 密钥列表中。
Pantheon
接下来,您需要将 SSH 密钥添加到您的 Pantheon 账户。从仪表板,您需要点击 账户 标签进入账户页面。
在那里,您需要转到 SSH 密钥 部分,并填写 添加 SSH 密钥 表单。对于此表单,您需要复制公钥而不是私钥。您可以在 id_rsa.pub
文件中找到它。
文件的开头始终以 ssh-rsa
开头。如果您使用 -C "circleci"
选项与 ssh-keygen
命令一起使用,则文件将以 circleci
结尾。一旦您复制了 id_rsa.pub
文件的内容,您需要点击 添加密钥。
然后您应该看到它出现在 SSH 密钥列表中。
创建初始 .env 文件
与标准WordPress站点不同,Bedrock站点使用环境变量来管理敏感凭证。这些环境变量可以来自不同的来源。其中最重要的一项是.env
文件,Bedrock使用它而不是标准的WordPresswp-config.php
文件。
Pantheon不会创建Bedrock站点所需的初始.env
文件。您需要自己创建它并将其上传到Pantheon服务器。最简单的方法是使用FTP连接到您的Pantheon服务器并创建.env
文件。
要使用FTP连接到您的Pantheon站点,请转到Pantheon仪表板中的站点管理面板。在那里,您将看到一个如上图所示的右侧的连接信息按钮。这将打开一个菜单,显示用于连接到您的Pantheon站点的所有凭证。
您将在底部找到SFTP凭证。使用这些SFTP凭证连接到您的Pantheon站点。一旦连接,您需要转到files
目录并创建一个private
目录。您需要使用以下内容在您刚刚创建的private
目录中创建.env
文件:
WP_ENV=development
WP_SITEURL=${WP_HOME}/wp
# Generate your keys here: https://roots.io/salts.html
AUTH_KEY='generateme'
SECURE_AUTH_KEY='generateme'
LOGGED_IN_KEY='generateme'
NONCE_KEY='generateme'
AUTH_SALT='generateme'
SECURE_AUTH_SALT='generateme'
LOGGED_IN_SALT='generateme'
NONCE_SALT='generateme'
您需要将所有密钥替换为在这里生成的新的密钥这里。您还会注意到,这与您习惯看到的Bedrock的.env
文件更为精简。这是因为Pantheon提供了我们通常存储在.env
文件中的许多环境变量。
CircleCI环境变量
为了使CircleCI Pantheon部署脚本正常工作,我们需要配置一些特定于项目的环境变量。为此,您需要返回到CircleCI中项目的设置。您可以通过点击齿轮图标访问它们。
在那里,您需要导航到环境变量屏幕。接下来,您需要添加特定的环境变量。以下各节将解释如何获取每个环境变量的值。
TERMINUS_SITE
TERMINUS_SITE
环境变量是我们将在Pantheon平台上部署的站点的名称。获取该值的最简单方法是转到您的Pantheon站点。在管理面板中,您需要点击访问站点的开发版本。
站点的开发版本URL应类似于http://dev-xxxxxxx.pantheonsite.io/
。其中xxxxxxx
是Pantheon平台上的站点名称。您需要使用该名称作为您的TERMINUS_SITE
环境变量的值。
TERMINUS_TOKEN
TERMINUS_TOKEN
环境变量是terminus用于与Pantheon平台进行身份验证的令牌。您可以通过转到Pantheon仪表板中的“账户”标签下的“机器令牌”部分来创建它。然后,您需要点击“创建令牌”来创建您的机器令牌。
您需要给机器令牌起一个名字以便识别。完成后,您需要点击“生成令牌”。这将生成令牌并弹出一个模态框。
Pantheon只会显示机器令牌一次。如果您需要,可以将其保存到某处。否则,只需转到CircleCI中您项目的设置并添加机器令牌作为您的TERMINUS_TOKEN
环境变量的值。
GITHUB_TOKEN(可选)
部署脚本将在CircleCI运行拉取请求时创建multidev环境。一旦拉取请求被合并,这些multidev环境不会清理。为此,您需要允许terminus连接到您的GitHub账户。
要实现这个功能,您需要添加 GITHUB_TOKEN
环境变量。GITHUB_TOKEN
环境变量的值来自在 GitHub 上创建个人访问令牌。您可以在以下链接找到创建个人访问令牌的指南:这里。
创建后,GitHub 只会显示您的个人令牌一次。如果您想保存,可以将其保存在某处。否则,只需前往 CircleCI 中您项目的设置,并将机器令牌作为 GITHUB_TOKEN
环境变量的值添加即可。
致谢
感谢 Roots 团队创建和维护 Bedrock 项目。还要感谢 Andrew Taylor,他在他的 仓库 中展示了如何使用 WordPress 和 Pantheon 实现高级部署工作流程。