Jenkins安装和使用
JenkinsJenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件,有丰富的插件支持,可以监控持续重复的工作。Jenkins的安装Jenkins可以作为一个服务直接安装在操作系统上,但是由于对java环境的要求,我这里选择使用docker安装。Jenkins的核心配置和运行时文件都放在/var/jenkins_home目录,所以可以选择将这个目录挂载到
Jenkins
Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件,有丰富的插件支持,可以监控持续重复的工作。
Jenkins的安装
Jenkins可以作为一个服务直接安装在操作系统上,但是由于对java环境的要求,我这里选择使用docker安装。
Jenkins的核心配置和运行时文件都放在/var/jenkins_home目录,所以可以选择将这个目录挂载到宿主机上。
首先创建一个volume
[root@k8s-master data] docker volume create my-jenkins-data
my-jenkins-data
然后运行启动Jenkins容器
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v my-jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
jenkinsci/blueocean
启动完以后,就可以在浏览器访问8080端口进入Jenkins后台页面。
然后会发现需要在/var/jenkins_home/secrets/initialAdminPassword目录下拿到密码才能登录Jenkins。
咱们在第一步中已经把这个目录挂载出来了,要找到对应的位置,然后查看密码。
[root@k8s-master data] docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
75b0ccfa6398 jenkinsci/blueocean "/sbin/tini -- /usr/…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::
[root@k8s-master data] docker inspect 75b0ccfa6398 |grep Mounts -A 20
"Mounts": [
{
"Type": "volume",
"Name": "my-jenkins-data",
"Source": "/var/lib/docker/volumes/my-jenkins-data/_data",
"Destination": "/var/jenkins_home",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
},
{
"Type": "bind",
"Source": "/var/run/docker.sock",
"Destination": "/var/run/docker.sock",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
[root@k8s-master _data] cd /var/lib/docker/volumes/my-jenkins-data/_data && cat secrets/initialAdminPassword
b3bf3530017a44d3a6421f1e1e054b41
使用这个密码登陆进去后台,然后就是一系列的初始化操作,跟着提示完成Jenkins的初始化。
Jenkins插件的安装和加速配置
下面选择安装一个Docker Pipeline,这个插件可以让Jenkins在流水线运行时使用docker容器作为代理。
修改jenkins_home下面的hudson.model.UpdateCenter.xml,将url修改为下面的内容
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
然后在jenkins_home/updates下运行
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
Jenkins的简单demo
这里是通过一个简单的打包运行的案例展示Jenkins的使用。
新建一个流水线任务,流水线选择Pipeline script from SCM,将自己的git项目配置进去。
我这边是一个go的项目,内容如下:
package main
import "fmt"
func main() {
fmt.Println("hello Jenkins")
}
然后配置pipeline,这种声明式api使用起来还是非常的舒服的。
这里使用到了上面安装的Docker Pipeline插件。
本身Jenkins容器内并没有go的运行环境,所以要用容器代理的方式,使用具有go环境的容器去编译go的文件,然后在后面的阶段使用。
pipeline {
agent any
environment {
ws = "$WORKSPACE"
}
stages {
stage('打包'){
agent {
docker { image 'golang:1.14-alpine' }
}
steps {
sh 'go version'
sh 'cd $ws && go build -o server'
}
}
stage('测试运行'){
steps {
echo "测试运行..."
sh './server'
}
}
}
}
Jenkins的更多使用
Jenkins的功能很强大,可以实现测试、docker镜像的打包、推送等很多功能,如果代理镜像集成了kubectl的话还可以很方便的做到kubernetes的自动部署,大多数功能都可以使用sh + groovy脚本组合实现,大家可以参考下官方文档。
更多推荐
所有评论(0)