当前位置:首页 » 网页前端 » jenkinsdocker前端构建
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

jenkinsdocker前端构建

发布时间: 2022-12-09 12:40:24

A. 手把手搭建jenkins + docker + k8s 持续集成、自动化发布环境

持续集成对于微服务开发来说,已经是不可或缺了,能够极大的提升效率。由于自己在家鼓捣项目的过程中,时常会有一些发布,本着偷懒的目的,在家里搭建了这套环境,记录下过程。

todo
流程控制

说明下: -u root 、 -v /var/run/docker.sock:/var/run/docker.sock 、 -v /usr/local/bin/docker:/usr/bin/docker 都是为了能够调用宿主机的docker执行build镜像

示例的构建用的是一个maven项目

B. docker jenkins 构建 springboot 项目、vue 项目

服务器IP:以192.168.1.1为例

需要修改下目录权限, 因为当映射本地数据卷时,/var/jenkins_mount目录的拥有者为root用户,而容器中jenkins user的uid为1000执行如下命令即可

如果需要nginx代理,在nginx中配置

在浏览器打开页面
http://192.168.1.1:9527/jenkins

输入密码后,出现这个页面

选择安装推荐的插件

Publish Over SSH 远程执行ssh插件
Maven Integration plugin maven插件
NodeJs plugin插件

=

C. 怎么在docker中部署jenkins

使用以下的体系结构组件来部署Jenkins:
Jenkins主服务器(Java进程)
Jenkins master data (插件,任务定义等)
NGINX web代理(使用SSL证书)
构建slave代理(可以通过SSH、JNLP或Jenkins Master连接)

这是一个很好的开端。通过这一系列博客,我们考虑将上述提到的组件容器化,并使用Docker容器来构建从节点(slaves)。对于初学者,我们将在Docker容器中创建Jenkins主服务器,然后转向处理数据持久化,并通过NGINX添加web代理。

整个系列博客将涉及以下几个Docker概念:

创建你自己的Dockerfiles
最小化对于公共镜像的依赖
创建和使用数据卷(Data-Volumes),包括备份
利用容器创建容器化的“构建环境”
使用镜像和Jenkins来处理“机密”数据
如果你还没有看过Cloudbees的Jenkins Docker镜像,就从它开始吧,这是一个相当不错的开端。

D. Jenkins Gitlab 前端构建发布

流程:通常是从gitlab/github拉取项目,构建,把产出文件发到服务器。

一、环境

创建任务之前,要先配置两项:

问题1:jenkins credentials配置SSH

系统管理 -> Manage Credentials -> 全局凭据 (unrestricted) ->添加或者编辑

注意:这里的key是个大坑,最开始我纠结是填私钥还是公钥,发现粘贴进去都不对。(粘贴私钥时我粘贴的是正文,没有复制首尾两行,导致一直报错。)最后把私钥整个粘贴进去就对了。

原因:

由于Jenkins的安全策略配置了CSRF跨站点保护。

解决方案:

进入Jenkins,系统管理-->全局安全配置,勾选匿名用户具有可读权限和去掉CSRF防止跨站点请求伪造:

在 /configure 下

这个插件是jenkins连接linux系统的时候使用。
以下针对插件的每个属性进行说明。

Name
SSH Server的Name属性就是你希望连接的服务器。

Source files
这里输入的是你希望传到服务器的文件夹和文件。路劲是相对jenkins的workspace的项目名称的。例如编译打包后的路径为dist文件夹下的jenkinszip.tar.gz,则Surce files填入dist/jenkinszip.tar.gz。

Remove prefix
如果Source files为dist/jenkinszip.tar.gz,但是不想把dist目录创建到服务器端,这个时候就可以在Remove prefix里填入dist

Remote directory
这里指定文件将被拷贝到服务器的路径。
PS:被拷贝文件在服务器上的完整路径=登录服务器账号的默认路径(就是全局设置的Remote Directory)+当前任务配置的Remote directory。
例如我的服务器路径是 /home/wwwroot/aaa
我全局配置Remote Directory 是 /home/wwwroot
当前任务配置的Remote Directory 是 /aaa/

Exec command
这里就是连接服务器之后需要执行的命令。

注意:这里配置的Secret token和 webhook要填写到gitlab里面,路径如下:

参考文章: https://blog.csdn.net/hou_ge/article/details/103507947

E. jenkins构建项目的错误和原因及其解决方法

我们项目开发完之后需要构建项目发布上线时,通常会使用到jenkins构建工具,然后在使用jenkins工具构建项目时通常也会遇到一些构建错误问题,通常情况下,如果项目在自己本地打包时没有问题,启动服务时也没有问题的情况下,可能是jenkins配置问题,需要开发人员配合本地配置项的修改完成,下面我给大家分享一下我遇到的一些构建失败问题,注意:本篇文章讲的主要是关于前端项目的构建失败问题。

Umi自动化工程创建的react项目

从图一中可以看出,是构建时打包命令出错,使用了不能识别的 npm run build:prod ,该命令是前端工程项目中 package.json 包文件中的 scripts 中配置的,该案例中前端并没有配置build:prod 这个打包命令,如图:

这里有两种解决办法。

直接去jenkins 上将打包命令配置成前端包文件种配置的命令,本案例中因为没有区分不同的开发环境,而且项目也只有master一个主分支,没有使用环境变量来区分不同环境的打包命令,所以图一中的问题,可以直接将jenkins里面的打包命令配置成图二中的打包命令 npm run build。去到jenkins 工具中,找到对应的配置项,如图:

如果项目变得复杂,需要进行严格的环境区分,那么这种情况下建议使用第二种方法,使用环境变量区分不同环境的打包命令,具体步骤如下:

去到前端项目在项目根目录下找到包文件package.json文件,打开后,在scripts下面配置build:prod 的打包命令,如图:

去到前端项目中的配置文件config.js中配置 APP_ENV环境变量来区分不同的环境,例如生产环境,开发环境,测试环境等,配置如下:

本文中暂时讲到图一中这种jenkins构建失败的现象以及导致失败的原因和针对其不同的两种解决方法,后续再碰到其它失败现象再补充,或者大家也可以在评论区回复各自遇到的失败情况,欢迎留言。

F. jenkins构建docker镜像

解锁jenkins

选择安装推荐的插件即可,也可以选择自定义

创建用户

安装maven

安装docker

配置docker

搭建私有仓库

打开 系统管理》系统配置 页面 拉到最下面有个cloud选项

接下来新建一个maven项目 点击 新建任务

添加maven打包完之后的docker镜像构建命令

dockerfile填写自己的路径 默认是pom.xml同级目录 就是项目的根目录吧 是否推送仓库等都是可选的 按需配置

保存后点击 立即构建