页面“基于Docker的Jenkins持续集成”与“Jenkins自动化构建和部署例子”之间的差异
(页面间的差异)
跳到导航
跳到搜索
(→learn) |
|||
第1行: | 第1行: | ||
− | = | + | =站内源码 = |
+ | [[代码发布]] | ||
− | + | =jenkins 使用Maven构建Java应用程序= | |
+ | [https://www.jenkins.io/zh/doc/tutorials/build-a-java-app-with-maven/ 使用Maven构建Java应用程序 ] | ||
− | + | =java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署= | |
+ | [https://juejin.cn/post/6955025879688806430#heading-66 java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署(超详细) ] | ||
− | + | =download.app= | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | jenkins project name prod-tg-websi | ||
− | + | =* conf project = | |
<pre> | <pre> | ||
− | / | + | 新建 自由风格的软件项目 -> |
+ | geneal 丢弃旧的构建 | ||
+ | 源码管理 用git http的话就直接用上你的gitlabt用户和密码 | ||
+ | 构建 这里填写上你的 over SSH 服务器 一般在 系统管理--系统设置里面配置并起别名 | ||
+ | 一般hostname 填写IP username Remote Directory / 其它的看着办 | ||
− | |||
− | |||
− | |||
+ | 构建 要填写的 | ||
+ | Source files ** | ||
+ | Remove prefix 不填写 | ||
+ | Remote directory 你远程服务器的web目录 | ||
+ | </pre> | ||
− | + | =* 配置权限= | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
− | + | #这样还视图自动归类功能 不错不错 记住前面不要有空格 | |
− | + | Manage and Assign Roles --> Manage Roles --> 在他有的项目组里面 Frontend_h5 添加 prod-tg-websit| --> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Manage and Assign Roles --> Assign Roles | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Item roles -->User/group to add 填写项目名 prod-tg-website</pre> | ||
− | + | =前端 nodejs jenkins之自动打包构建nodejs应用= | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [https://segmentfault.com/a/1190000022277946?utm_source=sf-similar-article jenkins+docker部署nodejs程序] | |
− | + | ==dockerfile== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
<pre> | <pre> | ||
+ | 构建镜像需要有dockerfile,这个dockerfile其实就是docker在构建时,根据这个文件的内容,打包镜像,看一下我那个项目的dockerfile可以对照参考,很简单 | ||
− | + | # 基于某个镜像,来构建新的镜像,我们是nodejs项目,选择一个带有nodejs环境的镜像 | |
− | + | FROM node:13.5.0-buster-slim | |
− | + | # 打一个标签, | |
− | + | LABEL zhangchao [邮箱名] | |
− | + | # 设置环境变量,nodejs代码中可以取到这个环境变量,如果没有可不写 | |
− | + | ENV NODE_ENV=production | |
− | + | # 创建一个代码目录 | |
− | - | + | RUN mkdir -p /usr/src/webapp |
− | + | # 将代码拷贝到这个目录中 | |
− | + | COPY . /usr/src/webapp | |
− | + | # 设置工作目录 | |
− | + | WORKDIR /usr/src/webapp | |
− | + | # 安装nodejs项目依赖 | |
− | + | RUN /bin/sh -c 'cd /usr/src/webapp/ && \ | |
− | + | npm install --unsafe-perm' | |
− | + | # 对外暴露3000端口 | |
− | + | EXPOSE 3000 | |
− | + | # 启动nodejs服务 | |
− | + | CMD node server.js | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | + | ==接着就是配置构建了,选择执行shell== | |
− | == | ||
− | |||
− | |||
<pre> | <pre> | ||
+ | 接着就是配置构建了,选择执行shell | ||
− | + | # 进入项目目录 | |
− | + | cd /var/jenkins_home/workspace/[填入你的git仓库名] | |
− | + | # tag名称 | |
− | + | tagName=$Tag | |
− | + | # docker仓库,可以在阿里云镜像仓库,申请自己的镜像仓库 | |
− | + | REPOSITORY=[镜像仓库的域名]/[镜像仓库的命名空间]/[镜像仓库的名称]:jenkins-$tagName | |
− | + | # 构建镜像,注意后面有个. 代表使用当前目下下的dockerfile,后面会说dockerfile怎么写 | |
− | + | docker build -t $REPOSITORY . | |
− | + | # 如果是私有的镜像仓库,例如我的阿里云镜像仓库,需要登录后才能push,如果公有的不需要这步 | |
− | + | docker login -u [用户名] -p [密码] [镜像仓库域名] | |
− | + | # 将构建好的镜像,推送到远程的镜像仓库 | |
− | + | docker push $REPOSITORY | |
− | + | # 删除本地构建的镜像 | |
− | + | docker rmi -f $REPOSITORY | |
− | # | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | + | ==SSH Site,填入远程执行的脚本== | |
− | |||
− | == | ||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
+ | SSH Site,填入远程执行的脚本 | ||
− | # | + | # 设置tagName |
− | / | + | tagName=$Tag |
+ | # 登录私有仓库,如果是公有仓库,这步不用写 | ||
+ | docker login -u [用户名] -p [密码] [镜像仓库域名] | ||
+ | # 拉取远程镜像 pull后面跟的是仓库名称:tag名称 | ||
+ | docker pull [镜像仓库的域名]/[镜像仓库的命名空间]/[镜像仓库的名称]:jenkins-$tagName | ||
+ | # 根据容器名称查找容器id | ||
+ | containerId=`docker ps -a | grep [上一版启动的容器名称] | awk '{print $1}' ` | ||
+ | # 根据容器名称查找镜像名称 | ||
+ | imageName=`docker ps -a | grep [上一版启动的容器名称] | awk '{print $2}' ` | ||
+ | # 如果容器id存在就停止掉旧容器运行,并删除掉旧的容器和镜像 | ||
+ | if [ -n "$containerId" ]; then | ||
+ | docker stop $containerId | ||
+ | docker rm $containerId | ||
+ | docker rmi -f $imageName | ||
+ | fi | ||
+ | # 运行新的镜像,最后面其实是仓库名称:tag名 | ||
+ | docker run -d --name [容器名称] -p 3000:3000 [镜像仓库的域名]/[镜像仓库的命名空间]/[镜像仓库的名称]:jenkins-$tagName | ||
− | + | 点击保存,我们的构建过程就配置好了,可以点击build with params,选择git仓库的tag进行构建了,有任何疑问可以在评论中提出来,看到后我会回复,希望你们能一次成功。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | [https:// | + | [https://www.cnblogs.com/vipzhou/p/7890016.html jenkins学习之自动打包构建nodejs应用 ] |
− | [https://www. | + | [https://www.huaweicloud.com/articles/4e4228c181b8e610999badfa00ff7e4e.html Jenkins打包NodeJS项目---入门篇] |
− | + | [https://my.oschina.net/mobinchao/blog/871703 Jenkins打包NodeJS项目---入门篇] | |
− | |||
− | |||
− | + | [https://blog.csdn.net/weixin_43931358/article/details/103013031 jenkins系列之使用yarn构建前端项目] | |
− | |||
− | + | [https://blog.51cto.com/wzlinux/2491394 docker 中运行的 jenkins 使用 npm 构建 Node.js 应用] | |
− | |||
− | + | [https://juejin.cn/post/6971630514742493197 jenkins+docker+gogs前端自动化部署 ] | |
− | + | =后端= | |
− | + | ==php jenkins== | |
− | + | [[Jenkins实现PHP持续集成部署]] | |
− | |||
− | |||
− | |||
− | |||
− | == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | [ | ||
− | |||
− | |||
− | |||
− | |||
− | [ | + | [[category:ops]] [[category:devops]] |
− | [https:// | + | == Java spring boot== |
+ | [https://zhuanlan.zhihu.com/p/354677279 SpringBoot项目打包+shell脚本部署实践] | ||
− | [https:// | + | [https://cloud.tencent.com/developer/article/1727325 使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用] |
− | [https:// | + | [https://blog.csdn.net/hzj_java/article/details/108006489 Jenkins一键打包部署Spring Boot 应用的Docker镜像] |
− | == | + | == Java tomcat== |
− | |||
+ | 和xk的一样喽 | ||
+ | [https://blog.51cto.com/u_13760351/2382103 Jenkins自动部署发布Java代码(完整教程] | ||
− | [https:// | + | == Docker+Jenkins+Gitlab+Django应用部署实践 == |
+ | [https://juejin.cn/post/6844903758384594958 Docker+Jenkins+Gitlab+Django应用部署实践 ] | ||
+ | =docker = | ||
+ | [https://segmentfault.com/a/1190000007837054 Jenkins集成Docker镜像实现自动发布] | ||
− | [https:// | + | ==.net== |
− | + | [https://www.cnblogs.com/liyouming/p/9989160.html .NetCore下利用Jenkins如何将程序自动打包发布到Docker容器中运行 ] |
2021年7月5日 (一) 12:58的版本
目录
站内源码
jenkins 使用Maven构建Java应用程序
java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署
java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署(超详细)
download.app
jenkins project name prod-tg-websi
* conf project
新建 自由风格的软件项目 -> geneal 丢弃旧的构建 源码管理 用git http的话就直接用上你的gitlabt用户和密码 构建 这里填写上你的 over SSH 服务器 一般在 系统管理--系统设置里面配置并起别名 一般hostname 填写IP username Remote Directory / 其它的看着办 构建 要填写的 Source files ** Remove prefix 不填写 Remote directory 你远程服务器的web目录
* 配置权限
#这样还视图自动归类功能 不错不错 记住前面不要有空格 Manage and Assign Roles --> Manage Roles --> 在他有的项目组里面 Frontend_h5 添加 prod-tg-websit| --> Manage and Assign Roles --> Assign Roles Item roles -->User/group to add 填写项目名 prod-tg-website
前端 nodejs jenkins之自动打包构建nodejs应用
dockerfile
构建镜像需要有dockerfile,这个dockerfile其实就是docker在构建时,根据这个文件的内容,打包镜像,看一下我那个项目的dockerfile可以对照参考,很简单 # 基于某个镜像,来构建新的镜像,我们是nodejs项目,选择一个带有nodejs环境的镜像 FROM node:13.5.0-buster-slim # 打一个标签, LABEL zhangchao [邮箱名] # 设置环境变量,nodejs代码中可以取到这个环境变量,如果没有可不写 ENV NODE_ENV=production # 创建一个代码目录 RUN mkdir -p /usr/src/webapp # 将代码拷贝到这个目录中 COPY . /usr/src/webapp # 设置工作目录 WORKDIR /usr/src/webapp # 安装nodejs项目依赖 RUN /bin/sh -c 'cd /usr/src/webapp/ && \ npm install --unsafe-perm' # 对外暴露3000端口 EXPOSE 3000 # 启动nodejs服务 CMD node server.js
接着就是配置构建了,选择执行shell
接着就是配置构建了,选择执行shell # 进入项目目录 cd /var/jenkins_home/workspace/[填入你的git仓库名] # tag名称 tagName=$Tag # docker仓库,可以在阿里云镜像仓库,申请自己的镜像仓库 REPOSITORY=[镜像仓库的域名]/[镜像仓库的命名空间]/[镜像仓库的名称]:jenkins-$tagName # 构建镜像,注意后面有个. 代表使用当前目下下的dockerfile,后面会说dockerfile怎么写 docker build -t $REPOSITORY . # 如果是私有的镜像仓库,例如我的阿里云镜像仓库,需要登录后才能push,如果公有的不需要这步 docker login -u [用户名] -p [密码] [镜像仓库域名] # 将构建好的镜像,推送到远程的镜像仓库 docker push $REPOSITORY # 删除本地构建的镜像 docker rmi -f $REPOSITORY
SSH Site,填入远程执行的脚本
SSH Site,填入远程执行的脚本 # 设置tagName tagName=$Tag # 登录私有仓库,如果是公有仓库,这步不用写 docker login -u [用户名] -p [密码] [镜像仓库域名] # 拉取远程镜像 pull后面跟的是仓库名称:tag名称 docker pull [镜像仓库的域名]/[镜像仓库的命名空间]/[镜像仓库的名称]:jenkins-$tagName # 根据容器名称查找容器id containerId=`docker ps -a | grep [上一版启动的容器名称] | awk '{print $1}' ` # 根据容器名称查找镜像名称 imageName=`docker ps -a | grep [上一版启动的容器名称] | awk '{print $2}' ` # 如果容器id存在就停止掉旧容器运行,并删除掉旧的容器和镜像 if [ -n "$containerId" ]; then docker stop $containerId docker rm $containerId docker rmi -f $imageName fi # 运行新的镜像,最后面其实是仓库名称:tag名 docker run -d --name [容器名称] -p 3000:3000 [镜像仓库的域名]/[镜像仓库的命名空间]/[镜像仓库的名称]:jenkins-$tagName 点击保存,我们的构建过程就配置好了,可以点击build with params,选择git仓库的tag进行构建了,有任何疑问可以在评论中提出来,看到后我会回复,希望你们能一次成功。
docker 中运行的 jenkins 使用 npm 构建 Node.js 应用
后端
php jenkins
Java spring boot
使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用
Jenkins一键打包部署Spring Boot 应用的Docker镜像
Java tomcat
和xk的一样喽 Jenkins自动部署发布Java代码(完整教程
Docker+Jenkins+Gitlab+Django应用部署实践
Docker+Jenkins+Gitlab+Django应用部署实践