Jenkins使用笔记

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Jenkins使用笔记脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Jenkins使用笔记

Jenkins是一款开的CI/CD工具。用于自动化各种任务,包括构建、测试、部署。其主要功能通过插件拓展来实现。

Blue Ocean 是官方推荐的一款皮肤蓝色版皮肤。

安装Jenkins环境

需安装JDK8.0、docker、blueocean、gITlab。此处默认docker已安装

1、安装JDK

下载解压包,到本地,然后上传到远端解压。后,配置java运行环境。

https://blog.csdn.net/pdsu161530247/article/details/81582980

2、安装Jenkins

# 拉镜像
docker pull jenkinsci/blueocean # 官网推荐用这个镜像
# 查看镜像
docker images
# 建镜像实例
docker run ^
  -u root ^ # 以root权限运行。如果jenkins用到某些宿主机程序又没有权限,可以通过添加权限分组解决
  --rm ^ #退出删除
  -d ^ #后台运行模式
  --name jenkins
  -p 49154:8080 ^
  -p 50000:50000 ^
  -v jenkins-data:/VAR/jenkins_home ^ # 目录映射,将容器卷映射到外部环境,方便查看
  -v /var/run/docker.sock:/var/run/docker.sock ^ # 将容器内的套接字映射到宿主机上,否则jenkins运行docker会报错。原因是jenkins容器内没运行docker守护进程,要使用宿主上的进程
  jenkinsci/blueocean 
  
# 查容器
docker ps -a
# 进入容器命令行
docker exec -it jenkins /bin/bash
# 查初始化密码
cat /var/jenkins_home/secrets/initialAdminPassword

注意,首次登录后要创建管理员用户。admin/123

docker run -u root --name jenkins --rm -d -p 49154:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

3、安装Gitlab

# 下载社区版
docker pull gitlab/gitlab-ce
# 安装社区版 gitlab
docker run --detach 
	--hostname gitlab-server 
	--publish 443:443 --publish 80:80 --publish 22:22 
	--name gitlab 
	--restart always 
	--volume /srv/gitlab/config:/etc/gitlab 
	--volume /srv/gitlab/LOGs:/var/log/gitlab 
	--volume /srv/gitlab/data:/var/opt/gitlab 
	gitlab/gitlab-ce:latest
# 修改配置
vi /srv/gitlab/config/gitlab.rb
# 修改本机访问地址
external_url 'http://192.168.xx.xx/'
# 重启
docker restart gitlab

4、初始化Gitlab项目

1、gitlab创建空白项目
2、本地创建vue工程
3、本地工程内打开git bash命令行,设置gitlab空白项目为远端
	git remote add origin <gitlab addr>
4、git fetch origin # 同步远端
5、git pull origin
6、git add . # 提交代码
7、git commit -m  'msg..'
8、git push origin master # 合并代码

打包前端工程并部署镜像

首个例子采用blueocean自由风格方式在jenkins交互界面创建脚本,达到自动编译、制作镜像、部署镜像能力。

要实现这个目标,需要:

  1. Jenkins拉取到gitlab上的代码
  2. Jenkins的工作空间安装node_modlues依赖、将工程打包成dist
  3. 制作Docker镜像
  4. 运行镜像

1、初始化工程

在vue工程根目录下创建Dockerfile文件docker build指令根据该文件去制作镜像。此处以nginx为基础镜像,将前端包拷贝到/usr/share/nginx/htML下,这样可以利用nginx的默认配置达到部署目的。

From nginx
COPY dist/ /usr/share/nginx/html

Jenkins使用笔记

截图中jenkins文件是声明式流水线文件script内预制相应要执行的脚本;nginx.config设置nginx配置项,方便替换nginx镜像内的默认配置文件。本例采用脚本式流水线只需添加Dockerfile即可。

git add Dockerfile # 将镜像文件提交到gitlab
git commit -m ''
git push origin

2、配置Jenkins环境

安装gitlab插件、安装nodeJs插件。如果不装Nodejs插件,则在流水线上无法选择node环境。

# 登录Jenkins
# 1.安装插件
dashboard>系统管理>插件管理>可选插件。搜索并安装
# 2.配置全局环境
Dashboard>系统管理>全局工具配置。 找到NodeJS,安装NodeJS 14.17.5(我本地的版本)

3、创建流水线

# 1、创建流水线
Dashboard>新建任务>构建一个自由风格的软件项目
# 2、设置源码地址,并添加凭证
1)源码管理选择git,Repository URL输入工程地址
2)Credentials 的右下角选择高级,配置上gitlab的用户名、密码。再选择该凭证
3)选择构建*/master
# 3、构建环境
1)选择PRovide Node &amp; npm bin/ folder to PATH # 如果没配NodeJS环境,此处会没有选项
2)选择配置的Node版本
# 4、构建
1)安装打包
echo $PATH
node -v
npm -v
npm install
npm run build
2)制作镜像,启动镜像
docker stop myApp || true 
 && docker rm myApp || true 
 && docker build  -t myApp  . 
 && docker run -d -p 8989:80 --name myApp myApp

工程的容器会运行在宿主机上。

Jenkins启停操作

可以直接通过URL方式进行启停操作。

  • restart 重启
  • reload 重载
  • exit 停止
http://192.168.xx.xx:49154/restart
http://192.168.xx.xx:49154/reload
http://192.168.xx.xx:49154/exit

Jenkins升级

删除原来的Jenkins容器,jenkinsci/blueocean,使用新镜像jenkins/jenkins用相同的命令参数创建容器,里面相关配置跟原来的内容一样。因为创建容器时把券映射到了相同的地方。

附录

问题1:gitalab启动容器后一直处在"starting"状态,登录报502。

解决办法:重启、重装或者直接将其装在容量达标的物理机上。

我的是重启多次,在某一刻可用了。报502是因为gitlab中/opt/gitlab/var/unicorn/unicorn.pid迟迟没有启动。过了几个小时再去看,状态变"healthy"了。

问题2:jenkins使用docker命令,报守护进程未启动。

原因:jenkins是容器模式运行,无法使用宿主的Docker进程,安装Docker插件后,Jenkins容器内docker守护进程没有启动。

解决办法:网上给出1、在jenkins的镜像基础上再加一层Docker镜像。2、套接字文件上添加tcp映射一个端口到宿主机上。可再容器内用docker -H tcp://ip:prot command方式访问出去。3、启动jenkins容器时将套接字映射到宿主机上,容器内可直接使用宿主机的docker进程。

我使用方法3,-v /var/run/docker.sock:/var/run/docker.sock将存储卷映射出去。此外可能还要添加docker角色运行Jenkins,否则可能会没权限。我是再启动时添加-u root

问题3:报指定代理"docker"无效WorkflowScript: 4: Invalid agent tyPE "docker" specified.

解决办法:安装Docker、DockerPiple插件

问题4:执行shell脚本报Permission denied没有权限

sh 'chmod 777 ./cicd/*.sh'

脚本宝典总结

以上是脚本宝典为你收集整理的Jenkins使用笔记全部内容,希望文章能够帮你解决Jenkins使用笔记所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。