关于前端:使用Jenkins构建镜像将应用打包成镜像

14次阅读

共计 2663 个字符,预计需要花费 7 分钟才能阅读完成。

学习某册子的 CICD,记录应用 Jenkins 构建镜像的过程。

应用 Jenkins 集成 Git 来构建 Docker 镜像,为前面的部署筹备镜像资源。

1. 装置 Nodejs 环境

如果想要装置 Node 环境,有以下两个方法:

  • 源码编译:这种是将 Node 源码拉下来后,在服务器端编译实现后才能够应用。工夫比拟长,流程也略简单
  • 应用 Jenkins PluginNodeJS插件主动配置装置

    Jenkins 首页,左侧的系统管理 => 插件治理 => 可选插件,搜寻 Node;选中NodeJS 后,点击左下角的 间接装置 开始装置插件。

    发现 Jenkins 版本太低(去年装的 Jenkins),装了 Node 插件不能用(😅),更新一下 Jenkins:

    装置参考:https://blog.51cto.com/u_1567…

    ## pkg.jenkins.io 上的 jenkins 版本太低,改为应用 https://mirrors.jenkins.io/redhat-stable/
    yum remove jenkins # 删除旧版本的 jenkins
    wget https://mirrors.jenkins.io/redhat-stable/jenkins-2.346.2-1.1.noarch.rpm # 下载
    rpm -ivh jenkins-2.346.2-1.1.noarch.rpm # 装置
    service jenkins start # 启动服务

装置结束,返回首页,找到系统管理 =>Global Tool Configuration(全局工具配置)=>NodeJS=> 新增 NodeJS,点击新增 NodeJS,抉择相应的版本填写信息保留即可。

如何在工作中应用?

只须要在工作的 配置 中,找到 构建环境 ,选中Provide Node & npm bin/ folder to PATH,抉择方才配置好的NodeJS 即可。

第一次执行会下载对应的 Node 版本,后续不会下载。

2. 应用 SSH 协定集成 Git 仓库源

这一步,应用 Jenkins 集成内部 Git 仓库,实现对实在代码的拉取和构建。

创立一个 vue3 我的项目用于测试构建:

npx vue create cicd_test

抉择 vue3 我的项目开始下载安装,而后推送至 github 仓库

2.1 生成公钥私钥

这是 Jenkins 拜访 Git 公有库的罕用认证形式。能够应用 ssh-keygen 命令即可生成公钥私钥。在本地机器执行生成即可。(应用本人邮箱)

ssh-keygen -t rsa -C "yeying0827@126.com"

实现后须要在 Git 端配置公钥,在 Jenkins 端应用私钥与 Git 进行身份校验。

2.2 在 GitHub 配置公钥

配置下 SSH 近程登录到虚拟机:

  1. 先在虚构机上安装 ssh 服务和 net-tools 工具

    yum install openssh-server # 默认已装
    yum install net-tools
  2. 在 mac 终端通过 ssh 命令登录:ssh 用户名 @ip

    ssh yy@10.211.55.6
    # 登录后通过 cat 命令获取公钥
    cat /root/.ssh/id_rsa.pub

获取公钥后去 github 的 settings 里配置即可

2.3 在 Jenkins 配置私钥

Jenkins 中,私钥 / 明码 等认证信息都是以 凭证 的形式治理的,所以能够做到全局通用。

咱们能够在配置工作时,来增加一个本人的凭证。点击我的项目的配置,顺次找到 源码治理 =>Git=>Repositories

点击 Credentials 上面的增加,填写完后点击增加按钮

无奈连贯仓库谬误:Error performing git command: git ls-remote -h git@github.com:yeying0827/cicd_test.git HEAD

须要在虚构机上安装 git 客户端工具:yum -y install git

点击保留

3. 构建镜像

须要先筹备 DockerFile 才能够构建镜像。

3.1 编写 DockerFile

什么是 DockerFile?

DockerFile是一个 Docker 镜像的 根底形容文件 ,外面形容了 生成一个镜像所须要的执行步骤 。咱们也能够自定义一份DockerFile 来创立一个本人的镜像。

  • 在后面 vue3 我的项目的根目录创立DockerFile
vi Dockerfile
FROM nginx:1.15-alpine
COPY dist /etc/nginx/html
COPY conf /etc/nginx/
WORKDIR /etc/nginx/html

形容内容为:

  1. 基于 nginx:1.15 镜像做底座
  2. 拷贝本地 dist 文件夹内的文件,到镜像内 /etc/nginx/html 文件夹内
  3. 拷贝本地 conf 文件夹内的文件,到镜像内 /etc/nginx/ 文件夹内
  4. 指定工作目录
  • 提交到代码库
git add ./Dockerfile
git commit -m "chore: add dockerfile"
git push
  • 生成镜像:应用 docker build 命令就能够构建一个镜像
docker build -t imagename:version .

-t 申明要打一个镜像的 Tag 标签,前面紧跟的就是标签。标签格局为 镜像名: 版本

. 申明要寻找 dockerfile 文件的门路,. 代表以后门路下寻找,默认文件名为 Dockerfile

更多 DockerFile 的语法

3.2 Jenkins 端配置

在代码源和 DockerFile 准备就绪后,咱们只需在 Jenkins 端配置下要执行的 shell 脚本即可。

找到我的项目的配置,顺次找到 构建 =>Execute shell,输出以下脚本:

#!/bin/sh -l

npm install --registry=https://registry.npm.taobao.org
npm run build
docker build -t jenkins-test .

脚本次要操作:装置依赖 => 构建文件 => 构建镜像。填写结束后保留

4. 执行工作

在我的项目下点击 立刻构建 触发执行工作,GLIBC 等版本报错,无奈执行 node 命令,报错

// 应用 strings 命令查看查看最高只有 2.17
strings /lib64/libc.so.6 |grep GLIBC_

装置 glibc_2.28 和 gcc 8.2

reboot 重启,启动 jenkins。

Node 版本过高构建失败,应用 node14.17.0 版本。

没有 conf 文件夹构建失败,新建 conf 文件夹提交到库。

构建胜利。

至此,实现了应用 Jenkins 构建本人的前端镜像。

从控制台输入能够看出,是先依据配置的 git 仓库拉取了代码,而后执行了配置的 shell,最初依据 Dockfile 里的配置生成镜像

正文完
 0