42.5. 集成远程 Git 存储库
在以下示例中,您可以使用 post-commit Git hook 和 Java 代码将 Business Central 与远程 Git 存储库集成。有关 Java 代码示例,请参阅 Business Central post-commit Git Hooks Integration。这个示例提供以下功能:
-
自动生成模板
.gitremote
配置文件 -
对所需参数验证
.gitremote
配置文件 -
Git 会忽略
.gitremote
文件的 ignore 参数中定义的模式 - 用户的信息和通知输出
- 支持 GitLab 和 GitHub 令牌身份验证
- 支持 GitLab 组和子组项目创建
- 支持 GitHub 机构存储库创建
先决条件
- Red Hat Process Automation Manager 安装在 Red Hat JBoss EAP 7.4 服务器实例中。
- 已安装 Java Development Kit(JDK)8。
- 已安装 Maven。
流程
在终端窗口中,将 GitHub 存储库克隆到您的系统:
$ git clone https://github.com/kiegroup/bc-git-integration-push.git
进入克隆的存储库:
$ cd bc-git-integration-push
执行 Maven 清理安装:
$ mvn clean install
在
EAP_HOME
目录中创建一个/hooks
文件夹:$ mkdir -p _EAP_HOME_/hooks/
将
git-push-2.1-SNAPSHOT.jar
复制到EAP_HOME/hooks/
文件夹:$ cp bc-git-integration-push/target/git-push-2.1-SNAPSHOT.jar _EAP_HOME_/hooks/
可选:要创建模板
.gitremote
配置文件,请运行git-push-2.1-SNAPSHOT.jar
:$ java -jar git-push-2.1-SNAPSHOT.jar
模板
.gitremote
配置文件示例#This is an auto generated template empty property file provider=GIT_HUB login= password= token= remoteGitUrl=https://api.github.com/ useSSH=false ignore=.*demo.*, test.* githubOrg=OrgName gitlabGroup=Group/subgroup
修改
.gitremote
配置文件参数。表 42.1. .gitremote 参数示例 参数 描述 provider
Git 提供程序。只有两个值才会被接受: GIT_HUB 和 GIT_LAB。必填
login
Git 供应商的用户名。必填
password
纯文本密码。如果提供了
令牌
,则不需要此项。token
生成的令牌,以替换基于
不安全连接
。注:如果没有设置警告,会显示一个警告,您使用的是不受保护的连接。如果的用户名和密码
提供密码
,则不需要此项。注意:GitLab 只支持令牌身份验证。remoteGitUrl
用于任何供应商的公共供应商 URL 或本地托管企业。必需。注:公共 GitHub URL 应该是 API URL。例如, api.github.com。
useSSH
布尔值以允许 SSH 协议将更改推送到远程存储库。可选。默认 = false。注: 这个参数使用本地
~/.ssh/
目录来获取 SSH 配置。Ignore
以逗号分隔的正则表达式,忽略与任何这些表达式匹配的项目名称。可选。
githubOrg
如果 GitHub 用作提供程序,则定义存储库组织。可选。
gitlabGroup
如果 GitLab 用作提供程序可选,则定义存储库组和子组。
在
EAP_HOME/hooks
中创建post-commit
Git hook 文件:$ touch post-commit
将
post-commit
文件的权限设置为755
:$ chmod 755 post-commit
将
#!/bin/bash
和 code 添加到post-commit
文件中,以执行git-push-2.1-SNAPSHOT.jar
:$ echo "#\!/bin/bash\njava -jar $APP_SERVER_HOME/hooks/git-push-2.1-SNAPSHOT.jar" > hooks/post-commit
以
-Dorg.uberfire.nio.git.hooks
环境变量开始 Business Central。例如:$ ./standalone.sh -c standalone-full.xml -Dorg.uberfire.nio.git.hooks=_EAP_HOME_/hooks
要使用执行 Java 代码的 post-commit Git hook,您必须使用以下 Java 库:
- JGit :用于与内部 Business Central Git 存储库交互。
- 用于 Java 的 GitHub API :用于与 GitHub 通信。
有关 post-commit Git hook 和 Java 代码示例的更多信息,请参阅 Business Central post-commit Git Hooks Integration。