跳至主要內容

setup

chanchaw大约 4 分钟devOps

概述

讲解从安装部署服务到安装插件,到创建定时任务的完整过程

安装部署

安装

从自己的阿里云私有镜像仓库安装 docker 版本 jenkins,后来制作流水线任务时发现无法使用 docker 功能自动下载依赖环境,进入 jenkins 容器内也无法下载 docker-ce-cli,下面是尚硅谷视频教程中老师自己制作的 jenkins 镜像,其中包含 docker-ce-cli

带有docker镜像创建 jenkins 容器

镜像文件在 docker 官方仓库中,已经通过自己的 github 仓库 docker_image_pusher 下载并推送到自己的阿里云私有镜像仓库中,通过下面命令拉取并创建容器

# 拉取镜像文件
sudo docker pull crpi-imkwu1c6wa3ojqar.cn-shanghai.personal.cr.aliyuncs.com/ccdockerhub/jenkins:2.455-jdk21

# 不要使用该命令创建容器,继续往下看
sudo docker run \
-d \
-u root \
--privileged \
-p 10809:8080 \
-p 10005:50000 \
--name jenkins \
--restart=always \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/localtime:/etc/localtime:ro \
crpi-imkwu1c6wa3ojqar.cn-shanghai.personal.cr.aliyuncs.com/ccdockerhub/jenkins:2.455-jdk21

# 通过上面代码创建的 jenkins 容器后,在容器内的家目录 /var/jenkins_home 被映射到宿主机 docker 的命名卷中,即命令 -v jenkins-data:/var/jenkins_home 的效果。通过下面命令删除容器,删除镜像文件后该家目录仍然存在 docker 命名卷中,导致再次使用同样的命令安装 jenkins 容器后使用的仍然是该家目录,如果第一次设置了密码被遗忘,那么再次安装后让然是该密码
sudo docker stop jenkins
sudo docker rm jenkins
sudo docker rmi -f crpi-imkwu1c6wa3ojqar.cn-shanghai.personal.cr.aliyuncs.com/ccdockerhub/jenkins:2.455-jdk21

# 所以建议将上面命令修改后制定 jenkins 家目录为宿主机的具体物理绝对路径上
sudo docker run \
-d \
-u root \
--privileged \
-p 10809:8080 \
-p 10005:50000 \
--name jenkins \
--restart=always \
-v /home/chanchaw/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/localtime:/etc/localtime:ro \
crpi-imkwu1c6wa3ojqar.cn-shanghai.personal.cr.aliyuncs.com/ccdockerhub/jenkins:2.455-jdk21

创建容器后通过命令 sudo docker logs jenkins 查看创建日志,其中有初始密码 0c873366ceec4b76891ef74da28ca102

登录与安装插件

查看安装后的默认管理密码并创建登录账号,设置下载插件的源 URL 然后安装必要的插件

查看密码创建账号

安装后通过命令 sudo docker logs jenkins 查看日志,其中有初始管理员密码,输入后还要创建一个常用的管理员账号

设置插件源

按照路径 Manage jenkins > Plugins > Advanced settings > 升级站点URL 修改为 https://xget.xi-xu.me/jenkins/update-center.json,是 xget 提供的魔法。如果在安装后初次登陆系统时候所有推荐的插件都没有下载成功,修改源后需要重启 jenkins 容器。

安装必要插件

初次进入系统时会要求安装推荐的插件,要在此处截图后待进入系统将所有推荐的插件都安装好,还要安装 Blue Ocean

按照路径:系统管理 > 插件管理 > Available Plugins 中搜索所有带 docker 的插件勾选后点击 Install After Restart。按照下图的步骤配置 docker 功能

上图中可以看到 docker 版本说明 jenkins 所在容器能够访问到宿主机的 docker,能够查询到宿主机 docker 的镜像文件以及当前创建的容器,并不表示可以操作 docker 下载镜像并创建容器,要实现该功能要求容器版本 jenkins 内置 docker-ce-cli 插件,如果没有则需要进入 jenkins 容器内部安装(或者一开始创建 jenkins 的镜像中就包含该插件)

实际测试下来,即使 jenkins 所在的宿主机设置了网络代理施展魔法依然无法在 jenkins 容器内部成功安装 docker-ce-cli,最好是保证 jenkins 的镜像文件中就有 docker-ce-cli

创建自动任务

创建流水线

按照图示创建流水线

下图中的代码如下

pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                echo '拉取代码'
                sh 'pwd'
            }
        }
        stage('项目构建') {
            steps {
                echo '项目构建'
                sh 'ls -al'
            }
        }
        stage('项目部署') {
            steps {
                echo '项目部署'
                sh 'npm -v'
            }
        }
    }
}
执行流水线任务

按照下图步骤执行一个流水线任务