Jenkins + Gitee 项目持续集成和持续交付 - 第一篇
本系列Jenkins使用Docker部署,Gitee项目需要编写Dockerfile以构建Docker镜像。构建出来的Docker镜像将被Jenkins自动推送至阿里云容器镜像服务中,其实就是阿里云提供的“Docker Hub”。
本系列依次做到:
- 手动调用Jenkins去构建项目镜像并推送至镜像仓库中。本文内容!
- 当Gitee仓库被push操作时,Jenkins会自动构建项目镜像并推送至镜像仓库中。Jenkins + Gitee 项目持续集成和持续交付 - 第二篇
- Jenkins构建项目镜像并推送至镜像仓库之后,可以自动更新已经在服务器上运行的服务实例。待完成
其中,1的实现可以在自己电脑上安装Jenkins,2和3需要将Jenkins安装至拥有公网IP的服务器中才可以做到。
准备Jenkins
安装Jenkins
需要提前安装Docker和docker-compose。
docker-compose.yaml
文件:
version: '3.5'
services:
jenkins:
image: jenkinsci/blueocean
container_name: jenkins
restart: always
user: root
ports:
- "8081:8080"
- "50000:50000"
volumes:
- jenkins-data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
volumes:
jenkins-data:
在docker-compose.yaml
目录下执行docker-compose up -d
启动Jenkins,首次启动会拉取镜像。
如下输出代表启动成功:
[+] Running 3/3
⠿ Network docker_default Created 0.1s
⠿ Volume "docker_jenkins-data" Created 0.0s
⠿ Container jenkins Started 3.5s
首次启动Jenkins
根据ip+8081端口打开Jenkins:
在docker-compose.yaml
目录下执行docker-compose logs
可以看到解锁 Jenkins所需要的密码:
jenkins | Jenkins initial setup is required. An admin user has been created and a password generated.
jenkins | Please use the following password to proceed to installation:
jenkins |
jenkins | 320ac6e4057bd7a881f30d63456596ab
jenkins |
jenkins | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
输入密码后继续:
选择“安装推荐的插件”即可。
上图3个插件安装失败,不必理会,直接继续。
创建一个账户:
实例配置这里直接保存即可:
重启Jenkins后刷新页面,使用刚才创建的账户登录即可:
升级Jenkins
登陆之后,进入“系统管理”,升级Jenkins。这里报的错不用管,稍后更新完插件就都解决了。
勾选“安装完成后重启Jenkins(空闲时)”
更新插件
进入“系统管理”->“插件管理”:
把插件全选后,点击“下载待重启后安装”。
在最下面勾选“安装完成后重启Jenkins(空闲时)”
更新完之后,系统管理就不会再报错了。
安装插件
Gitee插件
搜索插件Gitee:
勾选并安装:
Docker Pipeline插件
搜索插件Docker Pipeline:
勾选并安装:
Jenkins配置凭证
Gitee私人令牌
在Gitee生成私人令牌:
在“系统管理”->"Credentials"中添加刚生成的Gitee私人令牌。
进入“Credentials”后,点击“Stores scoped to Jenkins”->"System"->"全局凭据 (unrestricted)",右上角“Add Credentials”。
直接Create即可。
然后进入“系统管理”->“系统配置”,填写Gitee配置:
保存即可。
阿里云容器镜像服务凭证
首先要先配置固定密码:
配置密码之后,在Jenkins中Add Credentials即可:
Gitee凭证
添加Gitee登陆用户名和密码:
直接Create即可。
准备Gitee仓库
这里我用的是自己之前写的一个项目,项目根目录下要有Dockerfile文件:
项目根目录下也要有Jenkinsfile文件:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
def gitHash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
docker.withRegistry('https://registry.cn-hangzhou.aliyuncs.com', '2') {
def dockerImage = docker.build("fu-xdu/nft-server:${gitHash}")
dockerImage.push("${gitHash}")
dockerImage.push("latest")
}
}
}
}
}
}
注意:上面Jenkinsfile文件中的 docker.withRegistry('https://registry.cn-hangzhou.aliyuncs.com', '2')
的2
是我们配置的阿里云容器镜像服务凭证的ID!
准备阿里云镜像仓库
Jenkins创建任务
在Dashboard新建任务:
写入名称,选择“流水线”:
选择Gitee链接:
将“流水线”->“定义”改为“Pipeline script from SCM”,并填写仓库信息:
保存即可。
手动操作Jenkins构建项目
在NFT-Server页,点击立即构建:
点击左“#1”可以查看构建时的Console Output,构建完成后的输出如下所示:
前往阿里云容器镜像仓库,可以看到镜像已经存在: