利用Java操作Jenkins API实现对Jenkins的控制详解_java jenkins api

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

private JenkinsServer jenkinsServer;
// http 客户端对象
private JenkinsHttpClient jenkinsHttpClient;

/**

  • 构造方法中调用连接 Jenkins 方法
    */
    ViewApi() {
    JenkinsApi jenkinsApi = new JenkinsApi();
    // 连接 Jenkins
    jenkinsServer = JenkinsConnect.connection();
    // 设置客户端连接 Jenkins
    jenkinsHttpClient = JenkinsConnect.getClient();
    }

/**

  • 创建视图
    */
    public void createView() {
    try {
    // 创建一个 xml 字符串,里面设置一个 view 描述信息
    String xml = “<listView _class=“hudson.model.ListView”>\n” +
    “用于测试的视图\n” +
    “”;
    // 创建 view
    jenkinsServer.createView(“test-view”, xml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取视图基本信息
    */
    public void getView() {
    try {
    // 视图名
    String viewName = “test-view”;
    // 获取视图基本信息
    View view = jenkinsServer.getView(viewName);
    System.out.println(view.getName());
    System.out.println(view.getUrl());
    System.out.println(view.getDescription());
    // 获取视图xml信息
    String viewXml = jenkinsHttpClient.get(“/view/” + viewName + “/api/xml”);
    System.out.println(viewXml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取视图配置 XML 信息
    */
    public void getViewConfig() {
    try {
    // 视图名
    String viewName = “test-view”;
    // 获取视图配置xml信息
    String viewConfigXml = jenkinsHttpClient.get(“/view/” + viewName + “/config.xml”);
    System.out.println(viewConfigXml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 更新视图信息
    */
    public void updateView() {
    try {
    // 创建一个 xml 字符串,里面设置一个要修改的某些字段,具体xml可以到jenkins查看
    // 例如,下面xml文件是从地址:https://Jenkins-IP/jenkins/view/test-view/config.xml 获取的
    String xml = “<hudson.model.ListView>\n” +
    “test-view\n” +
    “用于测试的视图1111\n” +
    “false\n” +
    “false\n” +
    “<properties class=“hudson.model.View$PropertyList”/>\n” +
    “\n” +
    “<comparator class=“hudson.util.CaseInsensitiveComparator”/>\n” +
    “\n” +
    “\n” +
    “\n” +
    “<hudson.views.StatusColumn/>\n” +
    “<hudson.views.WeatherColumn/>\n” +
    “<hudson.views.JobColumn/>\n” +
    “<hudson.views.LastSuccessColumn/>\n” +
    “<hudson.views.LastFailureColumn/>\n” +
    “<hudson.views.LastDurationColumn/>\n” +
    “<hudson.views.BuildButtonColumn/>\n” +
    “<hudson.plugins.favorite.column.FavoriteColumn plugin=“favorite@2.3.2”/>\n” +
    “\n” +
    “false\n” +
    “</hudson.model.ListView>”;
    jenkinsServer.updateView(“test-view”, xml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 删除视图
    */
    public void deleteView() {
    try {
    String viewName = “test-view”;
    jenkinsHttpClient.post(“/view/” + viewName + “/doDelete”);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

public static void main(String[] args) {
ViewApi viewApi = new ViewApi();
// 创建视图
//viewApi.createView();
// 获取视图信息
//viewApi.getView();
// 获取视图配置xml信息
//viewApi.getViewConfig();
// 更新视图信息
//viewApi.updateView();
// 删除视图
//viewApi.deleteView();
}
}

4.操作任务(Job)

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.Build;
import com.offbytwo.jenkins.model.Job;
import com.offbytwo.jenkins.model.JobWithDetails;
import com.offbytwo.jenkins.model.MavenJobWithDetails;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**

  • Job(任务) 相关操作
  • 例如对任务的增、删、改、查等操作
    */
    public class JobApi {

// Jenkins 对象
private JenkinsServer jenkinsServer;
// http 客户端对象
private JenkinsHttpClient jenkinsHttpClient;

/**

  • 构造方法中调用连接 Jenkins 方法
    */
    JobApi() {
    JenkinsApi jenkinsApi = new JenkinsApi();
    // 连接 Jenkins
    jenkinsServer = JenkinsConnect.connection();
    // 设置客户端连接 Jenkins
    jenkinsHttpClient = JenkinsConnect.getClient();
    }

/**

  • 创建 Job
    */
    public void ceateJob(){
    try {
    /创建一个流水线任务,且设置一个简单的脚本/
    // 创建 Pipeline 脚本
    String script = “node(){ \n” +
    “echo ‘hello world!’ \n” +
    “}”;
    // xml配置文件,且将脚本加入到配置中
    String xml = “<flow-definition plugin=“workflow-job@2.32”>\n” +
    “测试项目\n” +
    “<definition class=“org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition” plugin=“workflow-cps@2.66”>\n” +
    “\n” +
    “true\n” +
    “\n” +
    “”;
    // 创建 Job
    jenkinsServer.createJob(“test-job”,xml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 更新 Job
  • 更改之前创建的无参数Job,更改其为参数Job
    /
    public void updateJob(){
    try {
    /
    *
  • 更改一个流水线任务,让一个无参数的任务变成带参数任务
    */
    // 创建 Pipeline 脚本,用一个key变量
    String script = “node(){ \n” +
    “echo “${key}” \n” +
    “}”;
    // xml配置文件,且将脚本加入到配置中
    String xml = “<flow-definition plugin=“workflow-job@2.32”>\n” +
    “\n” +
    “测试项目\n” +
    “false\n” +
    “\n” +
    “<hudson.model.ParametersDefinitionProperty>\n” +
    “\n” +
    “<hudson.model.StringParameterDefinition>\n” +
    “key\n” +
    “用于测试的字符变量\n” +
    “hello\n” +
    “false\n” +
    “</hudson.model.StringParameterDefinition>\n” +
    “\n” +
    “</hudson.model.ParametersDefinitionProperty>\n” +
    “\n” +
    “<definition class=“org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition” plugin=“workflow-cps@2.66”>\n” +
    “\n” +
    “true\n” +
    “\n” +
    “false\n” +
    “”;
    // 创建 Job
    jenkinsServer.updateJob(“test-job”,xml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Job 基本信息
    */
    public void getJob(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 获取 Job 名称
    System.out.println(job.getName());
    // 获取 Job URL
    System.out.println(job.getUrl());
    // 获取 Job 下一个 build 编号
    System.out.println(job.getNextBuildNumber());
    // 获取 Job 显示的名称
    System.out.println(job.getDisplayName());
    // 输出 Job 描述信息
    System.out.println(job.getDescription());
    // 获取 Job 下游任务列表
    System.out.println(job.getDownstreamProjects());
    // 获取 Job 上游任务列表
    System.out.println(job.getUpstreamProjects());
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Maven Job 信息
    */
    public void getMavenJob(){
    try {
    // 获取 Job 信息
    MavenJobWithDetails job = jenkinsServer.getMavenJob(“test-job”);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Job 列表
    */
    public void getJobList(){
    try {
    // 获取 Job 列表
    Map<String,Job> jobs = jenkinsServer.getJobs();
    for (Job job:jobs.values()){
    System.out.println(job.getName());
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 View 名称获取 Job 列表
    */
    public void getJobListByView(){
    try {
    // 获取 Job 列表
    Map<String,Job> jobs = jenkinsServer.getJobs(“all”);
    for (Job job:jobs.values()){
    System.out.println(job.getName());
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 查看 Job XML 信息
    */
    public void getJobConfig(){
    try {
    String xml = jenkinsServer.getJobXml(“test-job”);
    System.out.println(xml);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 执行无参数 Job build
    */
    public void buildJob(){
    try {
    jenkinsServer.getJob(“test-job”).build();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 执行带参数 Job build
    /
    public void buildParamJob(){
    try {
    /
    *
  • 例如,现有一个job,拥有一个字符参数"key"
  • 现在对这个值进行设置,然后执行一个输出这个值的脚本
    */
    // 设置参数值
    Map<String,String> param = new HashMap<>();
    param.put(“key”,“hello world!”);
    // 执行 build 任务
    jenkinsServer.getJob(“test-job”).build(param);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 停止最后构建的 Job Build
    */
    public void stopLastJobBuild(){
    try {
    // 获取最后的 build 信息
    Build build = jenkinsServer.getJob(“test-job”).getLastBuild();
    // 停止最后的 build
    build.Stop();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 删除 Job
    */
    public void deleteJob(){
    try {
    jenkinsServer.deleteJob(“test-job”);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 禁用 Job
    */
    public void disableJob(){
    try {
    jenkinsServer.disableJob(“test-job”);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 启用 Job
    */
    public void enableJob(){
    try {
    jenkinsServer.enableJob(“test-job”);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

public static void main(String[] args) {
JobApi jobApi = new JobApi();
// 创建 Job
jobApi.ceateJob();
// 构建无参数的 Job
jobApi.buildJob();
// 构建带参数的 Job
jobApi.buildParamJob();
// 停止最后构建的 Job Build
jobApi.stopLastJobBuild();
// 更新 Job
jobApi.updateJob();
// 获取 Job 信息
jobApi.getJob();
// 获取 Maven 项目 Job
jobApi.getMavenJob();
// 获取 Job 配置xml
jobApi.getJobConfig();
// 获取全部 Job 列表
jobApi.getJobList();
// 根据 view 名称获取 Job 列表
jobApi.getJobListByView();
// 禁用 Job
jobApi.disableJob();
// 启用 Job
jobApi.enableJob();
// 删除 Job
jobApi.deleteJob();
}

}

5.操作编译(build)

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.helper.Range;
import com.offbytwo.jenkins.model.*;
import java.io.IOException;
import java.util.List;

/**

  • Job Build(任务构建) 相关操作
  • 例如对任务 Build 相关的信息进行获取操作、例如获取构建日志
    */
    public class JobBuildApi {

// Jenkins 对象
private JenkinsServer jenkinsServer;
// http 客户端对象
private JenkinsHttpClient jenkinsHttpClient;

/**

  • 构造方法中调用连接 Jenkins 方法
    */
    JobBuildApi() {
    JenkinsApi jenkinsApi = new JenkinsApi();
    // 连接 Jenkins
    jenkinsServer = JenkinsConnect.connection();
    // 设置客户端连接 Jenkins
    jenkinsHttpClient = JenkinsConnect.getClient();
    }

/**

  • 获取 Job 最后的 Build
    */
    public void getJobLastBuild(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 获得最后编译信息
    Build lastBuild = job.getLastBuild();
    // 获取最后成功的编译信息
    Build lastSuccessfulBuild = job.getLastSuccessfulBuild();
    // 获取最后事变的编译信息
    Build lastFailedBuild = job.getLastFailedBuild();
    // 获取最后完成的编译信息
    Build lastCompletedBuild = job.getLastCompletedBuild();
    // 获取最后稳定的编译信息
    Build lastStableBuild = job.getLastStableBuild();
    // 获取最后不稳定的编译信息
    Build lastUnstableBuild = job.getLastUnstableBuild();
    // 获取最后未成功的编译信息
    Build lastUnsuccessfulBuild = job.getLastUnsuccessfulBuild();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Job 首次 Build
    */
    public void getJobFirstBuild(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 获得首次编译信息
    Build firstBuild = job.getFirstBuild();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 根据 Job Build 编号获取编译信息
    */
    public void getJobByNumber(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 根据
    Build numberBuild = job.getBuildByNumber(1);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取全部 Job Build列表
    */
    public void getJobBuildListAll(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 获取全部 Build 信息
    List builds = job.getAllBuilds();
    for (Build build:builds){
    System.out.println(build.getNumber());
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Job 一定范围的 Build 列表
    */
    public void getJobBuildListRange(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 设定范围
    Range range = Range.build().from(1).to(2);
    System.err.println(range.getRangeString());
    // 获取一定范围的 Build 信息
    List builds = job.getAllBuilds(range);
    for (Build build:builds){
    System.out.println(build.getNumber());
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Build 基本信息
    */
    public void getJobBuildInfo(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 这里用最后一次编译来示例
    Build build = job.getLastBuild();
    // 获取构建的 URL 地址
    System.out.println(build.getUrl());
    // 获取构建编号
    System.out.println(build.getNumber());
    // 获取测试报告
    //build.getTestReport();
    // 获取测试结果
    //build.getTestResult();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Build 详细信息
    */
    public void getJobBuildDetailInfo(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 这里用最后一次编译来示例
    BuildWithDetails build = job.getLastBuild().details();
    // 获取构建的显示名称
    System.out.println(build.getDisplayName());
    // 获取构建的参数信息
    System.out.println(build.getParameters());
    // 获取构建编号
    System.out.println(build.getNumber());
    // 获取构建结果,如果构建未完成则会显示为null
    System.out.println(build.getResult());
    // 获取执行构建的活动信息
    System.out.println(build.getActions());
    // 获取构建持续多少时间(ms)
    System.out.println(build.getDuration());
    // 获取构建开始时间戳
    System.out.println(build.getTimestamp());
    // 获取构建头信息,里面包含构建的用户,上游信息,时间戳等
    List buildCauses = build.getCauses();
    for (BuildCause bc:buildCauses){
    System.out.println(bc.getUserId());
    System.out.println(bc.getShortDescription());
    System.out.println(bc.getUpstreamBuild());
    System.out.println(bc.getUpstreamProject());
    System.out.println(bc.getUpstreamUrl());
    System.out.println(bc.getUserName());
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 获取 Build Log 日志信息
    */
    public void getJobBuildLog(){
    try {
    // 获取 Job 信息
    JobWithDetails job = jenkinsServer.getJob(“test-job”);
    // 这里用最后一次编译来示例
    BuildWithDetails build = job.getLastBuild().details();
    // 获取构建的日志,如果正在执行构建,则会只获取已经执行的过程日志

// Text格式日志
System.out.println(build.getConsoleOutputText());
// Html格式日志
System.out.println(build.getConsoleOutputHtml());

// 获取部分日志,一般用于正在执行构建的任务
ConsoleLog consoleLog = build.getConsoleOutputText(0);
// 获取当前日志大小
System.out.println(consoleLog.getCurrentBufferSize());
// 是否已经构建完成,还有更多日志信息
System.out.println(consoleLog.getHasMoreData());
// 获取当前截取的日志信息
System.out.println(consoleLog.getConsoleLog());
}catch (IOException e) {
e.printStackTrace();
}
}

/**

  • 获取正在执行构建任务的日志信息
    */
    public void getBuildActiveLog(){
    try {
    // 这里用最后一次编译来示例
    BuildWithDetails build = jenkinsServer.getJob(“test-job”).getLastBuild().details();
    // 当前日志
    ConsoleLog currentLog = build.getConsoleOutputText(0);
    // 输出当前获取日志信息
    System.out.println(currentLog.getConsoleLog());
    // 检测是否还有更多日志,如果是则继续循环获取
    while (currentLog.getHasMoreData()){
    // 获取最新日志信息
    ConsoleLog newLog = build.getConsoleOutputText(currentLog.getCurrentBufferSize());
    // 输出最新日志
    System.out.println(newLog.getConsoleLog());
    currentLog = newLog;
    // 睡眠1s
    Thread.sleep(1000);
    }
    }catch (IOException | InterruptedException e) {
    e.printStackTrace();
    }
    }

public static void main(String[] args) {
JobBuildApi jobBuildApi = new JobBuildApi();
// 获取 Job 最后的 Build
jobBuildApi.getJobLastBuild();
// 获取 Job 首次 Build
jobBuildApi.getJobFirstBuild();
// 根据 Job Build 编号获取编译信息
jobBuildApi.getJobByNumber();
// 获取 Build 全部列表
jobBuildApi.getJobBuildListAll();
// 获取一定范围的 Build 列表
jobBuildApi.getJobBuildListRange();
// 获取 Build 基本信息
jobBuildApi.getJobBuildInfo();
// 获取 Build 详细信息
jobBuildApi.getJobBuildDetailInfo();
// 获取 Build Log 日志信息
jobBuildApi.getJobBuildLog();
// 获得正在执行的编译 Log 日志信息
jobBuildApi.getBuildActiveLog();
}
}

6.其它Jenkins相关操作

此类主要用于操作Jenkins中的基本信息,例如关闭Jenkins、获取Jenkins插件信息等。

import java.io.IOException;
import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.model.*;
import java.util.List;
import java.util.Map;

/**

  • 获取 Jenkins 相关信息
  • 例如获取插件信息、获取Label信息、关闭Jenkins等
    */
    public class JenkinsApi {

// Jenkins 对象
private JenkinsServer jenkinsServer;

/**

  • 构造方法中调用连接 Jenkins 方法
    */
    JenkinsApi(){
    jenkinsServer = JenkinsConnect.connection();
    }

/**

  • 获取主机信息
    */
    public void getComputerInfo() {
    try {
    Map<String, Computer> map = jenkinsServer.getComputers();
    for (Computer computer : map.values()) {
    // 获取当前节点-节点名称
    System.out.println(computer.details().getDisplayName());
    // 获取当前节点-执行者数量
    System.out.println(computer.details().getNumExecutors());
    // 获取当前节点-执行者详细信息
    List executorList = computer.details().getExecutors();
    // 查看当前节点-是否脱机
    System.out.println(computer.details().getOffline());
    // 获得节点的全部统计信息
    LoadStatistics loadStatistics = computer.details().getLoadStatistics();
    // 获取节点的-监控数据
    Map<String, Map> monitorData = computer.details().getMonitorData();
    //…
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 重启 Jenkins
    */
    public void restart() {
    try {
    jenkinsServer.restart(true);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 安全重启 Jenkins
    */
    public void safeRestart() {
    try {
    jenkinsServer.safeRestart(true);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 安全结束 Jenkins
    */
    public void safeExit() {

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
tics = computer.details().getLoadStatistics();
// 获取节点的-监控数据
Map<String, Map> monitorData = computer.details().getMonitorData();
//…
}
} catch (IOException e) {
e.printStackTrace();
}
}

/**

  • 重启 Jenkins
    */
    public void restart() {
    try {
    jenkinsServer.restart(true);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 安全重启 Jenkins
    */
    public void safeRestart() {
    try {
    jenkinsServer.safeRestart(true);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

/**

  • 安全结束 Jenkins
    */
    public void safeExit() {

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-kvWq8ggf-1713468078132)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins 是一个开源的自动化部署工具,用于自动化构建、测试和部署软件。下面是 Jenkins 部署步骤的详细介绍: 1. 安装 Jenkins 首先需要在服务器上安装 JenkinsJenkins 可以在 Windows、Linux 和 macOS 等操作系统上运行。Jenkins 的安装包可以从官方网站下载。安装完成后,启动 Jenkins。 2. 配置 Jenkins 在启动 Jenkins 后,需要进行一些基本的配置,例如设置管理员账户、插件安装等。插件是 Jenkins 的核心组件,提供了各种功能,例如构建、测试、部署等。 3. 创建项目 在 Jenkins 中,项目是指需要进行构建、测试和部署的软件项目。在创建项目时,需要选择项目类型、配置源代码管理、构建选项等。 4. 配置构建脚本 构建脚本是指 Jenkins 在构建项目时需要执行的脚本。可以使用 Shell、Python、Groovy 等语言编写构建脚本。构建脚本可以执行编译、测试、打包等操作。 5. 配置自动化测试 自动化测试是指在构建项目时自动运行的测试。可以使用不同的测试框架,例如 JUnit、Selenium 等。 6. 配置部署 部署是指将已经构建好的软件部署到目标环境中。在 Jenkins 中,可以使用不同的插件进行部署,例如 Deploy to Container、Deploy to AWS 等。 7. 配置触发器 触发器是指触发 Jenkins 进行构建的条件。可以根据定时器、代码提交、其他项目构建等条件来触发构建。 8. 运行构建 最后一步是运行构建。可以手动触发构建,也可以让 Jenkins 根据配置好的触发器自动触发构建。 以上就是 Jenkins 部署步骤的详细介绍。需要注意的是,Jenkins 的部署过程需要根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值