Tianyi's Blog Tianyi's Blog
首页
  • 计算机网络
  • 操作系统
  • 计算机科学
  • Nginx
  • Vue框架
  • 环境配置
  • Java
  • JVM
  • Spring框架
  • Redis
  • MySQL
  • RabbitMQ
  • Kafka
  • Mirror Sites
  • Dev Tools
  • Docker
  • Jenkins
  • Scripts
  • Windows
  • 科学上网
  • 旅行
  • 网站日记
  • 软件
  • 电子产品
  • 杂野
  • 分类
  • 友情链接
GitHub (opens new window)

Tianyi

一直向前,永不停止
首页
  • 计算机网络
  • 操作系统
  • 计算机科学
  • Nginx
  • Vue框架
  • 环境配置
  • Java
  • JVM
  • Spring框架
  • Redis
  • MySQL
  • RabbitMQ
  • Kafka
  • Mirror Sites
  • Dev Tools
  • Docker
  • Jenkins
  • Scripts
  • Windows
  • 科学上网
  • 旅行
  • 网站日记
  • 软件
  • 电子产品
  • 杂野
  • 分类
  • 友情链接
GitHub (opens new window)
  • 镜像站

  • 环境

  • Docker

  • 工具

  • Linux

  • 新知

  • Jenkins

    • Jenkins 持续集成实战:从零到 Docker 镜像发布
      • Jenkins是什么?
      • 简单流程
        • Jenkins安装
        • 1.安装 Docker
        • 2.配docker加速
        • 3.部署Jenkins
        • Jenkins配置
        • 1.插件安装
        • 安装插件失败
        • 2.配置环境
        • 3.配置jdk
        • 4.安装插件
      • 配置流程
        • 1.从git中拉代码
        • 2.微服务脚本编写
        • 前置步骤
        • 后置命令
      • Jenkins 部署问题
        • Jenkins构建时出现权限问题
    • Jenkins使用
    • Jenkins镜像站点
  • Consul_服务注册发现

  • SHELL

  • 项目

  • 运维
  • Jenkins
tianyi
2023-12-17
目录

Jenkins 持续集成实战:从零到 Docker 镜像发布

# Jenkins是什么?

  1. Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
  2. Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

# 简单流程

本文主要以以下内容进行撰文

1. Docker + Jenkins
① 安装流程
② 插件
③ ssh 配置 / 凭据

2. 从 Github 中拉取 Code
① 配置凭据
② Workspace 清空

3. 脚本编写
Git 仓库
前置:docker login & mvn install
后置:mvn install & docker push
1
2
3
4
5
6
7
8
9
10
11
12
13

# Jenkins安装

# 1.安装 Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl enable docker --now
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

完整版:

# 1. 安装必要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 这条命令安装了 Docker 所需的依赖包。`yum-utils` 提供了 yum-config-manager 等实用工具,
# `device-mapper-persistent-data` 和 `lvm2` 是为了 Docker 的存储驱动。

# 2. 设置阿里云 Docker 镜像源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 这条命令添加了阿里云的 Docker 镜像源,使用阿里云的镜像源可以提高下载速度和稳定性。

# 3. 查看可安装的 Docker 版本
yum list docker-ce --showduplicates | sort -r

# 这条命令列出了可供安装的 Docker 版本,并按版本号从高到低排序,方便选择需要的版本。

# 4. 安装指定版本的 Docker
yum -y install docker-ce-20.10.10-3.el7

# 这条命令安装指定版本的 Docker (20.10.10-3.el7)。

# 5. 查看 Docker 版本
docker -v

# 这条命令验证 Docker 是否安装成功,并显示 Docker 的版本号。

# 6. 启动 Docker 服务
systemctl start docker

# 这条命令启动 Docker 服务。

# 7. 查看 Docker 启动状态
systemctl status docker

# 这条命令查看 Docker 服务的运行状态,确保 Docker 已经正确启动。

# 8. 安装 lsof 命令以查看端口占用情况
yum install -y lsof

# 这条命令安装 lsof 工具,用于查看当前系统中端口的占用情况。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# 2.配docker加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1
2
3
4
5
6
7
8

# 3.部署Jenkins

docker pull jenkins/jenkins:2.455-jdk21

docker run \
  -u root \
  --rm \
  -d \
  -p 15001:8080 \
  -p 15002:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkins/jenkins:2.455-jdk21
1
2
3
4
5
6
7
8
9
10
11

可选项:docker-compose 文件

version: '3'

services:
  jenkins:
    image: "jenkins/jenkins:2.455-jdk21"
	container_name: jenkins
    restart: always
    user: root
    ports:
      - "15001:8080"
      - "15002:50000"
    volumes:
      - jenkins-data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

volumes:
  jenkins-data:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# Jenkins配置

https://www.jenkins.io/zh/doc/book/installing/ (opens new window)

  1. docker logs -f jenkins_code,找到密码
  2. 进入自定义Jenkins,安装推荐的插件

# 1.插件安装

# 安装插件失败

问题描述:当初次启动 Jenkins 时,选择安装推荐插件会导致插件安装缓慢甚至失败的问题,主要原因是下载源的问题。

解决办法:

方法1:更新下载源
1. 进入 Jenkins 的系统设置 -> 插件管理 -> 高级
2. 在页面下方找到“升级站点”,将 "http://mirror.esuni.jp/jenkins/updates/update-center.json" 复制粘贴到输入框内,然后提交
   备选链接:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json
3. 重启 Jenkins 以使更改生效(在URL后添加“restart”,然后回车)

方法2:手动下载 Jenkins.war 包

1. 在线下载最新的 Jenkins.war 包,下载完成后上传到服务器
2. 若要确认 Jenkins 版本是否过低,可进入“系统管理”页面查看
1
2
3
4
5
6
7
8
9
10
11
12

# 2.配置环境

image-20240607182052982

# 3.配置jdk

root@bf3827153512:/# echo $JAVA_HOME
/opt/java/openjdk
1
2

# 4.安装插件

image-20240607122402301

# 配置流程

以上介绍了如何安装 docker 和 jinkins。下面我们开始部署一个应用,它的最终目的是要将镜像 push 到阿里云的仓库

# 1.从git中拉代码

我们完成了以上的步骤,下异步就要开始从 git 中拉取代码了

  1. 配置全局凭据:git账号+密码
  2. workspace配置

# 2.微服务脚本编写

代码源: Git

# 前置步骤

编写一个 shell 脚本用于登录阿里云镜像,并构建通用组件 dcloud-common:

echo "登录阿里云镜像"

docker login --username=t2799@qq.com --password=your_password registry.cn-shenzhen.aliyuncs.com

echo "构建 dcloud-common"

cd dcloud-common

# 使用 Maven 安装构建通用组件
mvn install

# 列出当前目录的文件和文件夹(all long human)
ls -alh
1
2
3
4
5
6
7
8
9
10
11
12
13

# 后置命令

在构建完成后,进入账户服务目录 dcloud-account,构建并推送 Docker 镜像:

# 列出当前目录的文件和文件夹
ls -alh

# 进入 dcloud-account 目录
cd dcloud-account

# 列出 dcloud-account 目录的文件和文件夹(all long human)
ls -alh

# 开始构建账号服务
echo "账号服务构建开始"
mvn install -Dmaven.test.skip=true dockerfile:build

# 给构建的 Docker 镜像打标签
docker tag dcloud/dcloud-account:latest registry.cn-shenzhen.aliyuncs.com/your_project/dcloud-account:v1.1

# 推送 Docker 镜像到阿里云镜像仓库
docker push registry.cn-shenzhen.aliyuncs.com/your_project/dcloud-account:v1.1

# 清理 Maven 构建目录
mvn clean

echo "账号服务构建推送成功"
echo "=======构建脚本执行完毕====="
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# Jenkins 部署问题

# Jenkins构建时出现权限问题

在Jenkins构建过程中,如果遇到rm: cannot remove '/opt/aqs/ui/dist/': Permission denied的问题,说明当前用户(通常是jenkins用户)没有足够的权限来删除或写入该目录。你可以通过以下步骤来解决这个问题:

可以使用chmod和chown命令来更改目录的权限和所有者,确保jenkins用户有足够的权限来操作该目录。

sudo chmod -R u+w /opt/aqs/ui/dist/
sudo chown -R jenkins:jenkins /opt/aqs/ui/dist
1
2

这里的u+w表示给目录的所有者添加写权限,chown将目录的所有者更改为jenkins用户和jenkins组。-R选项表示递归地应用于目录及其所有子目录和文件。

确保Jenkins用户在执行构建时能够访问和操作所需的文件和目录。如果Jenkins运行在一个容器或特殊用户环境中,你可能需要调整用户权限或使用sudo来执行某些命令。

完善页面 (opens new window)
Stanford CS142-Web Applications
Jenkins使用

← Stanford CS142-Web Applications Jenkins使用→

最近更新
01
JDK
02-23
02
BadTasteCode && 优化
09-11
03
Gradle 实践操作指南及最佳实践
09-11
更多文章>
Theme by Vdoing | Copyright © 2021-2025 Tandy | 粤ICP备2023113440号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式