Gitee Jenkins Plugin 是Gitee基于 GitLab Plugin 开发的 Jenkins 插件。用于配置 Jenkins 触发器,接受Gitee平台发送的 WebHook 触发 Jenkins 进行自动化持续集成或持续部署,并可将构建状态反馈回Gitee平台。
Connection name
中输入 Gitee
或者你想要的名字Gitee host URL
中输入Gitee完整 URL地址: https://gitee.com
(Gitee私有化客户输入部署的域名)Credentials
中如还未配置Gitee APIV5 私人令牌,点击 Add
- > Jenkins
Domain
选择 Global credentials
Kind
选择 Gitee API Token
Scope
选择你需要的范围Gitee API Token
输入你的Gitee私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
ID
, Descripiton
中输入你想要的 ID 和描述即可。Credentials
选择配置好的 Gitee APIV5 TokenAdvanced
,可配置是否忽略 SSL 错误(视您的Jenkins环境是否支持),并可设置链接测超时时间(视您的网络环境而定)Test Connection
测试链接是否成功,如失败请检查以上 3,5,6 步骤。配置成功后如图所示:
前往 Jenkins -> New Item , name 输入 'Gitee Test',选择 Freestyle project
保存即可创建构建项目。
任务全局配置中需要选择前一步中的Gitee链接。前往某个任务(如'Gitee Test')的 Configure -> General,Gitee connection 中选择前面所配置的Gitee链接,如图:
前往某个任务(如'Gitee Test')的 Configure -> Source Code Management 选项卡
git@your.gitee.server:gitee_group/gitee_project.git
origin
, Refspec 字段输入 +refs/heads/*:refs/remotes/origin/* +refs/pull/*/MERGE:refs/pull/*/MERGE
origin/${giteeSourceBranch}
pull/${giteePullRequestIid}/MERGE
origin
${ReleaseBranch}
即您要合并的默认分支(发布分支)配置如图所示:
前往任务配置的触发器构建: Configure -> Build Triggers 选项卡
Enabled Gitee triggers
勾选您所需要的构建触发规则,如 Push Event
, Opened Merge Request Events
,勾选的事件会接受WebHook,触发构建。目前支持触发事件有:
Build Instruction Filter
:
None
: 无过滤[ci-skip] skip build
:commit message 或者 PR 说明包含 [ci-skip]
时,跳过构建触发。[ci-build] trigger build
:commit message 或者 PR 说明包含 [ci-build]
时,触发构建。Ignore last commit has build
该选项可以跳过已经构建过的 Commit 版本。Cancel incomplete build on same Pull Requests
该选项在 PR 触发构建时,会判断是否存在相同 PR 且未完成的构建,有则取消未完成构建,再进行当前构建。Ignore Pull Request conflicts
该选项在 PR 触发构建时,会根据 PR 冲突情况选择是否进行构建。Allowed branches
可以配置允许构建的分支,目前支持分支名和正则表达式的方式进行过滤。Secret Token for Gitee WebHook
该选项可以配置 WebHook 的密码,该密码需要与Gitee WebHook配置的密码一致方可触发构建。前往任务配置的构建后配置: Configure -> Post-build Actions 选项卡
Add post-build action
下拉框选择:Add note with build status on Gitee pull requests
Advanced
中可以配置:
点击 Add post-build action
下拉框选择:Accept Gitee pull request on success
进入源码管理配置中设置的Gitee项目中,进入 管理 -> WebHooks
触发器配置:Build when a change is pushed to Gitee. Gitee webhook URL
中所示 URL,如:: http://127.0.0.1:8080/jenkins/project/fu
目前支持环境变量见以下函数,其中不同的 WebHook 触发可能导致有些变量为空,具体请安装插件 EnvInject Plugin,于构建中查看 Environment Variables
public Map<String, String> getBuildVariables() {
MapWrapper<String, String> variables = new MapWrapper<>(new HashMap<String, String>());
variables.put("giteeBranch", branch);
variables.put("giteeSourceBranch", sourceBranch);
variables.put("giteeActionType", actionType.name());
variables.put("giteeUserName", userName);
variables.put("giteeUserEmail", userEmail);
variables.put("giteeSourceRepoHomepage", sourceRepoHomepage);
variables.put("giteeSourceRepoName", sourceRepoName);
variables.put("giteeSourceNamespace", sourceNamespace);
variables.put("giteeSourceRepoURL", sourceRepoUrl);
variables.put("giteeSourceRepoSshUrl", sourceRepoSshUrl);
variables.put("giteeSourceRepoHttpUrl", sourceRepoHttpUrl);
variables.put("giteePullRequestTitle", pullRequestTitle);
variables.put("giteePullRequestDescription", pullRequestDescription);
variables.put("giteePullRequestId", pullRequestId == null ? "" : pullRequestId.toString());
variables.put("giteePullRequestIid", pullRequestIid == null ? "" : pullRequestIid.toString());
variables.put("giteePullRequestTargetProjectId", pullRequestTargetProjectId == null ? "" : pullRequestTargetProjectId.toString());
variables.put("giteePullRequestLastCommit", lastCommit);
variables.put("giteePushCreated", created ? "true" : "false");
variables.put("giteePushDeleted", deleted ? "true" : "false");
variables.putIfNotNull("giteePullRequestState", pullRequestState);
variables.putIfNotNull("giteeMergedByUser", mergedByUser);
variables.putIfNotNull("giteePullRequestAssignee", pullRequestAssignee);
variables.put("giteeTargetBranch", targetBranch);
variables.put("giteeTargetRepoName", targetRepoName);
variables.put("giteeTargetNamespace", targetNamespace);
variables.put("giteeTargetRepoSshUrl", targetRepoSshUrl);
variables.put("giteeTargetRepoHttpUrl", targetRepoHttpUrl);
variables.put("giteeBefore", before);
variables.put("giteeAfter", after);
variables.put("giteeBeforeCommitSha", before);
variables.put("giteeAfterCommitSha", after);
variables.put("giteeRef", ref);
variables.put("ref", ref);
variables.put("beforeSha", beforeSha);
variables.put("isTag", isTag);
variables.put("sha", sha);
variables.put("status", status);
variables.put("stages", stages);
variables.put("createdAt", createdAt);
variables.put("finishedAt", finishedAt);
variables.put("duration", buildDuration);
variables.put("jsonBody", jsonBody);
variables.put("noteBody", noteBody);
variables.putIfNotNull("giteeTriggerPhrase", triggerPhrase);
return variables;
}
如在使用过程中有任何疑问,欢迎在 Gitee Jenkins Issue 中反馈。
反馈前可按以下步骤获取更多日志以便排查问题:
欢迎提交 CI 场景特性建议或者直接提交 PR 贡献代码。
打包 hpi 文件在仓库目录中执行: mvn package
直接运行测试执行:mvn hpi:run