Jenkins基础:使用NPM构建前端应用5:推送前端镜像至私库
发布日期:2021-06-30 20:13:34 浏览次数:2 分类:技术文章

本文共 4688 字,大约阅读时间需要 15 分钟。

在前一篇文章中介绍了在Jenkins中利用NodeJS插件实现创建、编译到镜像生成的Angular的应用的过程,这篇文章将进一步延伸,生成的镜像推送到镜像私库Registry中。

基础知识

如果对于NodeJS的插件使用或者在Jenkins的Jenkinsfile中使用npm的基本方法不熟悉的开发者可以先行查看如下文章。

  • 在Jenkins中安装和设定NodeJS插件:https://liumiaocn.blog.csdn.net/article/details/102618269
  • 如何在Jenkinsfile中使用NodeJS:
  • https://liumiaocn.blog.csdn.net/article/details/102598127

而关于Alpine镜像中使用NodeJS则有诸多问题,常见的对应方法可以参看:

  • https://liumiaocn.blog.csdn.net/article/details/102587460

事前准备

安装NodeJS的10.15.3版,然后创建一个名为angular-pipeline-job的Pipeline类型的Job。

  • 确认镜像状况
liumiaocn:~ liumiao$ docker images |grep angulardemoangulardemo                                     4                               2a62c78f86de        16 minutes ago      145MBliumiaocn:~ liumiao$
  • Registry 准备:
    本文使用docker registry作为镜像私库的管理,环境准备只需如下一行语句即可

执行命令:docker run -d -p 5000:5000 registry

使用docker ps确认私库管理的容器已经启动

liumiaocn:docker liumiao$ docker ps |grep registry06601f2782c0        registry                     "/entrypoint.sh /etc…"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp                              cocky_murdockliumiaocn:docker liumiao$

Jenkinsfile

node {
stage('Prepare Node and NPM') {
// confirm nodejs plugin and setting env.NODEJS_HOME = "${tool 'nodejs-10.15.3'}" env.PATH="${env.NODEJS_HOME}/bin:${env.PATH}" sh 'npm --version' } stage('Prepare Angular CLI') {
// install global angular cli sh 'npm -g install @angular/cli' sh 'ng --version' } stage('Prepare Angular Project') {
// prepare angular demo app sh 'if [ ! -d demo ]; then ng new demo --style less; fi' } stage('Build Angular Project') {
// build angular demo app sh 'cd demo && npm install && npm run build' } stage('Build Angular demo image') {
// build image and push to registry sh 'cp /tmp/Dockerfile .' docker.withRegistry('http://192.168.31.242:5000') {
def angular_img = docker.build("angulardemo:${env.BUILD_ID}") angular_img.push() } }}

代码说明:

angular是通过cli来创建应用程序脚手架的,在Prepare Angular Project的stage中通过使用ng new demo创建了demo的angular应用。而在后续的stage中则通过npm install安装相关的依赖,通过npm run build则生成了结果的dist目录与文件,然后通过docker.withRegistry设定私库地址,通过docker.build构建,通过push方法进行推送。

结果确认

  • 执行日志确认
    执行日志如下所示:
Started by user rootRunning in Durability level: MAX_SURVIVABILITY[Pipeline] Start of Pipeline[Pipeline] nodeRunning on Jenkins in /data/jenkins/workspace/angular-pipeline-job[Pipeline] {[Pipeline] stage[Pipeline] { (Prepare Node and NPM)[Pipeline] tool[Pipeline] sh+ npm --version6.4.1[Pipeline] }[Pipeline] // stage[Pipeline] stage[Pipeline] { (Prepare Angular CLI)[Pipeline] sh+ npm -g install @angular/cli...省略[Pipeline] // stage[Pipeline] stage (hide)[Pipeline] { (Build Angular demo image)[Pipeline] sh+ cp /tmp/Dockerfile .[Pipeline] withEnv[Pipeline] {[Pipeline] withDockerRegistry[Pipeline] {[Pipeline] sh+ docker build -t angulardemo:6 .Sending build context to Docker daemon  309.2MBStep 1/2 : FROM nginx:latest ---> 5a9061639d0aStep 2/2 : ADD demo/dist/* /usr/share/nginx/html ---> Using cache ---> 2a62c78f86deSuccessfully built 2a62c78f86deSuccessfully tagged angulardemo:6[Pipeline] dockerFingerprintFrom[Pipeline] sh+ docker tag angulardemo:6 192.168.31.242:5000/angulardemo:6[Pipeline] sh+ docker push 192.168.31.242:5000/angulardemo:6The push refers to repository [192.168.31.242:5000/angulardemo]6bcd7eb9d365: Preparingcf2436e84ea8: Preparinged4a4820ee08: Preparingb67d19e65ef6: Preparingb67d19e65ef6: Mounted from my-nginxcf2436e84ea8: Mounted from my-nginxed4a4820ee08: Mounted from my-nginx6bcd7eb9d365: Pushed6: digest: sha256:7fce52cd74ca42476dde1ee91f549d521982d5407b65190996e2e8a1dd60604c size: 1159[Pipeline] }[Pipeline] // withDockerRegistry[Pipeline] }[Pipeline] // withEnv[Pipeline] }[Pipeline] // stage[Pipeline] }[Pipeline] // node[Pipeline] End of PipelineFinished: SUCCESS
  • 镜像构建结果确认
liumiaocn:~ liumiao$ docker images |grep angulardemo192.168.31.242:5000/angulardemo                 6                               2a62c78f86de        38 minutes ago      145MBangulardemo                                     4                               2a62c78f86de        38 minutes ago      145MBangulardemo                                     5                               2a62c78f86de        38 minutes ago      145MBangulardemo                                     6                               2a62c78f86de        38 minutes ago      145MBliumiaocn:~ liumiao$
  • 构建结果

    在blueocean上也能实时地确认到构建的输出信息
    在这里插入图片描述

  • 本地私库镜像确认

    使用如下命令也可以发现此镜像已经在本地私库中得到了保存。

liumiaocn:~ liumiao$ docker pull localhost:5000/angulardemo:66: Pulling from angulardemoDigest: sha256:7fce52cd74ca42476dde1ee91f549d521982d5407b65190996e2e8a1dd60604cStatus: Downloaded newer image for localhost:5000/angulardemo:6liumiaocn:~ liumiao$

转载地址:https://liumiaocn.blog.csdn.net/article/details/102645796 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Jenkins基础:使用NPM构建前端应用6:部署前端镜像
下一篇:Jenkins基础:使用NPM构建前端应用4:构建前端镜像

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月25日 04时17分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

数据库索引 & 为什么要对数据库建立索引 / 数据库建立索引为什么会加快查询速度 2019-04-30
IEEE与APA引用格式 2019-04-30
research gap 2019-04-30
pytorch训练cifar10数据集查看各个种类图片的准确率 2019-04-30
Python鼠标点击图片,获取点击点的像素坐标 2019-04-30
路径规划(一) —— 环境描述(Grid Map & Feature Map) & 全局路径规划(最优路径规划(Dijkstra&A*star) & 概率路径规划(PRM&RRT)) 2019-04-30
神经网络调参实战(四)—— 加深网络层次 & 批归一化 batch normalization 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(1)—— 假设检验(μ&卡方检验&方差检验(F检验))&相关系数(皮尔逊&斯皮尔曼) 2019-04-30
RRT算法(快速拓展随机树)的Python实现 2019-04-30
路径规划(二) —— 轨迹优化(样条法) & 局部规划(人工势能场法) & 智能路径规划(生物启发(蚁群&RVO) & 强化学习) 2019-04-30
D*算法 2019-04-30
强化学习(四) —— Actor-Critic演员评论家 & code 2019-04-30
RESTful API 2019-04-30
优化算法(四)——粒子群优化算法(PSO) 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(2)——回归分析(最小二乘法&决定系数&残差不相关)&主成分分析&奇异值分解 2019-04-30
数据在Oracle中的存储 2019-04-30
优化算法(五)—人工蜂群算法Artificial Bee Colony Algorithm(ABC) 2019-04-30
轨迹规划 trajectory planning 2019-04-30
AGV自动导引运输车 2019-04-30
Trie树(字典树) 2019-04-30