联合慈善论坛/km-starter-kit

Drupal 8 知识管理协作模板


README

这是围绕在 https://github.com/United-Philanthropy-Forum/km-collaborative 上完成的 KM 协作工作大部分的简约包装。

在启动新的论坛站点时,您可能需要引用此代码。

需求

成功构建此项目需要一些东西

  1. 将代码推送到 github 的能力,特别是 此存储库

    请确保您已 将 SSH 密钥添加到您的 github 帐户资料,并且您是 KM 协作存储库 的协作者或团队成员,拥有写入权限。

    当您访问 存储库主页 并在 README.md 文件的右上角看到一个铅笔图标时,这表示您可以编辑该文件。

    如果您没有访问权限联合慈善论坛的所有者 之一将需要邀请您。

  2. 在联合慈善论坛命名空间中创建新存储库的能力。当您能够无错误地访问此 URL 时,您知道这正在正常工作:https://github.com/organizations/United-Philanthropy-Forum/repositories/new

    如果您没有访问权限联合慈善论坛的所有者 之一将需要邀请您。

  3. 访问 Pantheon。当您能够前往 在 Pantheon 中创建新站点 并能够从下拉菜单中选择联合慈善论坛时,您知道这正在正常工作。

    如果您没有访问权限联合慈善论坛管理员 之一将需要邀请您。

  4. 访问 联合慈善论坛 CircleCI 实例。当您能够访问此 URL 时,您知道这正在正常工作。

    如果您没有访问权限,您可能需要验证 Circle -- 您可以使用 Github 登录。

  5. Composer > 2.0.0 全局可用。当您在控制台中键入 composer --version 并看到类似 "Composer version 2.1.6 2021-08-19 17:11:08" 的内容时,您知道这正在正常工作。

  6. Terminus > 3.6。当您在控制台中键入 terminus --version 并看到类似 Terminus 3.6.0 的内容时,您知道这正在正常工作。在运行此脚本之前,更新 Terminus 到最新版本是个好主意,否则它可能会无端失败。

  7. Pantheon 构建工具。当您在控制台中键入 terminus build:project:create -h 并看到有关 build:project:create 命令的信息时,您知道这正在正常工作

     Usage:
       build:project:create [options] [--] <source> [<target>]
     ...
  8. 您已运行了 一次性设置步骤

  9. 您的本地机器正在运行php 8.1。您可以在控制台输入php -v来确认它是否正在运行,您会看到类似PHP 8.1.12 (cli)的信息。

使用方法

选择一个新的项目名称

要开始一个新的项目

  • 确定一个新的项目名称——它应该是一个URL安全的字符串,可以是字母、破折号和数字。最好让名称与默认域名匹配,所以如果您的域名是"coolfoundation.org",理想的名称是"coolfoundation"。
  • 确认要在哪个Pantheon "团队"下构建网站(这是一个唯一的字符串,但可以包含空格——在Pantheon的"团队"下可见)
  • 确认开发仓库将位于哪个GitHub组织下(这也是一个URL安全的字符串,在GitHub上可见)

例如,为了创建ThinkShout Foundation的项目:项目名称:thinkshout-foundation Pantheon团队:United Philanthropy Forum GitHub组织:United-Philanthropy-Forum

请准备这个命令可能需要30分钟。这意味着要确保您的电脑在这段时间内不会进入休眠状态。如果您遇到超时,您可能需要尝试添加"ServerAliveInterval"以保持Pantheon在安装期间与您的机器连接。

您将运行此命令

terminus build:project:create --team='United Philanthropy Forum' --org='United-Philanthropy-Forum' --visibility='private' united-philanthropy-forum/km-starter-kit thinkshout-foundation

第一次运行此命令时,您将需要提供Circle和Pantheon上的某些API密钥。每个步骤都提供了链接和执行该操作的说明。您还将被要求为新网站设置用户1密码。(如果密码请求反复出现,系统正在拒绝您的密码,因为它不够安全。选择一个更复杂的密码。)

这将在美国Philanthropy Forum GitHub仓库中创建一个新的仓库,以及一个新的Pantheon网站

https://github.com/United-Philanthropy-Forum/thinkshout-foundation

https://dev-thinkshout-foundation.pantheonsite.io

Pantheon网站还应安装km_collaborative配置文件。

为全局上下文配置

我们现在有一个与您的个人GitHub账户关联的部署流程的网站。我们不想这样!将其更改为使用UPF CI机器人账户

  • upf-ci-bot身份登录GitHub(登录信息在1password的论坛中)
  • 使用ci机器人的GitHub登录信息登录CircleCI。
  • 访问https://app.circleci.com/settings/project/github/United-Philanthropy-Forum/MYSITE/environment-variables,如果存在,则删除这些环境变量:GITHUB_EMAIL GITHUB_TOKEN TERMINUS_TOKEN(它们现在将由组织上下文提供)
  • https://app.circleci.com/settings/project/github/United-Philanthropy-Forum/MYSITE/ssh
    • 删除现有的"Deploy Key",然后添加一个新的。
    • 滚动到"Additional SSH Keys"区域,并删除现有的用于域名"drush.in"的密钥。添加论坛CI自动化账户的SSH私钥(作为1password中详情的附件),域名"drush.in"。

初始网站设置

如果上述过程成功完成,您将拥有一个GitHub仓库和一个Pantheon仓库,它们通过CircleCI连接在一起,所有这些都在适当的组织或账户中。在Pantheon上,您将在"dev"上安装一个基本网站,但它看起来不会太多,并且它还没有大多数KMC功能。为了获得这些功能,您需要绕过Pantheon的内存限制。最好的方法是创建网站的本地副本并克隆下Pantheon数据库。在您的本地环境中,禁用您的PHP内存限制(或将其设置得非常高)。然后,启用"km_config_part2"模块。一旦完成,导出您的数据库并在Pantheon上导入它。

根据您网站的需求,您可能还需要启用一些其他的kmc子模块,例如如果您正在使用KMC包与Salesforce实例集成,则可以启用kmc_salesforce。这些模块都可以在您启用“kmc_config_part2”之后直接在Pantheon上启用——这是唯一一个需要大量内存来安装的模块。

如果build:project命令失败怎么办

如果在Pantheon上运行composer create-projectbuild:project:create命令失败,并出现Fatal error: Allowed memory size ... exhausted错误,那么发行版的初始安装就变得过大(这种情况经常发生)。当以这种方式失败时,您将面临一个损坏的设置。唯一解决问题的方法是删除Pantheon网站和GitHub仓库,并重新开始。最常见的问题是Drupal安装,遇到内存不足错误。为了解决这个问题,您可以在composer.json脚本中的“install-cms”指定“minimal”安装分析器而不是km_collaborative,来创建这个项目的新的发布版本。这将跳过更大的KMC安装过程。一旦成功,您需要在一个本地网站实例上运行适当的配置安装,并将您的数据库上传到Pantheon Dev网站。

如果是因为composer冲突导致命令失败,您可以在本地运行更简单的构建命令来调试。

composer create-project united-philanthropy-forum/km-starter-kit thinkshout-foundation

如果这也失败了,这个仓库需要更新。

如果build:project命令由于某种原因失败,新的网站骨架的某些部分可能已经存在。如果确实如此,如果存在,请删除Pantheon环境和GitHub仓库。

有关构建工具的许多信息,可能有助于调试,可在Pantheon构建工具README中找到。Pantheon还提供了关于其构建工具全面范围的详细文档

如何删除使用此启动器创建的项目。

Pantheon构建工具提供了一个build:env:obliterate命令,用于删除使用build:project:create命令启动的网站。它将删除Pantheon网站和仓库,因此您在任一处所做的任何更改都将永远丢失。示例

terminus build:env:obliterate thinkshout-foundation

维护此项目

此项目中文件很少,因为它旨在简化Pantheon构建工具KM协作配置文件之间的交接。因此,当D8 Pantheon drop中发生上游更改时,可以使用以下更新规则来更新此仓库

.gitignore

此代码仅属于此项目。只有在您需要向此仓库添加另一个文件时,才需要更新它。

README.md

此代码仅属于此项目。只有在更改过程或要求时才需要更新。

composer.json

此代码主要来自D8 Pantheon drop,但已定制到与解析不再值得的地步。

scripts/composer/ScriptHandler.php

这是对位于 D8 pantheon drop 中的相同文件的直接复制,并且将被在 km-collaborative profile 上的上游更改覆盖。此文件需要存在于此仓库中,以便 terminus 构建命令成功执行,并且可以随时直接从 drop 将其拉取到此仓库。

scripts/composer/ScriptUpdater.php

此代码位于此仓库中,并在 km-collaborative profile 中维护。它与 drupal scaffolding 功能非常相似,因为它直接从另一个仓库提取文件并在 composer 安装时覆盖它们。然而,与 drupal-scaffold 插件不同,此脚本不需要您声明您希望从子包拉取到站点包的每个文件。