Jenkins 与 GitLab 的自动化构建之旅

Gitlab搭建详细步骤 用命令在网上下载一个项目到我们的服务器上:git clone https://github.com/muxiaonong/ci-test.生成公钥私钥对出来,命令:ssh-keygen。安装完成,创建好了ssl密钥和证书。gitlab-ce.repo源包。利用ssl密钥和证书创建签署证书。进入密钥目录:cd .ssh/可以看到ssl密钥和证书。......... 阅读详情


本文来自作者 墨雪卿 在 GitChat 上分享 「Jenkins 与 GitLab 的自动化构建之旅」,「阅读原文」查看交流实录。

「文末高能」

上一篇:《Git 企业开发者教程》

1. Gitlab 的安装及仓库创建

1.1 下载 Gitlab 安装包

1).官网下载速度较慢 建议先行下载

国内的源里面可以找到最新的版本,请单击这里查看。

2).安装依赖

sudo apt-get install curl openssh-server ca-certificates postfix

3).配置 postfix 邮箱

选择 Internet Site (F12) Enter 下一步

这里设置 FQDN 使用默认即可。

1.2 安装 Gitlab

在终端执行:sudo dpkg -i gitlab-ce_9.5.4ce.0_amd64.deb 进行安装。

出现 It looks like… 表示安装成功!

1.3 安装 Git 工具

1.4 生成密钥文件

使用 ssh-keygen 生成密钥文件 .ssh/id_rsa.pub。

这里生成的两个秘钥很重要,会在后面 Gitlab 的仓库配置与 Jenkins 的构建免密连接时候用到。

2. GitLab 简单配置及项目新建

2.1 配置 Gitlab

这一步在官方的文档里面没有,但是如果没有配置的话,直接启动 GitLab,会出现不正确的 FQDN 错误,导致无法正常启动。因此必须做配置。

sudo gedit /etc/gitlab/gitlab.rb

把 external_url 改成部署机器的域名或者IP地址。

然后对 GitLab 进行重配置 (这一步也是启动 GitLab):

sudo gitlab-ctl reconfigure

查看启动状态:

sudo gitlab-ctl status

在浏览器的地址栏中输入服务器的公网 IP 即可登录 GitLab 的界面,第一次登录使用的用户名和密码为 root 和 5iveL!fe。

首次登录会强制用户修改密码。密码修改成功后,输入新密码进行登录。

2.2 Gitlab 项目新建

在 GitLab 的主页中新建一个 Project:

添加 ssh key 导入步骤2中生成的密钥文件内容(秘钥前面1.4节已生成):

ssh key 添加完成:

项目地址,该地址在进行 clone 操作时需要用到:

2.3 代码上传

克隆项目,在本地生成同名目录,并且目录中会有所有的项目文件
git clone git@192.168.0.122:gavin/test.git:

进入到项目目录,拷贝自己的项目文件到此目录上传:

cd test/ cp –rf  自己项目路径/*   . git add . git commit -m “add README” #将代码提交到本地仓库 git push -u origin master #将文件同步到GitLab服务器上

在网页中查看上传的文件已经同步到 GitLab 中:

3. Jenkins 安装与配置

3.1 Java 环境配置

Jenkins 基于 Java,Linux 下安装 Java 只要配置 Java 环境变量即可。
首先,解压java到相应目录,我一般习惯把安装的软件放到目录/usr/local下。

tar -zxvf jdk-6u45-linux-x64.tar.gz /usr/local

编辑环境变量,在 /etc/profile 文件中添加环境变量,Linux 的所有用户都可以使用。

vim /etc/profile

在文件最后添加内容如下:

export JAVA_HOME=/usr/local/jdk1.6.0_45 export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

这样,Java 就配置完成:

3.2 安装 Jenkins

简单来说需要下面四步:

  • wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt—key add -

  • sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’

  • sudo apt-get update

  • sudo apt-get install jenkins

这样之后就安装完成。可以查看进程信息。

ps -ef |grep jenkins

3.3 Jenins 配置

上面只是安装完成了 Jenkins,还需要进行一些配置才可以。
在这个系统端口中,8080已经在使用中了。所以在 /etc/default/jenkins.修改 Jenkins 默认端口设置:

gavin@gavin:~$ gedit /etc/default/jenkins

修改默认端口为 HTTP_PORT=8090,这时通过浏览器就可以访问 Jenkins 了。比如我的地址:http://192.168.0.122:8090/

可以看到提示,为了确保 Jenkins 的安全,将管理员的密码写入文件,需要复制到下面的文本框做验证。

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

然后把输出的内容复制到上面密码框处。

然后,到了选择插件的界面,通过附加功能扩展 Jenkins 可以支持许多不同的需求。

插件安装完成,就到了创建用户的界面,这里可以创建一个 Jenkins 用户。

到这里,基本配置就完成了。

如果在后续使用中,有插件需要安装,通过在已运行的 Jenkins 主页中,点击左侧的系统管理—>管理插件进入如下界面搜索安装:

4. Android 项目构建

4.1 SDK 环境变量的设置

在“系统管理”—>“系统设置”—>“全局属性”设置 SDK 的环境变量名称与本地 SDK 的路径。

4.2 新建 Android 项目

开始创建一个 AndroidDemo 项目进行演:

构建一个自由风格的软件项目,然后填写项目名称。

源码管理,这里可以根据自己的实际选择 Git 或者 SVN 服务器。先设置 Git 的源码路径:

然后设置免密凭证。如果是第一次需要通过“Add”添加。

添加凭证:

单击“add”按钮进行添加:

此处的私钥既是1.4章节所产生。

设置完成上面的步骤,直接按左下角保存,项目创建完成。

5. 参数化项目构建

5.1 参数设置

建好的项目,相应修改构建参数等配置,直接通过“配置”进行修改:

选择实际需要用到的参数,比如发布的版本类型,Git 分支参数等。

1) 选择参数的设置:

设置打包的类型是 debug 或者 release。

打包的 App 针对的发布平台:

2) Git  分支选择:

想在构建的时候,自动获取 Git 仓库的分支并选择构建,可以设置如下:

3) gradle 脚本命令的配置:

选择“Invoke Gradle script”添加 gradle 命令脚本。

设置完这些参数保存,就可以退出到项目列表界面。

5.2 项目构建

进入项目开始构建,选择相应的参数。

构建成功的话,那么结果如下图:

构建完会在“Build History” 部分显示构建结果是成功还是失败并可以查看相应的构建日志,方便分析:

构建结果是红色代表构建失败,上图颜色表示构建成功。

构建状态:下图中分级符号概述了一个 Job 新近一次构建会产生的四种可能的状态。

  • Successful:完成构建且被认为是稳定的。

  • Unstable:完成构建,但被认为不稳定。

  • Failed:构建失败。

  • Disabled:构建已禁用。

在主界面则是通过构建稳定性评分等级进行表示。

构建稳定性:当一个 Job 中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins 会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),这些任务一般以插件的方式实现。

它们可能包括单元测试(JUnit)、覆盖率(Cobertura)和静态代码分析(FindBugs)。分数越高,表明构建越稳定。

下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。

还有很多的参数配置,如触发器配置、邮箱配置,自动化发布等的参数很多,这里就不一一介绍,感兴趣的朋友可以上网或者留言交流。

近期热文

《谈谈源码泄露 · WEB 安全》

《用 LINQ 编写 C# 都有哪些一招必杀的技巧?》

《机器学习面试干货精讲》

《深入浅出 JS 异步处理技术方案》

《敏捷教练 V 形六步法实战:从布朗运动到深度协作》

《从零开始,搭建 AI 音箱 Alexa 语音服务》

《修改订单金额!?0.01 元购买 iPhoneX?| Web谈逻辑漏洞》

「阅读原文」看交流实录,你想知道的都在这里

gitlab的搭建流程 GitLab是一个基于 Git 的版本控制工具,并在此基础上搭建起来的Web服务,旨在提供一个全面的工作流程来帮助管理代码、协作和部署。版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理。其中gitlab-ce是它的社区版,gitlab-ee是企业版,是收费的。管理方便:存储、管理以及浏览已上传的代码,可以对代码库进行版本控制、分支管理和合并请求等操作,集中式服务器更能保证安全性。 阅读详情

相关推荐

Gitlab与Jenkins构建CICD环境

一、概述 1、CI 持续集成 持续集成:持续集成(continuous integration)是指开发者在代码开发过程中,可以频繁将代码部署集成到主干,并进行自动化测试持续交付:是指在持续集成的基础之上,将代码部署到预生产环境持续部署:在持续交付的基础之上,把部署到生产环境的过程自动化 2、持续集成流程 1、开发者将新版本 push 到 Gitlab2、Gitlab 随后触发 jenkins master 节点进行一次 build。(或者通过 web hook 定时检测)3、jenkins.

MKC__jiaoq的博客 6836

Jenkins 上Android 项目集成

Jenkins Android 项目集成 Jenkins 作为持续集成的一个常用工具非常的实用,它不仅方便了测试人员随时打包的需求,也将开发人员从打包的重复工作中解放出来。最近在本地环境部署了Jenkins 环境,并将我们的项目集成到Jenkins 中,特将过程整理成该文档以供参考。 Jenkins 安装步骤比较简单,只要正常按照提示进行操作即可,不做详述。Jenkins 程序下载链接:htt...

JeffTang2020的博客 1210

GitLab+Jenkins 实现 Webhook 自动化触发构建

Webhook 是一种基于 HTTP 的回调机制。当事件发生时,服务端会将该事件的信息通过 HTTP POST 请求的形式推送到预先设置的 Webhook URL。这种方式不需要客户端不断轮询服务端的状态,而是服务端在事件发生时直接将数据发送到客户端。这不仅节省了系统资源,还保证了数据的实时性。GitLab 和 GitHub 都提供了 Webhook 功能,使得外部系统可以接收来自代码库的实时事件通知,比如代码推送、合并请求。

egekm_sefg的博客 1334

gitlab搭建

【代码】gitlab搭建。

Djdhdhskn的博客 1767

gitlab+jenkins自动化部署

搭建jenkins+gitlab自动集成、打包、部署

ALLLiu的博客 1万+

(CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)

在本文档中,我们将概述持续集成,持续交付和持续部署的概念,以及GitLab CI / CD的介绍。软件开发的连续方法基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预。它涉及在每次小迭代中不断构建,测试和部署代码更改,从而减少基于有缺陷或失败的先前版本开发新代码的机会。这种方法有三种主要方法,每种方法都根据最适合您的策略进行应用。Devops持续集成。

m0_74824661的博客 2526

如何使用 GitLab CI/CD 快速实现自动化构建与发布

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !流程介绍CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。这篇文章中,我将会介绍基于 GitLab CI/CD 的自动化构建与发布实践。如下图所示,整个流程将分为几个部分:1.首先开发人员在本地完成项目的开发之后,将代码推送到 Gitlab...

easylife206的专栏 4539

《Jenkins从零到壹》Jenkins集成gitlab自动化构建

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了《Java中高级核心知识全面解析》“zoom: 33%;” />如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了《Java中高级核心知识全面解析》

2301_81749759的博客 1043

《Jenkins从零到壹》Jenkins集成gitlab自动化构建(JAVA 小虚竹 建议收藏)

《Jenkins从零到壹》Jenkins集成gitlab自动化构建(JAVA java 小虚竹) 有粉丝问我,能不能在gitlab提交后,自动化部署jenkins?趁着国庆期间把文章码好了,分享给我的粉丝,同时也分享给大家。

小虚竹的专栏 1万+

利用GitLab Webhook实现Jenkins自动化构建的实战指南

本文详细介绍了如何利用GitLab Webhook实现Jenkins自动化构建的完整实战流程。从环境准备、插件安装、任务配置到Webhook设置,手把手教你打通CI/CD自动化链路,实现代码推送后自动触发构建,有效提升开发效率和代码质量。

embedding5hiker的博客 1086

jenkins+maven+gitlab自动化构建打包、部署

Jenkins自动化部署实现原理环境准备1、jenkins已经安装好2、gitlab已经安装好。

a13568hki的博客 2787

【jenkins】jenkins+gitlab实现一键构建部署

Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。官方网站。

程序员王多余的个人博客 6961

基于Jenkins和GitLab的前端自动化实践

什么是前端自动化 前端自动化是指前端代码的自动化构建、打包、测试及部署等一系列流程 为什么要做前端自动化 减少开发人员重复工作,也能降低人为工作的失误 效率迭代,便捷部署 快速交付,便于管理

2301_76387166的博客 996

Jenkins自动化构建+gitlab+项目

Jenkins+gitlab+项目部署(若依项目)

Boforest的博客 4196

小白学习图像处理6——Canny边缘检测算法原理

目录结构一、高斯滤波二、梯度计算1、原理2、代码如下三、非极大值抑制三、双阈值检测四、matlab 的 edge函数五、总结 Canny边缘检测算法主要步骤:高斯滤波、梯度计算、非极大值抑制和双阈值检测。 一、高斯滤波   使用高斯滤波的目的是平滑图像,滤除图像中的部分噪声(因为微分算子对噪声很敏感)。高斯滤波具体办法是生成一个高斯模板,使用卷积进行时域滤波: img = im2double(im...

我有两颗糖 7791

DCDC: 前馈电容优化环路稳定性的设计与验证方法

本文深入探讨了DCDC转换器中前馈电容对环路稳定性的优化设计与验证方法。通过分析前馈电容的作用原理、选型计算和实验验证,详细介绍了如何利用穿越频率和相位裕度等关键参数提升系统性能。文章还提供了实用的设计经验和问题排查技巧,帮助工程师在实际应用中实现DCDC转换器的最佳稳定性。

weixin_42531516的博客 438

Jenkins + GitLab 自动化构建部署项目

在测试环境部署这块, 经历过以下几个阶段: 阶段一 有一台测试服务器把项目放上面测试, 当初也没有什么相关的经验, 每次改完代码本地打包上传到服务器上, 然后一顿命令启动项目, 完成了最原始的部署。 这种方式构建和部署全靠人肉, 项目简单的时候还好说, 项目一多配置一多 ( 比如微服务 ) 中间哪个环节粗心出点错那简直就是灾难。 同时还要专门有人对运维相关的技术比较了解, 不然哪天我不在测试工作就完全停滞了。 阶段二 既然都是重复工作, 那就整理下步骤写个脚本 从

zhangjunli的博客 8582

从零构建:如何在VSCode中为HBuilderX迁移的UniApp项目搭建TypeScript支持环境

本文详细指导如何将HBuilderX中的UniApp项目迁移至VSCode并搭建TypeScript支持环境。通过pnpm包管理器初始化项目、配置tsconfig.json和vite.config.ts文件,实现工程化迁移与TypeScript深度集成,提升开发效率和代码质量。

book8的博客 1050

GitLab 钩子 + Jenkins 自动化构建项目

通过实际测试,GitLab 的 合并请求事件,是不管 哪个分支合并到哪个分支,它都会触发通知,需要由你的服务端来决定是否需要处理。这样就会造成即使不是我们当前 Jenkins 构建任务分支的合并,也会触发 Jenkins 的构建。

matrixlzp的博客 1291

【安全设备篇】HVV面试专题

还有就是这个可能是被访问的这个内网系统,本身业务系统存在业务逻辑问题,因为内网所布置的很多业务系统往往不会考虑一些安全性问题,比如在正常的业务逻辑请求中直接带了sql语句,就会触发设备规则产生告警,这一类是属于误报,然后会将此告警上报给研判人员,需要研判组专家和甲方客户确认下是否是该系统存在此业务逻辑问题,并且需要确认告警的源ip在此告警的时间段附近有没有进行操作过。天眼日志分析主要基于系统和应用程序的日志数据来识别安全威胁,而威胁感知则通过收集和分析多种来源的情报信息。理解威胁的性质和威胁背后的原理。

大河之犬的博客 7923

【YOLOv12多模态融合改进】(可见光+红外)涉及像素级融合、特征级融合(中期、中后期、后期)、决策级融合的完整配置步骤以及二次改进方案

在网络输入阶段将多模态数据直接合并,形成统一的特征表示。

Limiiiing的博客 1212
上一篇: g4e常见问题#1 解决Git在Windows上使用http/https无法认证的问题
下一篇: 如何用 Python 做自动化测试
软件供应链安全
软件供应链安全 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 347原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值