jenkins搭建笔记

文章目录

一、一些jenkins的使用说明

1)有些环境环境无法通过插件完成搭建

做法:在服务器上安装好编译环境,通过Shell命令执行编译

2)发布任务方式:

(1)在管理页面点击触发
(2)配置远程API触发

若使用git存储代码的话,可以在git web仓库配置Web hook,在执行一些Git操作时,自动触发对应的jetkins发布任务

3)jenkins分布式部署

作用:多个服务器节点自动抢占任务

4)docker方式安装jenkins

二、jenkins发布流程配置

  • 配置分布任务一般分为下面几步
    ①新建任务
    ②下载代码
    ③编译代码
    ④远程部署程序
    ⑤配置任务自动触发

1)新建发布任务

新建发布一般采用freestyle方式

若是创建与有发布任务类似的任务,直接在创建任务时填写需要复制的任务名称

2)任务配置:下载代码

jenkins默认支持git,配置源码地址

①若使用svn,需要安装额外插件

②jenkins默认只支持一个git仓库配置,若需要下载多个git仓库代码,需要安装Multiple SCMS插件

下载这个插件后,源码管理会出现新的选项

下载的代码或编译生成的文件可以在发布任务后,在workspace查看

3)任务配置:编译代码

原则:一般是推荐shell指令去编译

在jenkins环境上安装相关编译环境后,通过shell指令编译软件

jenkins会捕捉输出日志方便用户查看

jenkins官方推荐使用插件完成编译

大杂烩软件编译推荐调用docker的方式进行编译

4)任务配置:远程部署程序

推荐shell指令完成

可是使用scp、ssh完成文件发送、远程指令执行

如果担心代码泄露问题,可以使用jenkins的Publish Over SSH插件完成这一步骤

安装好Publish Over SSH插件后,需要先在全局的系统配置中添加好远程服务器

然后在发布任务中就可以选择对应的远程服务器


5)配置任务自动触发

①生产环境:重要的运行环境,如生产环境,手动点击触发任务比较好

②开发、测试环境:推荐自动触发任务(例如新代码上传)

配置自动触发:

但是这个API通常是调用不通的,除非配置了允许不登陆即可使用Jenkins,所以还需要再用户地址中设置用户名和用户token

①用户token需要手动创建:

②获取到完整的APItoken后即可在具体的GIT仓库的WebHook中进行配置

三、jenkins使用docker进行软件编译

  • 备注
    将项目代码和对应的docker编译镜像保存在同一个Git仓库,也就是同时备份代码和对应的编译环境,这样就不会出现光有代码但无法还原编译环境的困境

1)环境准备:

  • 准备
    ①在jenkins服务器上安装docker

1)若服务器是单纯给jenkins使用的,且jenkins不是以docker方式安装的,则直接在服务器上安装docker即可

2)如果喜欢将git、jenkins、文档资料都部署在同一台服务器且使用docker运行这些服务的话,则需要在docker运行的jenkins中再内嵌docker,防止污染宿主机docker环境

2)docker运行docker方案

但是默认情况下jenkins 官方镜像不支持远程使用docker,需要在jenkins容器中安装docker client才能远程使用docker

需要配置网络代理,不然会构建失败

建议去掉dockerfile里面的jenkins用户

不然容器不能使用apt安装其他软件

3)希望旧的jenkins容器改成docker编译方式的方式的话(不希望重新配置jenkins任务的话)

  • 做法
    ①将旧的jenkins容器中的jenkins_home文件夹拷贝出来 替换到新的jenkins容器中并重启重启
  • 特点
    这种方式适合新旧容器中的jenkins版本相近情况,所以dockerfile构建镜像时,最好以对应版本的jenkins 镜像作为基础镜像

4)实现docker编译

(1)制作用于编译软件的docker镜像
  • 步骤
    ①基于Ubuntu等基础镜像启动容器
    ②编写启动容器启动的脚本:脚本是启动此镜像对应的容器时自动执行相关编译命令
    ③将容器打包成镜像
  • 步骤说明
    ①代码下载交给jenkins完成
    ②代码文件以挂载的方式将其引入容器
    ③启动脚本只写编译程序的命令(默认情况下jenkins会将代码下载在此任务的workspace目录下,容器启动时会将workspace挂载到容器中的/Code目录,启动脚本会将代码编译,编译后的程序可以放在/Code目录中,这样jenkins就可以在workspace目录下获取编译后的文件)

    ④推荐使用Git服务集中存储这些编译镜像,将代码和对应的编译镜像保存在同一个仓库
(2)存储制作的镜像

在jenkins容器中,登陆Git服务的命令

gitlab可以看到docker登陆和更新镜像命令

一个git仓库可以存储多个版本的编译镜像

(3)使用docker镜像进行编译软件

Jenkins使用docker编译的官方说明文档

https://www.jenkins.io/doc/book/installing/docker/

四、jenkins部署实战

1)环境准备

①安装所需库

②基于docker-compose进行安装,确保以下两个目录存在

shell 复制代码
1)/opt/jenkins/jenkins_home目录
2)/usr/local/apache-maven-3.6.3目录


③第一次登陆可以看到密码

④安装插件

⑤安装后添加管理员账号进入jenkins后台

https://www.bilibili.com/video/BV1Kuu3zJEY2?spm_id_from=333.788.videopod.episodes\&vd_source=27ec8b3b09d2a66ceeb9dbe961a247d3\&p=3

相关推荐
ajsbxi17 小时前
【Java 基础】核心知识点梳理
java·开发语言·笔记
呱呱巨基17 小时前
vim编辑器
linux·笔记·学习·编辑器·vim
新子y17 小时前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
聪明的笨猪猪17 小时前
Java JVM “调优” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
爱学习的uu18 小时前
CURSOR最新使用指南及使用思路
人工智能·笔记·python·软件工程
YuCaiH18 小时前
Linux文件处理
linux·笔记·嵌入式
早睡冠军候选人18 小时前
Ansible学习----Ansible Playbook
运维·服务器·学习·云原生·容器·ansible
sulikey18 小时前
从实验出发深入理解Linux目录权限:r、w、x分别控制什么?能否进入目录到底由谁决定?
linux·运维·服务器·ubuntu·centos
Cathy Bryant18 小时前
大模型损失函数(二):KL散度(Kullback-Leibler divergence)
笔记·神经网络·机器学习·数学建模·transformer
qq_3985865418 小时前
Threejs入门学习笔记
javascript·笔记·学习