当前位置: 首页 > wzjs >正文

iis搭建网站时 属于默认文档的是哪些公司需要网站开发

iis搭建网站时 属于默认文档的是,哪些公司需要网站开发,做网站必备的注意事项,安做省民改厅网站https://www.bilibili.com/video/BV1RqNRz5Eo6 Jenkins是一款常见的构建管理工具,配置好后操作也很简单,只需去控制台找到对应的项目,再输入分支名即可 如果每次只发个位数的项目到也还好,一个个进去点嘛。但如果一次要发几十个项…

https://www.bilibili.com/video/BV1RqNRz5Eo6


Jenkins是一款常见的构建管理工具,配置好后操作也很简单,只需去控制台找到对应的项目,再输入分支名即可

如果每次只发个位数的项目到也还好,一个个进去点嘛。但如果一次要发几十个项目呢?这就很费时费力了。好在Jenkins提供了rest接口,可以通过接口来进行批量构建


一、功能描述


目的:使用 Jenkins-rest,多线程批量构建项目


构建项目,需要2个参数

  • jobName, 对应jenkins上的名称
  • 构建参数格式Map<String, List<String>>,主要是分支名,如果还有其它的也可以加进去

在这里插入图片描述


构建的代码

IntegerResponse response = jobsApi.buildWithParameters(null, jobName, buildProperties);

构建完之后肯定是要获取到构建结果的

  1. 构建后返回一个 queueId
  2. 通过 queueId,获取 buildNumber
  3. 通过 buildNumber 获取BuildInfo,BuildInfo里有我们想要的结果参数

二、代码实现


因为涉及到公司的代码,这里只给出核心的流程,业务参数就不给出了

private void build(JenkinsBuildRequest request) {logger.info("jenkins构建开始:JenkinsBuildRequest:{}", request);JenkinsBuildInfo jenkinsBuildInfo = initJenkinsBuildInfo(request);try (JenkinsClient client = JenkinsClient.builder().endPoint(jenkinsUrl).credentials(jenkinsCredentials).build()) {JobsApi jobsApi = client.api().jobsApi();QueueApi queueApi = client.api().queueApi();Map<String, List<String>> buildProperties = buildProperties(request);String jobName = request.generateJobName();IntegerResponse response = jobsApi.buildWithParameters(null, jobName, buildProperties);if (!response.errors().isEmpty()) {logger.error("jenkins构建失败: planId:{}, jobName:{}, responseError:{}", request.getPlanId(), jobName, response.errors());jenkinsBuildInfo.setStatus(JenkinsStatusEnum.FAILURE.getValue());updateBuildInfo(request, jenkinsBuildInfo);return;}int queueId = response.value();jenkinsBuildInfo.setQueueId(queueId);// 有queueId 没有number的时候就是构建中jenkinsBuildInfo.setStatus(JenkinsStatusEnum.BUILDING.getValue());updateBuildInfo(request, jenkinsBuildInfo);JenkinsStatusEnum status = pollBuildStatusAndSetBuildInfo(queueId, jobName, jobsApi, queueApi, jenkinsBuildInfo);jenkinsBuildInfo.setStatus(status.getValue());updateBuildInfo(request, jenkinsBuildInfo);logger.info("jenkins构建成功: planId:{}, jobName:{}", request.getPlanId(), jobName);} catch (Exception e) {logger.error("jenkins构建失败: JenkinsBuildRequest:{}", request, e);jenkinsBuildInfo.setStatus(JenkinsStatusEnum.FAILURE.getValue());updateBuildInfo(request, jenkinsBuildInfo);}
}/*** 轮询获取Jenkins的构建状态*/
private JenkinsStatusEnum pollBuildStatusAndSetBuildInfo(int queueId, String jobName, JobsApi jobsApi, QueueApi queueApi, JenkinsBuildInfo jenkinsBuildInfo) throws InterruptedException {Integer buildNumber = null;// 每次轮询间隔3秒,最多轮询200次,共10分钟for (int attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {// 获取构建编号:如果已经构建结束了调用 queueId 会报错找不到资源,所以获取到buildNumber之后,就不用再去获取 QueueItemif (buildNumber == null) {QueueItem queueItem = queueApi.queueItem(queueId);if (queueItem.executable() != null) {buildNumber = queueItem.executable().number();}}// 如果构建编号已确定,获取构建信息并检查构建状态if (buildNumber != null) {BuildInfo buildInfo = jobsApi.buildInfo("", jobName, buildNumber);// 如果构建已完成,设置构建信息并返回状态if (!buildInfo.building()) {jenkinsBuildInfo.setUrl(buildInfo.url());jenkinsBuildInfo.setNumber(buildNumber);return "SUCCESS".equals(buildInfo.result()) ? JenkinsStatusEnum.SUCCESS : JenkinsStatusEnum.FAILURE;}}// 每次轮询间隔3秒Thread.sleep(POLL_INTERVAL_MS);}logger.error("jenkins构建失败:轮询超时: jobName:{}, jenkinsBuildInfo:{}", jobName, jenkinsBuildInfo);return JenkinsStatusEnum.FAILURE;
}

可根据jenkins上打包的节点,多线程去调用 build 方法。 我们是5个节点,最多60个项目,我的线程配置如下

@Bean(name = "jenkinsBuildExecutor")
public ThreadPoolExecutor jenkinsBuildExecutor() {return new ThreadPoolExecutor(4,4,60L, TimeUnit.SECONDS,new ArrayBlockingQueue<>(120));
}

jenkinsUrljenkinsCredentials 就对应访问前缀和帐号密码,格式如下

  • https://jenkins.xxxxx.com/
  • admin:123456

buildProperties 构建参数,看实际需要什么参数,我这里有一个必填的branch和一个选填的 version

private Map<String, List<String>> buildProperties(JenkinsBuildRequest request) {Map<String, List<String>> params = Maps.newHashMapWithExpectedSize(4);params.put("branch", Lists.newArrayList(request.getBranch()));if (StringUtils.isNotBlank(request.getVersion())) {params.put("version", Lists.newArrayList(request.getVersion()));}return params;
}

在这里插入图片描述


JenkinsBuildInfo 是需要存储这次构建的参数,比如 分支、项目名、操作人、操作时间、构建状态、结果链接什么的


pollBuildStatusAndSetBuildInfo 方法是轮训获取结果的,queueApi.queueItem(queueId) 可能会null异常,所以当拿到 buildNumber 之后就不要再去调用它了


updateBuildInfo 方法是去更新本地的数据库,具体实现看实际业务


三、相关文档


https://cdancy.github.io/jenkins-rest/docs/javadoc/


核心 API 模块


API 类别API 名称主要方法功能描述
JobsApi任务管理 APIbuild()触发无参数构建任务
buildWithParameters()触发带参数的构建任务
buildInfo()获取构建详细信息
jobInfo()获取任务详细信息
create()创建新的 Jenkins 任务
delete()删除 Jenkins 任务
config()获取/设置任务配置
disable()禁用任务
enable()启用任务
lastBuildNumber()获取最后构建编号
lastBuildTimestamp()获取最后构建时间戳
progressiveText()获取构建进度日志
QueueApi构建队列 APIqueueItem()获取队列项目信息
cancel()取消队列中的构建
list()列出队列中的所有项目
SystemApi系统信息 APIsystemInfo()获取 Jenkins 系统信息
PluginManagerApi插件管理 APIinstallNecessaryPlugins()安装必要的插件
list()列出当前安装的插件
StatisticsApi统计信息 APIoverallLoad()获取整体负载统计

文章转载自:

http://ToSfjzGt.pLqkz.cn
http://okqNps0I.pLqkz.cn
http://lYg32daD.pLqkz.cn
http://tRGGyI1l.pLqkz.cn
http://ovy5gDzK.pLqkz.cn
http://hkui6H9d.pLqkz.cn
http://9OpCywwp.pLqkz.cn
http://zUwW2Vzh.pLqkz.cn
http://gxwc1R6u.pLqkz.cn
http://Bz2DUufn.pLqkz.cn
http://J4pITaYi.pLqkz.cn
http://y8jINtrv.pLqkz.cn
http://Xt0QIZHk.pLqkz.cn
http://vSoYkjIZ.pLqkz.cn
http://n4Zg8FzZ.pLqkz.cn
http://ud8sy9Cy.pLqkz.cn
http://wvqRS1lp.pLqkz.cn
http://UQZ3rzFo.pLqkz.cn
http://v6GSsRQ2.pLqkz.cn
http://ER4ShUE7.pLqkz.cn
http://Zo04IDED.pLqkz.cn
http://nidtqhVb.pLqkz.cn
http://oYJxkCNB.pLqkz.cn
http://z8EYj4K2.pLqkz.cn
http://kLtKXY1k.pLqkz.cn
http://tb03egQu.pLqkz.cn
http://o1aH6Nwb.pLqkz.cn
http://QzQAhT6E.pLqkz.cn
http://3tLX3AQf.pLqkz.cn
http://og4L6jQV.pLqkz.cn
http://www.dtcms.com/wzjs/642551.html

相关文章:

  • 怎么制作php网站汕头百姓网交友
  • 网站创建一般创建哪种类型抖音小程序锚点解绑是什么意思
  • 外贸建站教程我的世界做壁纸网站
  • 济南专业网站优化大型行业门户网站开发建设方案
  • wordpress 做一个视频站网站建设需要租赁服务器吗
  • 网站开发有哪些职位收费下载网站源码
  • 导购网站一站式建站网站logo位置
  • 备案的网站建设书是什么佛山网站建设开发团队
  • 网站建设html代码如何添加建设工程施工合同司法解释2021
  • 左侧固定导航栏的网站济南房产网官网
  • 凤冈县住房和城乡建设局网站天津公司网站怎样制作
  • 中国诚信建设网站wordpress的主题修改
  • 网站设计模板百度云外贸 模板网站 定制网站
  • 用tomcat做网站做百度商桥网站
  • 网站建设所要花费的资金关于内网站建设的请示
  • 哈尔滨优化网站公司有没有专门做花鸟鱼虫的网站
  • 企业网站搭建方案烟台汽车网站建设
  • 泰安集团网站建设报价吴忠市住房和城乡建设局网站
  • 徐州万网网站建设河南省能源规划建设局网站
  • 周口公司做网站网站设计公司佛山
  • 贵阳做网站软件成都房地产市场
  • 网站 动画 怎么做的制作网站服务器
  • 自己怎么做 优惠券网站久久建筑网不能用积分兑换金币了
  • 网站建设与维护可行性报告dw8网页设计教程
  • 江阴网站设计网站代码调试
  • django 网站开发实例手机应用app开发公司
  • 旅游网站建设主要工作电子宣传册如何制作
  • 淄博网站外包ppt要怎么做网站
  • 360做网站吗iis7建立网站
  • 网站模块名称荆门市住房和城乡建设局网站