code711 / siteconfiggitsync
将config/site中的更改同步回您的git仓库
Requires
- php: 7.4.*||8.0.*||8.1.*||8.2.*||8.3.*
- code711/siteconfigurationevents: ^1.0
- m4tthumphrey/php-gitlab-api: ^11.5
- typo3/cms-core: ^11.5||^12.0||^13.0
Requires (Dev)
- saschaegerer/phpstan-typo3: *
- typo3/cms-backend: ^13.0
- typo3/cms-frontend: ^13.0
- typo3/cms-install: ^13.0
- typo3/cms-lowlevel: ^13.0
- typo3/cms-tstemplate: ^13.0
- typo3/coding-standards: *
README
有时,对于TYPO3项目来说,将网站配置yaml文件与网站包一起在git中管理是必要的。这些项目存在的问题是,网站管理员不能在不将这些更改手动带回到git仓库的情况下更改网站配置中的设置,以避免它们在下次CI/CD运行或发布时被覆盖。
此扩展旨在通过自动将更改推送到您的gitlab实例来解决此问题。在此过程中,该扩展将创建一个分支,提交所做的更改,并创建一个merge-request,您可以在gitlab中管理它,而无需手动合并yaml文件。您将因为merge-request而收到更改通知。
服务器上不需要git二进制文件,所有操作都通过GitLab API完成。目前仅支持GitLab,可以是自托管的或在gitlab.com上。
变更日志
1.0.3
- 修复问题 #1
- 修复了当项目不是组的一部分时,在扩展配置界面中读取用户列表的问题
- 将LoggerAwareInterface添加到AfterConfigurationWriteListener
1.0.1
修复README.md
1.0.0
支持TYPO3 12
0.10.0
将SiteConfiguration类的XCLASS外部化到 EXT:siteconfigurationevents。Composer安装应自动将此扩展作为依赖项拉取。将git相关操作重构为事件监听器。
0.9.x 首次发布
设置/安装
通过使用以下命令安装此扩展后
composer req code711/siteconfiggitsync您需要在GitLab项目页面创建一个具有至少“开发者”权限的API令牌。
这可以在您的GitLab中项目下的“设置->访问令牌”中完成。需要开发者权限,因为只有从这个级别开始才能创建分支和发布merge-request。
在“令牌名称”字段中输入对这项任务有意义的名称,因为它将写在提交或merge-request旁边。例如,“来自TYPO3的外部网站更改”。
将“到期日期”设置为您的喜好。
在“选择角色”中选择“开发者”
对于范围选择“api”。其他范围不足以完成我们想要执行的任务。
在按下“创建项目访问令牌”按钮后,您将获得一系列字母数字字符。复制此字符串。这是您的令牌。
在您的TYPO3后台导航到设置->扩展配置,并打开siteconfiggitsync扩展的折叠面板
在gitlab url字段中添加到您项目仓库的完整URL,不带任何.git。就像在浏览器中一样。例如
https://gitlab.com/mycompany/customerproject
在Gitlab API Auth Token字段中输入您刚刚生成的令牌。
现在,按“保存'siteconfiggitsync'配置”按钮,并关闭窗口。重新打开窗口,再次导航到siteconfiggitsync折叠面板并打开它。'main_branch'和'Who to assign a merge request'字段应分别填写该项目中可用的分支和允许合并merge-requests的成员。
选择代表生产分支的分支,即应该从该分支提交更改。
可选地选择一个成员,将合并请求分配给他。如果没有选择成员,合并请求将不会分配给任何人,是否会在创建时收到通知取决于您的配置。
现在再次按下“保存 'siteconfiggitsync' 配置”按钮,当通过后端接口更改站点配置时,您应该准备好接受合并请求。
注意和限制
- 重命名不是使用 git-move 完成的,而是通过检查新文件并删除旧文件来完成的。在开发此扩展时,移动操作对我没有起作用。这可能在以后重新审视。
- 此扩展被标记为beta,因为并非所有场景都已测试。目前对我来说这是“正常工作”的
- Gitlab服务器必须可以通过http或https从生产服务器访问。Gitlab api 实现使用 guzzlehttp,因此应该可以配置代理,但我还没有研究这个问题。欢迎在这方面提供帮助
- 应该可以添加bitbucket和github支持。这可能在以后添加