利用TeamCity实现maven项目的CI/CD

news/2024/9/14 5:57:08/ 标签: maven, ci/cd, java, teamcity, teamagent

1.什么是TeamCity?

TeamCity 是一款由 JetBrains 开发的强大的持续集成(Continuous Integration,CI)和持续部署(Continuous Deployment,CD)工具。它帮助开发团队自动化构建、测试和部署过程,以确保软件项目的质量和快速交付。

TeamCity 的主要特点和优势包括:

  1. 灵活的构建配置:TeamCity 支持多种构建工具(如 Maven、Gradle、npm、MSBuild 等),可轻松集成到现有的开发工具链中。它还提供了丰富的构建配置选项,允许您根据项目需求定制构建过程。
  2. 实时构建状态和反馈:TeamCity 提供了实时的构建状态和反馈,帮助您快速发现并解决潜在问题。此外,它还支持与多种通知渠道(如邮件、Slack、HipChat 等)集成,确保团队及时了解构建过程的情况。
  3. 分布式构建:TeamCity 支持分布式构建,允许您在多台构建代理上并行执行构建任务,以提高构建速度和效率。此外,它还可以根据负载和需求自动管理构建代理,确保资源的合理分配。
  4. 丰富的插件生态:TeamCity 拥有丰富的插件生态,可以与众多第三方工具和服务集成,如版本控制系统(如 Git、SVN、Mercurial 等)、问题跟踪系统(如 Jira、YouTrack 等)以及代码审查工具(如 Codecov、SonarQube 等)。
  5. 支持多种部署方式:TeamCity 支持多种部署方式,如自动部署到云服务(如 AWS、Google Cloud、Azure 等)、容器化部署(如 Docker、Kubernetes 等)以及传统的虚拟机部署。
  6. 高度可定制和扩展:TeamCity 提供了高度可定制的用户界面,允许您根据团队和项目需求调整界面布局。此外,它还提供了丰富的 API 和扩展点,方便您开发自定义插件和集成其他工具。
  7. 良好的安全性和权限管理:TeamCity 提供了一套完善的安全性和权限管理机制,支持用户认证、角色授权以及访问控制等功能,确保您的构建过程和敏感数据得到有效保护。

2.环境搭建

在折腾之前需要理解两个概念, teamCity 和teamAgent.

  • teamCity: 管理构建代码,构建步骤, 和调度构建的服务
  • teamAgent: 真正执行构建的服务, 接受teamAgent调度管理, 可以单独安装在服务器上, 如果要构建的任务很多,可以增加很多的teamAgent.

安装teamcity

docker run --name teamcity-server-instance -v d:\\tmp\\teamcity\\serve:/data/teamcity_server/datadir -v d:\\tmp\\teamcity\\log:/opt/teamcity/logs -p 8111:8111 jetbrains/teamcity-server

访问地址http://localhost:8111/  设置管理员用户名和密码

安装teamagent

1

这里我们选择docker安装agent

2

docker run -it -e SERVER_URL="http://localhost:8111"   -v d:/tmp/teamcity/teamagent/conf:/data/teamcity_agent/conf  jetbrains/teamcity-agent

安装完成之后可以在agent菜单下看到有几个teamagent

3.maven项目CI/CD配置指南

创建项目

3

关联github仓库代码

4

配置build步骤

5

配置maven install

选择项目默认的maven和JDK版本,也可以手动变更

6

上传构建jar包到目标服务器

7

执行ssh 命令

8

4.测试

点击运行按钮,可以看到构建完成,并且将jar上传到相应的目录机器上

9

查看运行日志

10

5.引用

  • TeamCity Tutorials
  • 利用TeamCity实现maven项目的CI/CD | Harries Blog™

http://www.ppmy.cn/news/1516896.html

相关文章

Scratch的无限可能:突破项目大小与复杂度的界限

Scratch的无限可能:突破项目大小与复杂度的界限 Scratch,这个由麻省理工学院媒体实验室开发的编程平台,以其独特的图形化编程方式,激发了全球数百万孩子的创造力和逻辑思维能力。然而,随着孩子们创意的不断扩展&#…

centos7解决病毒入侵 getty

首先使用top命令查看 找到文件地址 查看是否有自启动服务 关闭、停止、删除 tmp 病毒文件删除 清除标记 [roothost-192-168-0-66 bin]# chattr -ia /tmp/newsvc.sh [roothost-192-168-0-66 bin]# chattr -ia /tmp/redis2 [roothost-192-168-0-66 bin]# chattr -ia /tmp/svc* [r…

C++开发IDE用VisualStudio好还是QtCreator好?

在熟练使用了VisualStudio和QtCreator之后,我依然认为QtCreator作为C++项目开发IDE的便捷性真的相当杰出。 当然了,VisualStudio和QtCreator本身就不是一个量级,VS越做越大,庞大的插件库也使得他能够支持从嵌入式到手机端,从web到脚本,甚至游戏,仿真等等各个领域的开发…

Leetcode 1047-删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 题解 题目链接 //先进后出&a…

网络-VPN

VPN(Virtual Private Network,虚拟专用网络)是一种网络技术,用于在公共网络(如互联网)上建立一个安全的、加密的连接通道,以保护数据传输的安全性和隐私。通过使用 VPN,用户可以在不…

线程面试题

1.JDK自带的线程池有哪些? 2.线程池中核心线程数与最大线程数与缓冲任务队列的关系? 先使用核心线程执行任务。 当核心线程不足时,新任务入队列等待。 当队列满且线程数未达最大值时,增加非核心线程执行任务。 当队列满且线程…

xss-labs通关攻略 11-15关

第十一关:less-11 步骤一:利用burp抓包 步骤二:添加referer:click me!" type"button" οnmοuseοver"alert(/xss/)进行放包 第十二关:less-12 步骤一:利用burp抓包 步骤二:修改User A…

熟悉Labview工具用

目录复制 目录 0.0:快捷键0.1:全局非图标显示0.2:小技巧:图片导入为程序1.2:事件结构1.2.0:超时分支:当事件结构框左上角设置为1时,单位毫秒,即理解为1ms内没有其他的事件…

ReadAgent,一款具有要点记忆的人工智能阅读代理

人工智能咨询培训老师叶梓 转载标明出处 现有的大模型(LLMs)在处理长文本时受限于固定的最大上下文长度,并且当输入文本越来越长时,性能往往会下降,即使在没有超出明确上下文窗口的情况下,LLMs 的性能也会随…

Python爬虫技术终端协议分析与抓包应用

内容导读 分析PC客户端抓包 分析App客户端抓包 一、分析PC客户端抓包 以爬取某音乐PC客户端为例,实现网页内容爬取与分析。 任务描述: 终端协议是网络上设备之间通信规则的集合,通过终端协议可以获取PC客户端和App客户端数据。常用的PC…

Node.js中的pipe方法:深入解析与应用指南

在Node.js中,pipe方法是处理流(Stream)数据的一种非常高效的方式。它允许你将一个可读流(Readable Stream)的数据直接传输到一个可写流(Writable Stream)中,而无需手动编写读取和写入…

React 实现请求接口封装

接口封装 一、正常接口请求 useEffect(()>{//获取下拉数据async function fetchDateWrapper() {try{const res await 接口();console.log("res",res.data);const value res.data.map(item {return { label: item.valueName,value:valueCode }});setData(value…

大数据5v特性、集群、分布式

目录 数据分析六部曲 大数据的特点 (5v特征) 分布式与集群的区别 常用的分布式方案 数据分析六部曲 明确分析目的和思路:确保分析框架的体系化和逻辑性,简单来说就是先分析什么,后分析什么,使得各个分析…

PHPShort轻量级网址缩短程序源码开心版,内含汉化包

需要网址缩短并且想获得更多有关链接点击率和流量的数据分析,那么 PHPShort 可能是一个非常好的选择。PHPShort 是一款高级的 URL 缩短器平台,可以帮助你轻松地缩短链接,并根据受众群体的位置或平台来定位受众。 该程序基于 Laravel 框架编写…

不同应用场景对于HDR ISP的需求

文章目录 HDR ISP HDR ISP 需求方面应用场景具体需求动态范围宽度安全监控系统需要非常宽的动态范围,以应对高对比度场景,如强光直射、夜间监控等,确保在极端光照条件下获取清晰图像。汽车辅助驾驶系统(ADAS)要求动态…

Java学习Day33:HTML 第三章:挟魂崖

1.js的DOM介绍 JavaScript中,dom是一套操作文档内容的方法,可以完成查、增、删、改(先删后增)的操作。而且dom的开发效率很高,还可以用于服务器渲染、weex 开发等。本文向大家介绍JavaScript中的dom。 1、什么是dom&am…

二叉搜索树:数据结构之美

目录 引言基础知识 定义性质操作详解 插入节点删除节点查找节点遍历 前序遍历中序遍历后序遍历高级主题 平衡问题AVL树简介应用案例总结 引言 二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,它的每个节点具有以下性质:左子树上的所有节点的键…

Android开发语言Kotlin简介

官方认可:自 2017 年 Google 正式宣布 Kotlin 成为 Android 开发的官方语言后,它在 Android 开发中的流行度就有了显著提升。 与 Java 的兼容性:Kotlin 在设计时就考虑到了与 Java 的互操作性,这让开发者能够在 Android 项目中轻…

Postman接口自动化测试:从入门到实践!

前言 在软件开发过程中,接口测试是确保软件各组件之间正确交互的关键环节。Postman作为一款强大的API开发工具,不仅支持接口请求的发送与调试,还提供了丰富的自动化测试功能,使得接口自动化测试变得更加高效和便捷。本文将从Post…

机器人走路问题优化解法

public class Test53 {//假设有N个位置,记为1-N,N大于或等于2//开始机器人在M位置上(M为1-N中的一个)//如果机器人来到1位置,那么下一步只能向右来到2位置//如果机器人来到N位置,那么下一步只能向左来到N-1…