Jenkins自动化前后端项目部署以及一些坑

简介: Jenkins自动化前后端项目部署以及一些坑

自动化部署原理:git提交代码仓库会向你配置的服务器发送一条记录,服务器解析记录分析对应的项目以及判断该分支提交该做哪些操作,然后执行预设的shell脚本,我们使用Jenkins来处理hook响应。

Jenkins依赖Java环境,默认服务器已经安装好Jdk与Tomcat

0. 开始安装

下载war包 http://mirrors.jenkins.io

启动Tomcat安装,此时Jenkins已经运行,打开网页后按照提示在服务器对应文件中找到密码,输入并进入新手安装,选择默认的安装,这时别管它,应该会出现一系列失败,先进入tomcat刚安装的对应目录中:

截屏20201129 下午6.31.07.png

找到路径 \WEB-INF\detached-plugins 文件夹下确认是否存在 cloudbees-folder.hpi 这个文件,如果缺少则这里手动下载后放进去,这是第一个坑点。

进入工作目录(不是安装目录,一般是root文件夹下的.jenkins文件夹),找到hudson.model.UpdateCenter.xml这个文件,将URL改为https://updates.jenkins-zh.cn/update-center.json

工作目录下updates文件夹default.json文件中,将所有 http://updates.jenkins-ci.org/download/ 替换为 https://updates.jenkins-zh.cn/

这是为了确保初始化不会因为网络问题卡死,重启Jenkins,等待安装完成。

1. 创建用户

首先配置下git,进入Manager -> Global Tool Config… 找到 Git 位置 Path to Git executable 填入路径 :/usr/local/git/bin/git

截屏20201129 下午6.39.27.png

开启Webhook链接:进入Manager -> Configure System,找到GitHub -> 高级 -> 勾选Hook URL打开,复制下payload Url
通常是 http://你的域名/github-webhook/

进入 GitHub,点击setting,进入setting页面点击左下角的Developer settings,点击跳转到Personal access tokens,创建token,勾选 repo 和 admin:repo_hook;

进入Jenkins configure配置githubserver,(Credentials)Add选择“secret text”---Secret输入token,勾选管理hook

Yum配置国内源(已配置略过)
# 添加: /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8

2. Git相关

下载GIt
https://mirrors.edge.kernel.org/pub/software/scm/git/

git --version
yum remove -y git
yum -y install libcurl-devel expat-devel curl-devel  gettext-devel openssl-devel zlib-devel
yum -y install  gcc perl-ExtUtils-MakeMaker
cd /usr/local/src/
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.1.1.tar.gz
tar -zvxf git-2.1.1.tar.gz
cd git-2.1.1
make prefix=/usr/local/git all
make prefix=/usr/local/git install

添加git到环境变量(可能需要)

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc

注意在Github的相关项目下 Settings Webhooks 配置push时payload。

3. 通常的配置实例

截屏20201129 下午7.13.44.png截屏20201129 下午7.14.24.png截屏20201129 下午7.14.47.png

备注:这里一般不勾选“构建环境”中的Delete workplace....会增加构建时间。

4. 常用构建shell记录

rm -rf /某工程项目目录/* # 每次部署先清空,适合较小项目
mv -f ./* /某工程项目目录 # 转移部署文件到指定目录
chmod -R 775 /某工程项目目录 # 设置权限防止nginx403
相关文章
|
3月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
27天前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
1月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
27天前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
85 1
|
3月前
|
Kubernetes jenkins 持续交付
Jenkins 插件生态:提升自动化能力
【8月更文第31天】Jenkins 是一个开源的持续集成/持续交付(CI/CD)平台,广泛应用于软件开发的各个阶段。Jenkins 的一大特色就是其丰富的插件生态系统,这些插件极大地扩展了 Jenkins 的功能,使其能够适应各种各样的应用场景。本文将深入探讨 Jenkins 的插件生态系统,并指导如何选择和配置插件以满足特定需求。
180 1
|
3月前
|
jenkins Linux 持续交付
在Linux中,如何使用Jenkins和Ansible进行虚拟化环境的自动化和持续集成/持续部署(CI/CD)?
在Linux中,如何使用Jenkins和Ansible进行虚拟化环境的自动化和持续集成/持续部署(CI/CD)?
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
76 0
|
3月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
3月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。