精华内容
下载资源
问答
  • 知识图谱的自动构建

    千次阅读 2019-12-31 09:00:00
    导读:知识图谱的构建包括逻辑建模、隐含空间分析、人机交互和本体模型支撑等多种方法。我们将分析各种构建方法的问题和挑战,指出自动构建的要素和应用场景。——背景——知识图谱是明略科技的核心技...

    导读:知识图谱的构建包括逻辑建模、隐含空间分析、人机交互和本体模型支撑等多种方法。我们将分析各种构建方法的问题和挑战,指出自动构建的要素和应用场景。

    ——背景——

    知识图谱是明略科技的核心技术。知识图谱的自动构建和数据挖掘有一定的关联,自动构建知识图谱和手动构建不是一个概念。明略科技的新产品正在做到:专家在台上讲话,后台图谱系统可自动同步构建知识图谱。

    提到知识工程的发展,首先是80年代蓬勃发展的专家系统,随后逐步发展至90年代的万维网知识库。90年代的万维网1.0,以信息收集为主;后面加入人工因素,即人和信息一起,此时进入万维网2.0阶段。

    "知识图谱" 这一概念是2006年由谷歌提出,谷歌出于搜索引擎需要而提出这样的名词,其技术核心类似于60年代提出的语义网络。

    吴信东教授于2014提出 "HACE定理",指出大数据始于异构 ( Heterogeneous )、自治 ( Autonomous ) 的多源海量数据,旨在寻求探索复杂 ( Complex )、演化 ( Evolving ) 的数据关联和方法,这是对大数据本质特征的提炼。

    大数据在实现的过程中分为3层结构:最底层是数据平台 ( Big Data Mining Platform ),做数据的收集、整合、加工等;中间的一层是应用领域,涉及到语义、专业领域知识等方面;最外层是大数据分析实现的算法,涉及到机器学习、数据挖掘等。

    从大数据 ( BigData ) 到大知识 ( BigKE ),体现的是基于数据的知识提炼过程。"大" 知识的特点除了量大,更主要的是 "质量没有保证";我们的目标是,在浩瀚无边的知识海洋中,如何针对当前问题找到相关的知识进行问题求解,实现 "量 -> 质 -> 序" 的过渡。

    基于大数据的特点,实现大数据到大知识的跳跃,这一过程中经历了信息检索的不断完善和分析;从知识图谱构建的角度来看,这一过程经历了人工构建-群体构建-自动构建这样的技术路线。详见下图。

    本文将着重讲解 "自动构建"。自动构建的过程中,如果数据是结构化的 ( 例如图表数据 ),已知属性名称、属性间的层次结构等,构建知识图谱相对较为容易;如果缺乏以上信息,则只能通过文本信息等非结构化数据中提炼知识构建知识图谱,技术上将面临很多挑战。

    结构化数据通常具有良好的布局结构,因此识别和抽取比较容易,可针对特定格式编写模板进行抽取,抽取准确率也比较高。早在知识图谱技术大受追捧之前的上个世纪90年代,国内便开始了 "从关系型描述数据库生成语义网络的方法" 研究工作。

    非结构化数据上的知识图谱研究,主要集中非结构化文本数据处理上。由于自然语言表达的多样性、灵活性,实体和关系在文本中一般找不到明确的标识,这使得从中抽取实体和识别语义关系非常困难。

    下面以一个实例来描述非结构化数据知识图谱的构建过程。文本数据来源于百度百科,介绍秦始皇的生平事迹。原文如下:


    基于以上文本,初步构建知识图谱如下:

    上述图谱抽取的信息不是十分完全,但是大体上能够涵盖和秦始皇相关的各种各样的人物以及各种各样的关系。

    ——构建方法——

    这一部分会主要介绍现有的常见的知识图谱的构建方法。

    知识图谱的构建方法,主要包含4大类:逻辑建模,隐含空间分析,人机交互,本体模型。

    1. 逻辑建模

    上一部分提到的 "秦始皇" 的实例,就是根据逻辑建模提炼生成的。

    将名词和关系进行抽取,如果涉及到事件,将会涉及到条件概率、先验概率等。

    在逻辑建模中,逻辑+概率作为可能世界的概率度量;对逻辑进行概率化,并利用知识库中的每一条关系三元组对可能世界概率进行约束。

    逻辑建模中会涉及到逻辑变量和规则推理等方面的模型,其代表模型是马尔可夫逻辑网模型。将马尔可夫逻辑网看作一个构造马尔可夫网的模板,它维护一个基于一阶逻辑的规则库,并对每一个逻辑规则附上了权重,以此对可能的世界进行软约束。其概率模型为:

    其中,g(x)=1 表示该实例化的规则为真,反之为假;F 为 Markov 网中所有谓词规则的集合,Gfi 是利用所有原子事实去实例化规则 fi 后的集合。

    然而逻辑建模的缺陷也很明显:随着知识图谱的规模爆发性地增长,即使利用马尔可夫毯 ( Markov Blanket ) 等局部依赖假设,对知识图谱中所有知识实例进行建模也是不可行的。

    2. 隐含空间分析

    第二种知识图谱构建方法是隐含空间分析。有时候一句简单的语句的背后会包含一些隐含的逻辑关系,例如:吴信东 ( 首席科学家 ) 给吴明辉 ( 董事长 ) 打电话。这一句简单的语句,背后会隐含各种各样的关系,例如:首席科学家应该做哪些事;和董事长应该讨论的内容等。目前隐含空间分析主要尚处于研究阶段,应用还不是很广泛。

    • 距离模型

    隐含空间分析的基本模型是距离模型,代表方法是结构表示 ( StructuredEmbedding,SE ):对于一个三元组 ( h, r, t ),SE 将头实体向量和尾实体向量通过关系的两个矩阵投影到关系的对应空间中,然后在该空间中计算两投影向量的距离。SE 模型的损失函数使用的是 L1 范数:

    由于 SE 模型对头、尾实体使用两个不同的矩阵进行投影,协同性较差,因此往往无法精确刻画两实体与关系之间的语义联系。由此提出了隐变量模型:

    • 隐变量模型 ( LatentFactorModel,简称 LFM )

    LFM 模型提出基于关系的双线性变换,刻画实体和关系的二阶联系,其评分函数为:

    其中,Mr∈Rdxd 为关系 r 对应的双线性变换矩阵。

    LFM 模型通过简单有效的方法刻画了实体和关系的语义联系,协同性较好,计算复杂度低。如何具体描述和刻画这个隐含的空间,会涉及到系数问题,于是引出张量神经模型:

    • 张量神经模型 ( neuraltensornetwork,简称 NTN ) 

    基本思想:用双线性张量取代传统神经网络中的线性变换层,在不同维度下将头、尾实体向量联系起来。

    然而,NTN 模型计算复杂度非常高,需要大量三元组样例才能得到成分学习,因而在大规模稀疏知识图谱上的效果较差。由此引出矩阵分解模型:

    • 矩阵分解模型

    矩阵分解模型的代表方法是 RASACL 模型。

    知识库三元组构成一个大的张量 X,如果三元组 ( h, r, t ) 存在,则 Xhrt=1,否则为0。张量分解 ( 矩阵分解 ) 旨在将每个三元组 ( h, r, t ) 对应的张量值 Xhrt 分解为实体和关系表示,使得 Xhrt 尽量地接近于 lhMrlt 。这种模型的缺陷是:时间复杂度和空间复杂度较高,且在大规模数据集上效率低、可扩展性差。

    • 翻译模型

    翻译模型的代表方法是 TransE 模型。对于每个三元组 ( h, r, t ),将关系 r 的向量 lr 看作头实体向量 lh 和尾实体向量 lt 的平移。

    TransE 模型的参数较少,计算复杂度低,能直接建立实体和关系之间的复杂语义联系,但是在处理复杂关系时性能显著降低。

    3. 人机交互

    人机交互 ( Human-Computer Interaction, HCI ):是指人与计算机之间使用某种对话语言,以一定的交互方式,为完成确定任务的人与计算机之间的信息交换过程。常见的方式就是:存在一个系统,什么都不懂,不断地向用户问问题;随着用户对问题的回答,系统逐步将图谱建立起来。

    SIKT ( structured interactive knowledge transfer program ) 是吴教授最早采用人机交互方式构建知识图谱的代表性工作之一,早期称之为 "推理网络",主要包括以下特色:

    • 结构化人机交互知识库构建。

    • 基于 "rule schema + rule body" 的知识表示形式。

    • 程序通过交互接口指导学科专家自顶向下输入领域知识。

    • 生成的知识库加上来自 KEShell 的预定义推理引擎构成最终的可执行程序。

    人机交互的另一种方法,也是吴教授的项目课题,是 IAKO ( Interactive Acquisition of Knowledge Objects ),即半结构化的知识图谱构建。

    • 利用面向对象编程的优势,IAKO 基于知识对象 ( Knowledge Object ) 的表示方法,提出了一个面向对象的交互知识构建系统。

    • IAKO 能够从0开始,通过领域专家交互方式生成一套完整的知识库,且进行知识和规则校验,以保障知识库的可执行性。

    • 基于知识对象的知识表示方式可以将规则融入对象中,达到 SIKT 中一组 "rule schema + rule body" 的知识表示能力。

    • IAKO 能够使得领域专家构建便携的可重用的知识库。

    人机交互的一种最新方法,是吴教授任职明略科技后同明略科技董事长吴明辉一起提出的一种模型,叫做 "HAO 模型",该模型有效地融合了 Human Intelligence (HI)、Artificial Intelligence (AI)、Organizational Intelligence 这三种 "智慧",在以人为本、人机协同的基础上,加入了面向行业应用、具体细分领域的 Organizational Intelligence。下图就是面向行业构建的知识图谱框架。

    数据感知 -> 人机交互 -> 行动

    在明略科技所涉及的公安领域,知识图谱是巨大的:在一个具体的公安数据分析系统里,有16亿个节点,40亿条边,140亿个事件,这样一个7度搜索可能需要40亿7次方的计算量,巨大到不可承受,因此可以看出这类知识图谱的构建中人工干预的必要性。

    4. 本体模型支撑

    本体模型,主要指:后台有一定的知识储备作为支撑。

    系统后台存在一个知识库作为本体的支撑,根据输入语言的特征、关键词等去匹配后台的知识库。这里会涉及到较多的机器学习模型。

    • 人工构建

    人工构建本体模型支撑,由大量的领域专家相互协作构建本体,用以支撑前台做文本分析;代表方法包括循环获取法、七步法等。

    Cyc 循环获取法

    Ontology Development 101 ( 七步法 )

    七步法的缺点是:主观性太强,且比较随意,缺少科学管理和评价机制。

    • 半自动构建

    半自动构建本体,利用相关领域内的专业词典、叙词表等专家知识,从中抽取感兴趣的概念和关系,构建需要的本体。

    缺点:复用本体中的概念和关系,带来了不同本体匹配的问题。

    • 自动构建

    自动构建本体,指的是利用知识获取技术、机器学习技术以及统计技术等从数据资源中自动获取本体知识。

    主要涉及到两种方法:一种是基于语言规则的方法,另一种是基于统计分析的机器学习方法。

    基于语言规则的方法,主要指基于语义模式,从自然域文本构建本体,通过对自然域文本的分析,提取候选关系并将其映射到语义表示中,实现本体的构建。

    如上图所示,其基本框架为:

    • 使用模式编辑器构造语义模式

    • 选择自然域文本

    • 从自然域文本中提取领域本体

    其优点是:以非分类学关系丰富了浅层本体,一个动词可以表示两个或多个概念之间的关系。然而,这种方法不会发现新的关系,只是发现已知关系实例;而且本体构建的效果依赖于语义模式,因而需事先构建较完备的语义模式。

    基于统计分析的机器学习方法,主要是基于数据聚类和模式树挖掘,进行结构化的本体构建。

    • 对用于构建每个组的本体书类似文档进行分组

    • 使用模式树挖掘从部分本体树构建集成本体

    这种方法主要有两个主要模块:

    • 文档聚类:使用检索关键字的关系矩阵通过潜在语义分析 ( LSA ) 和 K-means 方法来聚类文档。

    • 本体构建:通过形式概念分析和本体集成构建每组文档的本体。

    统计机器学习方法可适用于范围更广的领域,可构建的本体倾向于更好地描述概念间的关系,结构也更加复杂;然而这种方法缺乏必要的语义逻辑基础,抽取概念关系松散且可信度无法得到很好的保证。

    ——图谱自动构建要素——

    1. 总体设计框架

    总体架构的两个核心要素,一个要素是后台的领域知识库,另一个要素是强化学习配合人机交互。

    步骤一:数据自动获取

    通过使用较为流行的网络数据获取工具,如:Scrapy,Jspider,Larbin 等获取多源异构数据。

    步骤二:三元组自动抽取

    结合自然语言处理工具和领域知识库,初步识别和抽取文本中的三元组信息。

    • 构建要素一:领域知识库

    在图谱自动构建过程中,由领域专家 ( HI ) 和专业组织 ( OI ) 提供的领域知识库能够有效提高实体、关系的识别和抽取精度。

    步骤三:自动纠错和自主学习

    结合 HAO 智能模型和强化学习方法,通过人机交互接口对代表性错误三元组进行人工纠正,并以此对强化学习模型进行训练和提高,实现自动纠错和自主学习。 

    • 构建要素二:强化学习+人机交互

    为保证图谱构建质量,需要通过人机交互接口对错误信息进行人工纠正,并以此作为种子案例,通过强化学习加强模型的识别精度和鲁棒性。

    ——应用场景——

    应用场景一:网络行为动态分析

    通过网络爬虫获取最新的网络信息数据,运用知识图谱自动构建技术,动态更新和扩充现有知识库,为网络行为分析提供知识支撑。包括:

    • 舆情监测

    • 热点跟踪

    • 用户情感倾向分析

    • 用户设计网络影响力分析

    这一部分也是明略科技涉及业务比较多的方面,涉及品牌分析,为大客户做广告设计,推荐广告布局,并做广告监测,以及品牌效应分析;这一部分的后台就是基于知识图谱的基础上做舆情分析、热点跟踪等。

    应用场景二:智能 Q&A

    通过人机交互+知识图谱自动构建,设计更智能的知识问答系统。

    • 人机交互:人与机器进行工作互补,共同完成问答场景。

    • 知识图谱自动构建:动态更新和扩充问答知识库,响应最新的网络知识。

    明略科技今年的战略发展之一就是智能 Q&A 产品,类似于科大讯飞的相关产品,前台问答的同时,后台同步构建知识图谱。

    应用场景三:智能推荐

    对于推荐系统中的核心元素:用户、场景和 ITEM,利用知识图谱自动构建技术,实时获取互联网海量信息并更新推荐知识库,通过用户兴趣跟踪、产品关联发掘、动态场景分析等方法提供更智能的推荐服务,涉及到用户跟踪,涉及产品动态变化等。

    今天的分享就到这里,谢谢大家。

    ——参考资料——

    [1] WuX, et al. Data mining with big data, IEEE TKDE, 2014, 26(1): 97-107.

    [2] WuX, et al. Knowledge Engineering with Big Data, IEEE IntelligentSystems,2015,30(5):46-55.

    [3] 赵军等. 知识图谱[M]. 高等教育出版社, 2018.

    [4] 吴信东,张奠成.从关系型描述数据库生成语义网络的方法,科学通报,1990:1674-1676.

    [5] FahiemBacchus. Representing and reasoning with probabilistic knowledge, The MITPress, 1990.

    [6] Nils J Nilsson. Probabilistic logic, Artificial Intelligence, 1986, 28(1): 71-87.

    [7] Matthew Richardson, Pedro Domingos.Markov logic networks, Machine Learning, 2006, 62(1-2): 107-136.

    [8] BordesA, Weston J, CollobertR, et al. Learning structured embeddings of knowledge bases, in Proceedings ofAAAI 2011, 2011:301-306.

    [9] SutskeverI, Tenenbaum J B, SalakhutdinovR, et al. Modelling Relational Data using Bayesian Clustered TensorFactorization[C], in Proceedings of NIPS 2009:1821-1828.

    [10] JenattonR, Roux N L, BordesA, et al. A latent factor model for highly multi-relational data[C], inProceedings of NIPS 2012:3167-3175.

    [11] SocherR, Chen D, Manning C D, et al. Reasoning with neural tensor networks forknowledge base completion, in Proceedings of NIPS 2013:926-934.

    [12] Nickel M, TrespV, KriegelH. A three-way model for collective learning on multi-relational data, inProceedings of ICML 2011:809–816.

    [13] CaiH Y, Zheng V W, Chang K. A Comprehensive Survey of Graph Embedding: Problems,Techniques and Applications. IEEE Transactions on Knowledge and DataEngineering, 2018. 3(9): 1616-1637.

    [14] BordesA, UsunierN, Garcia-Duran A, et al. Translating Embeddings for Modeling Multi-relationalData, in Proceedings of NIPS 2013:2787-2795.

    [15] Wu X. SIKT: a structured interactive knowledge transfer program, InternationalConference on Industrial & Engineering Applications of ArtificialIntelligence & Expert Systems,1995:787-795.

    [16] Wu X. KEShell:a "rule skeleton + rule body" -based knowledge engineering shell,Applications of Artificial Intelligence IX, 1991:632-639.

    [17] Xu L , Wu X . Interactive Acquisition of Knowledge Objects, In Proceedings ofIEEE Knowledgeand Data Engineering Exchange Workshop, 1997:97-105.

    [18] MinghuiWu and XindongWu, On Big Wisdom, Knowledgeand Information Systems, 2019, 58(1): 1-8.

    [19] SwartoutB, Patil R, Knight K, et al.Toward distributed use of large-scale ontologies. In: Proc. of the 10thWorkshop on Knowledge Acquisition for Knowledge-Based Systems, 1996:138-148.

    [20] NoyNF, McGuinness DL. Ontology development 101: A guide to creating your firstontology. 2001. 

    https://doi.org/10.1016/j.artmed.2004.01.014

    [21] SuryantoH, Compton P. Discovery of ontologies from knowledge bases, ACM InternationalConference on Knowledge Capture, 2001.

    [22] Dahab M Y , Hassan H A , Rafea A . TextOntoEx: Automatic ontology constructionfrom natural English text[J]. Expert Systems With Applications, 2008,34(2):1474-1480.

    [23] Yu Y T , Hsu C C . A structured ontology construction by using data clustering andpattern tree mining, International Conference on Machine Learning andCybernetics, ICMLC 2011.

    分享嘉宾

    吴信东

    明略科技 | 首席科学家

    吴信东,明略科技集团首席科学家,教育部长江学者,IEEE Fellow、AAAS Fellow。因为在数据挖掘及其应用领域的先驱性贡献 ( "for pioneering contributions to data mining and applications" ),2012年获 IEEE 计算机学会技术进步奖。 KAIS ( Knowledge and Information Systems ) 主编和 TKDD ( ACM Transactions on Knowledge Discovery from Data ) 的联合主编,也是数据挖掘国际会议 ICDM ( IEEE International Conference on Data Mining ) 的创办人和指导委员会主席 。2005年1月至2008年12月,担任《IEEE Transactions on Knowledge and Data Engineering》(TKDE)两届主编。2014年获 IEEE ICDM 十年最有影响力论文奖,他指导的博士生2014年获中国计算机学会优秀博士学位论文奖。

    本文根据吴信东 (IEEE & AAAS Fellow,明略科技 首席科学家) 教授在2019知识图谱前沿技术论坛的分享内容,编辑整理而成

    热门文章

    直戳泪点!数据从业者权威嘲讽指南!

    AI研发工程师成长指南

    数据分析师做成了提数工程师,该如何破局?

    算法工程师应该具备哪些工程能力

    数据团队思考:如何优雅地启动一个数据项目!

    数据团队思考:数据驱动业务,比技术更重要的是思维的转变

    一个「在看」,一段时光!????

    展开全文
  • CICD实战——服务自动构建与部署

    千次阅读 2020-09-27 00:58:38
    导语 随着微服务、容器、云计算的发展,近些年 DevOps、CI/CD 等概念越来越多地映入大家的...本文通过将开源 CI 工具 Jenkins 与 TARS 集成,进行一次完整的实践来展示如何实现 TARS 服务的自动构建与部署的流程。

    在这里插入图片描述

    导语
    随着微服务、容器、云计算的发展,近些年 DevOps、CI/CD 等概念越来越多地映入大家的眼帘。许多开发团队都希望应用这些理念来提高软件质量和开发效率,工欲善其事必先利其器,什么样的工具才能够满足开发者的需求?TARS 作为一套优秀的开源微服务开发运营一体化平台,拥有多语言、高性能、敏捷研发、高可用等特点。那么 TARS 是否能够完美支持 DevOps 理念呢?本文通过将开源 CI 工具 Jenkins 与 TARS 集成,进行一次完整的实践来展示如何实现 TARS 服务的自动化构建与部署的流程。

    目录

    什么是 DevOps 和 CI/CD

    随着微服务、容器、云计算的发展,近些年 DevOps、CI/CD 等概念越来越多地映入大家的眼帘。DevOps 是现在流行的一种软件开发方法,将持续开发、持续测试、持续集成、持续部署、持续监控等贯穿到软件开发的生命周期中,用于提高软件的开发质量,被当前几乎所有顶级公司采用。

    CI/CD 是实现 DevOps 理念的重要一环,我们先来了解一下概念:CI 指持续集成(Continuous Integration),CD 指持续交付(Continuous Delivery)和持续部署(Continuous Deployment),意思是通过一系列自动化的脚本执行,实现开发过程中的代码的交付和部署,实现快速交付,提高团队开发的效率。

    越来越多的开发团队都希望通过 DevOps 来提高软件质量和开发效率,工欲善其事必先利其器,TARS 作为一套优秀的开源微服务开发运营一体化平台,拥有多语言、高性能、敏捷研发、高可用等特点。通过将开源 CI 工具 Jenkins 与 TARS 集成即可实现针对TARS服务开发的 CI/CD 流程。

    前期准备

    环境

    进行本文操作之前,需要提前部署一套 TARS 框架,TARS 框架的安装部署可以查阅官方文档中框架部署部分,要求是部署 Jenkins 的服务器节点能够访问到 TARS 的框架服务即可;也可以直接将 Jenkins 与 TARS 框架部署在同一节点上。

    部署 Jenkins 的服务器节点需要能够被 GitHub 的 webhook 访问到,一般只要通外网并打开相应端口即可。

    文中使用的操作系统、TARS 框架、TarsCpp 和 Jenkins 的版本如下

    • 操作系统: CentOS7
    • TarsFramework 版本: 2.4.5
    • TarsCpp 版本: 2.4.8
    • Jenkins 版本: 2.235.2 LTS

    本文命令都以 CentOS7 为例,如果是其他 Linux 行版或其他操作系统,请自行查阅文档。

    部署 TARS 开发环境

    在 Jenkins 自动构建 TARS 项目的过程中需要对应的 TARS 开发环境,因此我们需要在构建的机器上部署相应的开发环境。

    本文以 TarsCpp 为例,仅介绍 TarsCpp 开发环境的部署,其他语言 TARS 开发环境可以参照官方文档中的 开发入门 > 开发环境部署,安装对应的 TARS 开发环境。

    TarsCpp 依赖安装

    安装 TarsCpp 之前,需要安装相应的依赖组件,可以通过以下命令安装,更多依赖组件的详细信息可以看到官方文档中的 TarsCpp 开发环境搭建

    yum -y install glibc-devel gcc gcc-c++ bison flex zlib-devel
    

    接着安装 cmake,TarsCpp 需要 cmake 3.2 以上版本,可以使用源码安装或者 yum 安装,任选其一即可。

    • 源码安装(版本在 3.2 以上即可,这里以 3.10.0 为例)
    wget https://cmake.org/files/v3.10/cmake-3.10.0-rc3.tar.gz
    tar zxvf cmake-3.10.0-rc3.tar.gz
    cd cmake-3.10.0-rc3/
    ./bootstrap
    gmake
    gmake install
    
    • yum 安装

    在 CentOS7 中,yum install cmake 默认版本为 2.8,因此我使用 cmake3 ,再创建软连接到 cmake。(也可以不创建软连接,使用 cmake3 代替后续 cmake 命令即可)

    yum -y install cmake3
    cd /usr/bin
    ln -s cmake3 cmake
    

    安装 TarsCpp 开发环境

    通过以下命令安装 TarsCpp 开发环境

    git clone https://github.com/TarsCloud/TarsCpp.git --recursive
    cd TarsCpp
    mkdir build
    cd build
    cmake ..
    make
    make install
    

    安装 Jenkins

    Jenkins 依赖安装

    Jenkins是用Java编写的,需要安装JDK

    yum -y install java-1.8.0-openjdk-devel
    

    另外Jenkins还需要从 GitLab 或 GitHub 拉取代码,需要安装 Git

    yum -y install git
    

    进阶:为了不让环境过于复杂,可以使用开发编译容器进行服务的构建,读者可以自行探索。

    安装

    Jenkins 有多种安装方式,这里介绍通过 yum 和 rpm 包安装两种方式,选择其中一种进行安装即可。

    • yum 安装

    可以通过以下命令安装 Jenkins,如果安装过程中资源包下载较慢,可以看到下一节使用 rpm 包安装

    wget -O /etc/yum.repos.d/jenkins.repo \
        https://pkg.jenkins.io/redhat-stable/jenkins.repo
    rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
    yum install -y jenkins
    
    • rpm 包安装

    多数情况下,国内网络访问外网资源较慢,通过 yum 安装时间会比较长,此时可以通过国内镜像源下载 rpm 包进行安装,这里我们使用清华 tuna 镜像源

    wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.235.2-1.1.noarch.rpm
    rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
    rpm -ivh jenkins-2.235.2-1.1.noarch.rpm
    

    启动 Jenkins

    安装完成后即可通过以下命令运行 jenkins 服务

    systemctl start jenkins
    

    可以通过以下命令查看 Jenkins 的运行状态

    systemctl status jenkins
    

    配置 Jenkins

    访问 Jenkins

    在浏览器输入 http://${IP}:8080 来访问Jenkins,其中 IP 为服务器公网 IP

    第一次访问需要使用 Administrator password 解锁,在日志和服务器文件 /var/lib/jenkins/secrets/initialAdminPassword 中可以找到,我们使用 cat 命令输出密码

    cat /var/lib/jenkins/secrets/initialAdminPassword
    

    插件安装

    可以点击安装推荐插件,默认安装的插件足够满足后续的使用。由于还没有更改插件更新中心的地址,安装过程会比较慢,也可以先选择跳过,后续修改更新中心地址为国内源后再下载需要的插件。

    更新中心即 Jenkins 插件的下载源,默认为官方下载源,国内访问较慢,具体替换方式和国内镜像源可以查看 Jenkins 中文社区

    创建 admin 用户

    安装完插件后,会跳转到 admin 用户创建页面,按照页面提示完成即可。

    关联代码仓库

    Jenkins 可以关联 gitsvn 仓库,也可以是代码托管平台,当仓库有新的 pushmerge 操作时,可以从仓库拉取代码进行构建等操作。这里我们选择的 GitHub 作为关联仓库,其他代码托管平台操作相似。

    本文中,我关联了 https://github.com/ETZhangSX/TarsCppCIDemo.git 这个仓库。

    生成 secret text

    在 GitHub 上称为 token。在 GitHub 主页,进入 右上角头像->Settings->Developer settings->Personal access tokens

    点击 Generate new tokenScopes 中我们勾选 repoadmin:repo_hook ,然后点击 Generate token 即可生成 token。在生成页面我们需要复制 token 并保存,因为 token 只会显示一次。

    设置 GitHub Webhooks

    选择自己在 GitHub 上的 TARS 项目,点击 Settings->Webhooks->Add Webhook

    Payload URL 中输入 http://${IP}:8080/github-webhook/ ,其中 IP 为部署 Jenkins 的服务器 IP 或者域名。

    接下来要配置插件 GitHub Plugin,如果之前没有安装的话需要安装。

    配置 GitHub Plugin

    回到 Jenkins 主页,进入 系统管理->系统设置->GitHub->添加GitHub服务器

    API URL 中输入 https://api.github.com,凭据点击 添加,类型选择 Secret TextSecret 填入之前 GitHub 上生成的 token,填写描述,其他默认即可,最后点击 添加

    然后在凭据下拉栏选择刚刚添加的凭据即可,点击 连接测试 可以测试是否有效。

    自动化构建

    创建任务

    在Jenkins主页点击 新建任务,输入名字后,这里我们选择构建自由风格(free style)的项目,点击 确定

    进入任务配置,在 General 中,填写任务的描述,勾选 GitHub项目,填写你的项目构建地址,这里我新建了一个测试仓库 TarsCppCIDemo.

    在这里插入图片描述

    源码管理 中我们选择 GitRepository URL 中填写项目的 git 地址,Credentials 中先点击 添加,添加你的 GitHub 账号,添加过程需要填写 GitHub 账号用户名和密码,最后在下拉列表中选中添加的账号。

    指定分支 中可以选择你需要操作的分支,比如只对 dev 分支执行构建操作。这里不推荐使用master 分支,可新建 dev 分支用于代码提交。

    说明:master 分支为主分支,一般作为稳定版分支,可以直接用来发布产品,因此需要保证代码的正确性,构建成功后并确定没有问题后再合入该分支;日常开发一般会创建如 dev 的开发分支,多人协作开发则会创建多个开发分支,并以各自的名字或昵称命名来区分。

    源码库浏览器 选择 githubwebURL 填写项目地址,这样每次构建生成的 changes 可以链接到 GitHub,查看变更的详情。

    构建触发器 中我们勾选 GitHub hook trigger for GITScm polling,这样每次获取到 GitHub 的 webhook都会触发构建。

    构建环境 中选择 Use secret text(s) or file(s),然后在 绑定新增 中选中 Secret text凭据 选择 指定凭据,下拉栏选中之前保存的 webhook token。

    构建 中可根据自己的需求编写构建的脚本了,在本文生成的测试项目中使用了 TarsCpp,因此构建步骤选择了 执行 shell ,然后通过以下简单的 shell 脚本即可完成项目的构建。

    mkdir -p HelloServer/build
    cd HelloServer/build
    cmake ..
    make -j4
    make HelloServer-tar
    

    构建后操作 用于指定构建完成后进行的操作,这里我选择了 Set build status on GitHub commit [deprecated],这表示我能够在构建结束时设置本次 commit 的构建状态,直观体现为 GitHub 对应仓库的 commit 记录中会显示 表示此次 commit 的构建成功或失败。

    最后点击 保存,任务就创建好了。

    新建 TarsCpp 项目

    我们在已经安装 TarsCpp 环境的机器上拉取项目,例如

    git clone https://github.com/ETZhangSX/TarsCppCIDemo.git
    

    然后通过 TarsCpp 的服务创建脚本创建服务项目

    /usr/local/tars/cpp/script/cmake_tars_server.sh TarsCppCIDemo HelloServer Hello
    

    此时,脚本已经默认生成了 TarsCpp 服务的 HelloServer 项目。

    push 到 GitHub

    我们 commit 刚刚创建的项目,然后 push。

    这些涉及 git 的使用,具体请查阅 Git 官方文档

    git add .
    git commit -m "helloworld"
    git push origin master
    

    自动构建触发

    Jenkins 获取到 GitHub 的 webhook 事件后(我们前面已经关联好了),会自动启动构建流程。它会自动通过 git 下载项目,进入项目目录,执行构建操作,构建操作即为我们之前在 构建 中添加的 构建步骤 ,执行 shell 脚本。

    我们打开 Jenkins 的页面,可以看到正在运行的构建任务或者已完成的构建,代表 Jenkins 的自动构建配置已经成功了

    点击编号,图中为 #8 ,可以查看本次构建的详细信息,包括 shell 构建过程的日志输出。

    构建完成可以在 GitHub 上查看对应 commit 的构建状态。

    自动化部署

    前面讲完了自动化构建,本节讲述如何实现自动化部署。这里我们选择自动化构建类似的方式,使用 Jenkins 实现自动化部署,即通过获取 GitHub 分支状态的变化来进行相应的部署操作。两者主要区别在于操作的分支不同,自动化构建操作 dev 分支,自动化部署操作 master 分支。

    修改项目 Webhook 配置

    由于 master 分支用于 TARS 服务的自动化部署,一般不直接提交代码,而是通过其他分支合入,因此我们需要获取 master 分支的 Pull requests 事件。我们打开 GitHub 项目 TarsCppCIDemoWebhooks 设置,点击对应 webhookEdit

    修改 webhook 的 trigger 方式为 Let me select individual events,即自定义事件,如下

    然后新增勾选与 Pull requests 相关的事件,如下

    然后点击 Update webhook 保存,GitHub项目的配置就完成了

    获取 TarsWeb 接口 Token

    在 TarsWeb 管理界面以外要部署服务,需要调用 TarsWeb 的 API 接口,接口需要传入有效的 Token 进行鉴权。因此需要生成可以用于接口调用的 Token。

    首先,登录 TarsWeb 管理页面,点击页面右上角用户名下拉栏中的 用户中心 ,然后点击 Token管理--新增Token,选择失效日期和时间后点击 确定 即可成功生成 Token,复制保存 Token 备后续步骤使用。

    创建任务

    同自动化构建相似,新建任务选择构建自由风格(free style)的项目,名字自定义。

    任务配置上大部分相同,仅需要修改两处:

    • 修改 源码管理 中的 指定分支master

    • 修改 构建 中的 shell 构建脚本为
    #!/bin/sh
    mkdir -p HelloServer/build
    cd HelloServer/build
    cmake .. -DTARS_WEB_HOST=http://123.123.123.123:3000 -DTARS_TOKEN=6b4e9****************************68d55a9
    make -j4
    make HelloServer-tar
    make HelloServer-upload
    

    TarsCpp 已经实现了服务直接发布的功能,在使用 cmake 构建项目时传入相应的参数即可。cmake 命令中通过 -D 传入参数,这里我们需要传入两个参数,参数 TARS_WEB_HOST 为自己部署 TarsWeb 的地址,TARS_TOKEN 为前面创建的 API TOKEN,如下。

    最后点击 保存 即可生成构建任务。

    部署服务

    注意,在触发 Jenkins 进行自动部署之前,我们需要提前在 TarsWeb 上进行服务部署,相当于注册服务,后续才能正常发布服务,如下

    如果对服务部署存在疑问,可以看到官方的服务开发介绍文档

    自动部署触发

    将改动的新代码 push 到 dev 分支,打开 Jenkins 首页,会触发之前创建的自动构建任务,没有触发自动部署的任务。

    构建成功后,打开项目的 GitHub 仓库,会出现以下提示,点击 Compare & pull request,提交 Pull request,接下来自动部署才会被触发。

    回到 Jenkins 页面,我们可以看到自动部署任务被触发,如果显示构建成功,我们打开 TarsWeb 管理页面,可以看到服务已经发布运行。

    总结

    本文介绍了如何使用 Jenkins 实现 TARS 服务开发过程中的持续集成与持续部署能力,帮助提高软件的交付速度和构建质量,提升团队的协作效率。

    TARS可以在考虑到易用性和高性能的同时快速构建系统并自动生成代码,帮助开发人员和企业以微服务的方式快速构建自己稳定可靠的分布式应用,从而令开发人员只关注业务逻辑,提高运营效率。多语言、敏捷研发、高可用和高效运营的特性使 TARS 成为企业级产品。

    TARS微服务助您数字化转型,欢迎访问:

    TARS官网:https://TarsCloud.org

    TARS源码:https://github.com/TarsCloud

    Linux基金会官方微服务免费课程:https://www.edx.org/course/building-microservice-platforms-with-tars

    获取《TARS官方培训电子书》:https://wj.qq.com/s2/6570357/3adb

    或扫码获取:

    在这里插入图片描述

    展开全文
  • 实战:向GitHub提交代码时触发Jenkins自动构建

    万次阅读 多人点赞 2018-01-21 12:14:56
    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建; 原文地址:...

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建;

    原文地址:http://blog.csdn.net/boling_cavalry/article/details/78943061

    前期准备工作

    进行本章的实战前,推荐您参照《docker下的Jenkins安装和体验》做安装和体验的实战,以便对Jenkins服务有初步了解;

    重要前提

    1. GitHub收到提交的代码后要主动通知Jenkins,所以Jenkins所在服务器一定要有外网IP,否则GitHub无法访问,我的Jenkins服务器是部署在腾讯云的云主机上,带有外网IP;
    2. 本次实战要提交源码到GitHub,所以您需要有一个GitHub号,并在上面创建工程;

    demo工程源码

    本次用来在Jenkins上构建的工程是个springboot的web工程,地址是:git@github.com:zq2599/jenkinsdemo.git,用浏览器访问的地址是:https://github.com/zq2599/jenkinsdemo.git;
    代码很简单,只有一个controller,接收http请求返回一个字符串,如下所示:

    @RestController
    public class Hello {
        @RequestMapping("/")
        public String sayHello(){
            return "3. Hello jenkins, " + new Date();
        }
    }
    

    您需要在自己的GitHub创建一个项目,源码可以参照上述demo工程的源码;

    实战步骤梳理

    本次整个实战过程依次为如下步骤:

    1. GitHub上准备一个spring boot的web工程;
    2. GitHub上配置Jenkins的webhook地址;
    3. 在GitHub上创建一个access token,Jenkins做一些需要权限的操作的时候就用这个access token去鉴权;
    4. Jenkins安装GitHub Plugin插件;
    5. Jenkins配置GitHub访问权限;
    6. Jenkins上创建一个构建项目,对应的源码是步骤1中的web工程;
    7. 修改web工程的源码,并提交到GitHub上;
    8. 检查Jenkins的构建项目是否被触发自动构建,构建成功后,下载工程运行,看是不是基于最新的代码构建的;

    webhook地址

    webhook是通知Jenkins时的请求地址,用来填写到GitHub上,这样GitHub就能通过该地址通知到Jenkins;
    假设Jenkins所在服务器的地址是:192.168.0.1,端口为8080,那么webhook地址就是http://192.168.0.1:8080/github-webhook

    再次提醒,上述地址必须是外网也能访问的,否则GitHub无法访问到Jenkins;

    配置GitHub

    1. 登录GitHub,进入要本次构建用到的工程;
    2. 在工程主页面点击右上角的"Settings",再点击左侧"Webhooks",然后点击“Add webhook”,如下图:
      这里写图片描述
    3. 如下图,在"Payload URL"位置填入webhook地址,再点击底部的"Add webhook按钮",这样就完成webhook配置了,今后当前工程有代码提交,GitHub就会向此webhook地址发请求,通知Jenkins构建:
      这里写图片描述

    生成Personal access tokens

    Jenkins访问GitHub工程的时候,有的操作是需要授权的,所以我们要在GitHub上生成授权的token给Jenkins使用,这就是Personal access tokens,生成步骤如下:

    1. 登录GitHub,进入"Settings"页面,点击左下角的"Developer settings",如下图:
      这里写图片描述
    2. 跳转到"Developer settings"页面后,点击左下角的“Personal access tokens”,如下图:
      这里写图片描述
    3. 跳转到"Personal access tokens"页面后,点击右上角的"Generate new token"按钮,如下图:
      这里写图片描述
    4. 可能会提示输入GitHub密码,输入后跳转到创建token的页面,如下图所示,输入title,再勾选"repo"和"admin:repo_hook",再点击底部的"Generate token"按钮,就能产生一个新的access token,将此字符串复制下来,后面jenkins任务中会用到:
      这里写图片描述

    Jenkins配置

    1. GitHub Plugin插件,在"系统管理->管理插件"位置检查此插件是否已经安装,没有的话请先安装;
    2. 配置GitHub,点击“系统管理->系统设置”,如下图:
      这里写图片描述
    3. 在系统设置页面找到"GitHub",配置一个"GitHub Server",如下图,“API URL"填写"https://api.github.com”,“Credentials"位置如下图红框所示,选择"Add->Jenkins”:
      这里写图片描述
    4. 弹出的页面中,“Kind"选择"Secret text”,"Secret"填入前面在GitHub上生成的Personal access tokens,Description随便写一些描述信息,如下图:
      这里写图片描述
    5. 填写完毕后,点击右侧的"Test connection"按钮,如果信息没有填错,显示的内容如下图所示:
      这里写图片描述
    6. 点击页面最底部的"保存"按钮;

    GitHub项目的项目主页和仓库地址

    项目主页和仓库地址是不同的,如下图,红框1中是项目主页,点击红框2的按钮后,红框3中是仓库地址(要用HTTPS的,不用SSH 的):
    这里写图片描述

    项目主页:https://github.com/zq2599/jenkinsdemo
    仓库地址:https://github.com/zq2599/jenkinsdemo.git

    新建构建项目

    在Jenkins上新建一个maven构建项目,名为test003,如下图:
    这里写图片描述

    接下来设置test003的配置信息,分为"源码管理设置"和"构建环境设置"两部分;

    源码管理设置

    这里写图片描述
    上图中每个红框的设置如下解释:

    1. 选择"Git";
    2. "Repository URL"输入仓库地址:https://github.com/zq2599/jenkinsdemo.git;
    3. “Credentials"创建一个Credentials,Kind选择"Username with password”,Username输入GitHub账号,Password输入GitHub密码;
    4. “源码库浏览器"选择"githubweb”;
    5. "URL"输入项目主页:https://github.com/zq2599/jenkinsdemo;
    6. “构建触发器"中勾选"GitHub hook trigger for GiTScm polling”;

    构建环境设置

    如下图所示,勾选"Use secret text(s) or file(s)",下面的"Credentials"选择我们之前配置过的"Personal access tokens"
    这里写图片描述

    设置完成后,点击页面底部的"保存"按钮;

    修改web工程代码并提交到GitHub

    将GitHub仓库的代码clone到本地,做一些修改然后提交到GitHub上,例如我修改了Hello.java中的源码(修改了sayHello方法的return的字符串的内容),如下所示:

    @RestController
    public class Hello {
    
        @RequestMapping("/")
        public String sayHello(){
    	    //修改返回的字符串的内容
            return "abcdefg. Hello jenkins, " + new Date();
        }
    }
    

    提交到GitHub的操作如下图所示:
    这里写图片描述

    Jenkins自动构建

    回到Jenkins的test003页面,可以看到已经开始自动构建了,如下图:
    这里写图片描述

    验证自动构建结果

    1. 在test003的页面,点击"工作空间"->“工作区”,如下图:
      这里写图片描述
    2. 点击下图红框中的"mavendockerplugindemo-0.0.1-SNAPSHOT.jar",浏览器就会下载这个文件:
      这里写图片描述
    3. 下载成功后,在mavendockerplugindemo-0.0.1-SNAPSHOT.jar所在目录下执行命令java -jar mavendockerplugindemo-0.0.1-SNAPSHOT.jar,web应用启动成功,如下图:
      这里写图片描述
    4. 浏览器输入localhost:8080,可以看到web应用返回的内容是我们刚刚提交的最新内容,如下图:
      这里写图片描述

    至此,GitHub提交触发Jenkins自动构建的实战就完成了,希望能对您搭建持续构建环境有所帮助。

    欢迎关注我的公众号:程序员欣宸

    在这里插入图片描述

    展开全文
  • 利用GitLab的Webhook功能,可以实现当代码PUSH到仓库时,自动发送消息给Jenkins触发指定任务,从而节省人工操作,实现自动构建。 配置Jenkins 1、安装插件 Manage Jenkins -> 插件管理,安装GitLab Plugin和...

    利用GitLab的Webhook功能,可以实现当代码PUSH到仓库时,自动发送消息给Jenkins触发指定任务,从而节省人工操作,实现自动化构建。

    配置Jenkins

    1、安装插件

    Manage Jenkins -> 插件管理,安装GitLab PluginGitLab Hook Plugin两个插件。其中GitLab Hook Plugin插件很久没更新,Jenkins可能会提示风险漏洞,不介意的话忽略就好。

    2、配置GitLab凭据

    在Jenkins任务配置中,选择对应的GitLab凭据,如果没有则选择Add创建,否则跳过第3步。

    3、创建凭据

    类型为GitLab API token,填入GitLab用户的API token(在GitLab用户设置里可以找到)。

    4、任务设置

    任务的构建触发器选项下,选中Build when a change in pushed to GitLab,把这行中的URL复制下来,后面GitLab配置中会用到。

    上图中的URL代表触发Jenkins的test任务。

    配置GitLab

    进入GitLab后台系统,点击要配置的仓库项目,进入设置 -> Webhooks,链接框中填入上面Jenkins提供的URL,勾选Push events,点击Add webhook

    注:Push events框可以指定触发分支,比如master

    然后点击测试,选择Push events。如果返回403,进入Jenkins管理下系统设置的GitLab选项,取消Enable authentication for '/project' end-point复选框,然后保存。

    按以上配置好后,只要有新的代码Push到GitLab,就会触发Jenkins的test任务构建了。

    展开全文
  • Intellij IDEA –如何自动构建项目

    千次阅读 2020-06-01 22:02:04
    默认情况下,Intellij ... 选择“构建,执行,部署->编译器” 选中Make project automatically PS此功能自IDEA 12起可用 参考文献 IntelliJ IDEA 12中的全新编译器模式 标签: 想法 ...
  • GitHub+Docker Hub自动构建镜像

    千次阅读 2018-11-17 15:29:59
    Dockerfile是一个包含用于构建镜像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成镜像。它们简化了从头到尾的流程并极大的简化了部署工作。 Dockerfile 一般分为四...
  • 自动化代码使用jenkins自动构建步骤

    千次阅读 2016-11-28 16:31:09
    在写好一个TestNG驱动的自动化测试代码,需要在jenkins自动构建的方法: 项目下最好新建lib目录,把所有的jar文件复制到该目录,这样导出后,在其他任何地方都可以使用。 一、在代码的根目录下新建build.xml;...
  • jenkins触发器实现自动构建

    千次阅读 多人点赞 2019-04-12 16:04:48
    一、定时构建语法 (五颗星,中间用空格隔开) 第一颗表示分钟,取值0~59 第二颗表示小时,取值0~23 第三颗表示一个月的第几天,取值1~31 第四颗表示第几月,取值1~12 第五颗*表示一周中的第几天,取值0~7,其中0和7...
  • 路网自动构建路段拓扑

    千次阅读 2019-08-10 18:14:23
    在做道路匹配的时候,你发现很多论文都是基于路网的拓扑关系做的,但是问题就是:如何构建路网的拓扑关系?一般的论文都已经在构建好拓扑关系的基础上直接拿来用,有些论文说是使用MapInfo、MapX等等工具生成拓扑...
  • jenkins自动构建和修改版本号可以查看我以前的博客:gitlab webhook触发jenkins自动化构建 和jenkins通过Version Number插件修改版本号 设置版本号,jenkins内置环境变量GIT_BRANCH可以获取Git远程分支名字。 提交...
  • maven 自动构建jar/war包

    千次阅读 2019-09-18 12:10:45
    demo项目地址(自动构建jar/war包): https://github.com/eaglesinchina/maven-build-jar-war 文章目录 1, 构建war包 配置pom.xml 2, 构建jar包 a, 项目结构 b, pom.xml配置 c, package.xml配置 d, 执行maven命令 1,...
  • 通过 GitLab webhook 触发服务器端 Jenkins Pipeline 自动构建部署前端项目
  • Docker是一个开源的应用容器引擎,将应用以及依赖打包到一个可移植的镜像中,然后发布到服务器上,并且可以实现虚拟化,有助于快捷高效的交付应用。 Docker三个核心概念: 镜像Image,应用和依赖打包生成的文件,...
  • 开源项目使用 appveyor 自动构建

    千次阅读 2019-06-29 09:22:36
    我写了几个开源项目,我想要有小伙伴提交的时候自动运行单元测试,自动运行编译,这样可以保证小伙伴提交清真的代码 ...本文将会告诉大家如何接入 appveyor 自动构建方案,在 Github 上给自己的开源项目进行自动构建
  • jenkins+gogs实现自动构建maven项目

    千次阅读 2019-07-31 19:43:20
    本文基于《jenkins构建maven项目》,在此之上增加自动构建。 直接进入主题。 我这边的git仓库使用的是搭建在内网的gogs,所以想实现当代码push到git上后就立即自动构建打包该项目,就需要在jenkins上安装gogs的...
  • 使用Docker+Jenkins自动构建部署

    千次阅读 2019-02-24 11:40:00
    使用Docker+Jenkins自动构建部署 环境 Windows 10  Docker Version 18.06.1-ce-win73 (19507) 运行jenkins  运行jenkins 容器 docker run -d --name lnmp-jenkins --user root -p 8080:8080 -p...
  • 需求 Jenkins多分支流水线...在实际应用中,我们经常需要Git+Jenkins实现代码提交触发Job的自动构建。对于普通Job,webhook自动触发即可;但是对于多分支流水线,每次webhook触发的可能是master、develop或
  • 之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台。通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要...
  • 我用的IDEA2020。每次运行一个简单的main方法,他就给我重新build一下,百思不得其解。然后想想是不是自己开了什么插件。于是打开插件,果然找到了罪魁祸首! 把红色框框的插件勾选掉就好了。 ...
  • Svn提交后触发Jenkins自动构建

    千次阅读 2019-01-25 20:56:04
    一、Jenkins配置步骤 1.登录Jenkins,创建一个自由风格的Job,如下图: 2.【源码管理】选中【Subversion】,填写相关SVN信息,如下图: ... 4.进入【系统管理】-【Jenkins命令行接口】,进入【Jenkins命令行】页面,...
  • jenkins Windows自动构建发布并启动

    千次阅读 2019-08-21 19:24:22
    项目构建配置: # 多模块项目,所以先切换到dawn-admin项目target目录,复制打包文件 cd dawn-admin\target copy dawn-admin.jar D:\dawn\dawn-admin.jar # 切换到工作目录,执行关闭旧窗口的批处理文件 cd /d D:\...
  • 就去网上搜了下jenkins和vue的相关资料,然后整理了下,以后代码更新后就可以自动打包发布了,解放双手,下面开始教程----> 至于怎么安装Jenkins,请自行百度,懒人点传送门去看安装教程...
  • 如上图操作即可 如上图操作即可 如上图操作即可 图呢…
  • 前言 在日常开发中,经常会有发布的需求,而且经常会碰到各种环境,比如:开发环境、测试环境、生产环境。...本文中自动构建部署过程大致完成了以下步骤: 提交spring boot项目代码并打上git ...
  • 自动构建(CICD)

    千次阅读 2019-09-09 17:29:30
    Docker、Kubernetes的 CICD实现思路 Jenkins是一个比较流行的持续...进入到Jenkins虚线范围内,它所做的事情非常多,从mvn构建代码,对代码进行静态分析,做单元测试,测试通过之后就可以build镜像,镜像构建成功后...
  • 设置如下: 1)Jenkins上的操作 通常,jenkins在项目配置时是可以配置远程构建触发器,设置好jenkins的回调url后就可以让jenkins进行自动构建。这就需要先下载Gitlab Hook Plugin 插件。登陆Jenkins,分别点击"系统...
  • jenkins+maven+git 实现自动构建

    万次阅读 2018-06-15 19:03:24
    构建时使用的root用户,而用jenkins发起构建的时候用的是jenkins用户,jenkins用户没有访问maven库的权限所导致的,解决构建用户权限的方法为: 1.  先在机器上创建一个maven 库  cd /var  // 进入var 路径下 ...
  • 首先我们要弄清楚 Pull Request 自动构建是啥,就需要分别说清楚 Pull Request 的意义以及 Pull Request 自动构建的意义: Pull Request 的意义:开发人员通过发出 Pull Requests 请求他人将自己贡献的代码拉下来...
  • jenkins+gitlab实现代码分支自动构建

    千次阅读 2019-02-14 16:57:46
    需求 gitlab代码push之后,自动触发jenkins任务 后端自动化脚本根据gitlab中变更的brach执行对应的任务 ...参数化构建,好像获取branch失败 使用jenkins的Build when a change is pushed to Gi...
  • Jenkins入门教程之安装maven构建插件(四) 参考笔者博客 : Jenkins入门教程之安装maven构建插件(四) 6、 Jenkins入门教程之安装Deploy Plugin (五) 插件并配置 参考笔者博客: Jenkins入门教程之安装Deploy ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 976,495
精华内容 390,598
关键字:

自动构建