插件地址:https://gitee.com/oschina/Gitee-Jenkins-Plugin
Gitee Jenkins Plugin 是码云基于 GitLab Plugin 开发的 Jenkins 插件。用于配置 Jenkins 触发器,接受码云平台发送的 WebHook 触发 Jenkins 进行自动化持续集成或持续部署,并可将构建状态反馈回码云平台。
Connection name
中输入 Gitee
或者你想要的名字Gitee host URL
中输入码云完整 URL地址: https://gitee.com
(码云私有化客户输入部署的域名)Credentials
中如还未配置码云 APIV5 私人令牌,点击 Add
- > Jenkins
Domain
选择 Global credentials
Kind
选择 Gitee API Token
Scope
选择你需要的范围Gitee API Token
输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokensID
, Descripiton
中输入你想要的 ID 和描述即可。Credentials
选择配置好的 Gitee APIV5 TokenAdvanced
,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而定)Test Connection
测试链接是否成功,如失败请检查以上 3,5,6 步骤。前往 Jenkins -> New Item , name 输入 'Gitee Test',选择 Freestyle project
保存即可创建构建项目。
任务全局配置中需要选择前一步中的码云链接。前往某个任务(如'Gitee Test')的 Configure -> General,Gitee connection 中选择前面所配置的码云联机,如图:
前往某个任务(如'Gitee Test')的 Configure -> Source Code Management 选项卡
[email protected]: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,触发构建。目前支持触发事件有:
Enable [ci-skip]
该选项可以开启支持 [ci-skip]
指令,只要commit message 中包含 [ci-skip]
,当前commit 即可跳过构建触发。Ignore last commit has build
该选项可以跳过已经构建过的 Commit 版本。Allowed branches
可以配置允许构建的分支,目前支持分支名和正则表达式的方式进行过滤。Secret Token for Gitee WebHook
该选项可以配置 WebHook 的密码,该密码需要与码云 WebHook配置的密码一致方可触发构建。前往任务配置的构建后配置: Configure -> Post-build Actions 选项卡
构建结果回评至码云
Add post-build action
下拉框选择:Add note with build status on Gitee pull requests
Advanced
中可以配置:
构建成功自动合并PR
点击 Add post-build action
下拉框选择:Accept Gitee pull request on success
进入源码管理配置中设置的码云项目中,进入 管理 -> WebHooks
触发器配置:Build when a change is pushed to Gitee. Gitee webhook URL
中所示 URL,如:: http://127.0.0.1:8080/jenkins/project/fu测试推送触发构建
测试PR触发构建
目前支持环境变量见以下函数,其中不同的 WebHook 触发可能导致有些变量为空,具体请安装插件 EnvInject Plugin,于构建中查看 Environment Variables
public MapgetBuildVariables() { MapWrapper variables = new MapWrapper<>(new HashMap ()); 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("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.putIfNotNull("giteeTriggerPhrase", triggerPhrase); return variables; }
如在使用过程中有任何疑问,欢迎在 Gitee Jenkins Issue 中反馈。
反馈前可按以下步骤获取更多日志以便排查问题:
欢迎提交 CI 场景特性建议或者直接提交 PR 贡献代码。
打包 hpi 文件在仓库目录中执行: mvn package
直接运行测试执行:mvn hpi:run