小丑的个人博客

记录精彩的学习过程

  menu
17 文章
0 浏览
ღゝ◡╹)ノ❤️

docker运行jenkins

部署

创建目录,做docker的volume卷

mkdir -p /data/jenkins/jenkins_home

设置权限,默认情况下 (默认情况下,jenkins镜像用jenkins用户启动,不改权限的话,没有写入权限)

chmod -R 777 /data/jenkins

启动

docker run -d --name myjenkins -p 8080:8080 -v /data/jenkins/jenkins_home/:/var/jenkins_home jenkins/jenkins:2.289.1-lts-jdk11

环境安装

开启权限全局安全配置

1.安装插件

我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限

image-20210623190045149

2.修改授权策略

授权策略切换为"Role-Based Strategy",保存

image-20210623190314632

保存

3.创建角色

在系统管理页面进入 Manage and Assign Roles

image-20210623190425818

点击"Manage Roles"

image-20210623190753923

image-20210623190923694

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

item roles(项目角色):针对某个或者某些项目的角色 Slave roles(奴隶角色):节点相关的权限

image-20210624093418387

添加以下三个角色:

  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
  • role1:该角色为项目角色。使用正则表达式绑定"html.*",意思是只能操作html开头的项目。
  • role2:该角色也为项目角色。绑定"java.*",意思是只能操作java开头的项目。

image-20210624101239186

保存。

4.创建用户

image-20210624094454076

image-20210624094526917

image-20210624094943407

新建两个用户qing hai

image-20210624095148491

5.给用户分配角色

系统管理页面进入Manage and Assign Roles,点击Assign Roles
绑定规则如下:

  • qing用户分别绑定baseRole和role1角色
  • hai用户分别绑定baseRole和role2角色

image-20210624100000858

image-20210624101054702

image-20210624101415504

6.创建项目测试权限

image-20210624101521755

image-20210624101629753

image-20210624101637914

结果正常

凭证管理

权限管理插件 Role-based Authorization Strategy

凭证管理插件 Credentials Binding

image-20210622152635051

image-20210622152651774

image-20210622152709850

image-20210622152732767

image-20210622153320777

可以添加的凭证有5种:

  • Username with password:用户名和密码
  • SSH Username with private key: 使用SSH用户和密钥
  • Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
  • Certificate:通过上传证书文件的方式

常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)

公钥填入gitea里,方便拉取代码

image-20210622153516390

项目部署

一、自由风格的html项目

1. 源码在gitea上,需要先安装git插件

image-20210622154103511

2. 安装凭证管理插件

拉取代码,需要认证

3. 新建任务

image-20210622153905298

4.拉取源码

image-20210622154444326

5.clone下来的文件,拷贝到其他服务器

image-20210622154625638

拉取代码后,所有文件复制到需要部署的服务器上

二、maven项目:

maven项目同样需要凭证管理插件和git插件,上面安装过了,这里不需要重复安装

maven项目需要安装插件Maven Integration

设置

image-20210622160219237

1.新建maven项目

image-20210622155033869

2.拉取代码

image-20210622155247072

3.构建和构建后操作

image-20210622155934995

三、Vue项目

1.安装配置NodeJS插件

插件里先安装nodejs插件

然后在 系统管理---> 全局工具配置里设置

image-20210622160432657

2. 新建项目拉取源码

image-20210622160536898

3.构建环境设置

image-20210622160649311

4.构建

image-20210622160720127

5.构建后操作

构建脚本里,可以实现这里的功能

image-20210622160803407

四、pipeline部署maven项目

1.安装插件-新建项目

image-20210622161324195

2. 新建任务

image-20210622161423609

3. 编写流水线脚本

image-20210623144516533

pipeline {
    agent any

    stages {
        stage('拉取代码') {
            steps {
                git credentialsId: '28f422e7-18d1-41f9-84e1-4852e687a666', url: 'git@192.168.0.52:lqh/test_server.git'
            }
        }
        stage('编译') {
            steps {
                sh '/var/jenkins_home/maven/bin/mvn clean package'
            }
        }
		stage('部署') {
            steps {
                sh '''scp target/*.jar root@192.168.0.68:/data/java/server/app.jar
ssh root@192.168.0.68 \'/data/java/server/run.sh \' &'''
            }
        }
    }
}

问题处理

插件下载慢

image-20210623154319815

image-20210623154418207

image-20210623154446088

修改升级站点的URL

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

或者

http://mirror.xmission.com/jenkins/updates/update-center.json

Publish over SSH添加SSH Server报错

提示信息:

jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@60373f7]

image-20210623140255604

问题原因

因为生成密钥的openssh的版本过高的原因

生成密钥
[root@localhost ~]# ssh-keygen -t rsa

查看所生成私钥的格式:
[root@localhost ~]# cat .ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
MIIEpAIBAAKCAQEAwH8MKZFzlp8gRMlfd9BnMXboe6J8k75WMXVx63l7jmkh2XBY
Ygrd72jAZF/2KIYX8/a49arPGnf7qC9x40VUwXlY4BbxOEyXLMVXRDZJ6UHDokqU
ny9NqjSssGKXcaoH9gu7a8A/mEEJhlLcKHWFD8SnkmNwdDFxHUQJVhS6utGm2aAA
IWGJpGhoyVhsRr/qi/NAbt6xXLUwoFY9A974Uq9Zm403v99rHRx95ranLzGR7BJA

可以看到密钥的首行是:

-----BEGIN OPENSSH PRIVATE KEY-----

jenkins 2.2.89.1 版本在检验密钥时还不支持这种格式

问题解决

[root@localhost ~]# ssh-keygen -m PEM -t rsa -b 4096

参数解释
-m 参数指定密钥的格式,PEM是rsa之前使用的旧格式
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。
     -m key_format
             Specify a key format for the -i (import) or -e (export) conversion options.  The supported key formats are: “RFC4716” (RFC
             4716/SSH2 public or private key), “PKCS8” (PEM PKCS8 public key) or “PEM” (PEM public key).  The default conversion format 						 is “RFC4716”

查看密钥格式

[root@localhost .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAv/cWf+0TxjN1JXbxscgF9trmAPsR5bKZOzOcgi+OSHcINoQh
9LL578hNNKFviwku+KalEpN98WeWof5wVaM3VmWIQkMp/9YvMzev+Y9Sx7USoeAO
IW5qFQnp5LxVLLTX0nsdcg+nN96eekQ2ZwSb32znatZEeZdmnVPvmACQE4PMYl89

可以看到密钥的首行是:

-----BEGIN RSA PRIVATE KEY-----

重新添加私钥,问题解决


标题:docker运行jenkins
作者:harbor
地址:http://www.ipfshyys.com/articles/2022/10/18/1666087256744.html