Gitea+Jenkins能碰撞出怎样的火花?浅谈前端自动化部署

本文指导如何搭建本地Git仓库,配置Jenkins实现代码自动部署,涉及Windows批处理命令构建与Pipeline流水线,涵盖前端Vue和Node项目,以及后端构建流程和Nginx部署。

目录

前言:

首先是搭建一个本地Git代码仓库

接下来是Jenkins安装配置

自由风格项目构建(window批处理命令)

流水线项目构建

写在最后


前言

一个好的部署工具能帮助开发者提升效率,节省时间,本文将与大家分享私有化Git仓库搭建与Jenkins操作项目部署

准备工作:

首先是搭建一个本地Git代码仓库

下载gitea并在需要安装的文件夹下打开,默认访问地址是127.0.0.1:3000

打开后选择一下数据库,并在对应文件夹下生成db文件(新建空白txt文件,改后缀名为db)

端口号和名称可以自定义改一下,最后点击安装,等待安装完成,再次进入,注册管理员账号就可以打开了,后面就和远程仓库操作方式一样了

接下来是Jenkins安装配置

下载Jenkins并打开,这一步配置本地服务,设置本地端口号(默认是8080),我这里是10240

选择Java的jdk路径,并点击下一步安装

 

完成后通过http://localhost:8000进入主页,第一次进入Jenkins会进行初始化设置,直接复制本地地址用浏览器打开,然后输入到下面的输入框,点击继续(注意:如果考虑安装Jenkins数据的体积,可以新增环境变量JENKINS_HOME,值改为其他盘符路径,后续Jenkins的数据会保存在此)

进入插件安装界面,建议先选择推荐插件,后续在插件管理中修改

插件全部安装完后,进入管理员用户创建页面,输入账号密码来创建第一个用户,也就是管理员

进入首页,发现部分文字没有汉化,此时参照这位博主的博客,安装Locale插件=>设置语言为zh_US=>重启=>设置语言为zh_CN=>刷新页面就可以了

如果不需要开机自启Jenkins,可以关闭自启软件,并且使用手动打开的方式:在Jenkins目录下输入java -jar jenkins.war --httpPort=10240,或者写成bat形式运行

下面来说说Jenkins的插件安装,在插件管理中安装Generic Webhook Trigger用于gitea构建触发器,Blue Ocean可以理解为Jenkins的一个皮肤(个人感觉界面看起来和操作使用很舒服)

关于Jenkins准备工作,已经基本做完,下一步将使用gitea中的webhooks与Jenkins进行联系,达到代码自动部署的效果

首先,我们先点新建任务,进入到任务列表,接下来,我将分享两种构建的方式,分别是批处理命令构建和pipeline流水线语法的方式构建

自由风格项目构建(window批处理命令

在任务配置中输入gitea clone的地址,并且点击新建验证方式,我这里用的是用户名密码

在凭证配置中选择用户名密码,并输入gitea的用户名,密码,点击添加即可,添加后在源码管理中选择刚才添加的凭证方式

然后在构建中新增构建步骤,选择window批处理命令,并分别新建以下命令(npm i和npm run build一定要分开,否则在安装依赖时命令控制台会直接输入npm run build,此时是没有效果的,导致后面的命令不执行)

  1. node -v
    npm -v
  2. npm i
  3. npm run build

最后点保存,并在工作台运行测试一下

运行完成后在对应路径下找到dist文件,就说明构建成功,我的项目路径是C:\Users\Administrator\.jenkins\workspace\,所以就去该文件夹中找对应的文件

 

接下来,我们在gitea中添加webhooks用来触发Jenkins的构建

先在Jenkins的任务配置中设置构建触发器,并且在下面的配置项中找到token配置,设置token并保存

然后在仓库设置中添加web钩子,设置请求的地址,地址与Jenkins构建触发器中示例地址一致

触发条件我选择的是推送,即当前仓库收到推送信息就会通过webhooks通知Jenkins构建项目,最后测试一下是否能正常请求,请求成功后就会执行构建

下面我贴出完整的前端部署命令供参考,整个流程是:推送代码后webhooks将触发Jenkins构建前端项目,构建完成后将项目复制到Nginx文件夹下并重启服务

显示版本号
echo node version
node -v
echo npm version
npm -v
安装依赖
npm i
构建项目
npm run build
复制构建好的项目至Nginx目录下
cd /d "D:\Soft\Nginx\project"
rd /s/q vue_vite
md vue_vite
xcopy "D:\Soft\Jenkins\jenkins\workspace\vue_vite_free_type\dist" "D:\Soft\Nginx\project\vue_vite" /E /Y

不改变nginx配置的情况下,下面的可以不需要 

重启nginx服务
cd /d "D:\Soft\Nginx"
nginx -s reload
nginx -s quit
tasklist | find /i "nginx.exe" >nul 2>nul && goto isAlive || goto isKilled
:isKilled
start nginx
:isAlive
taskkill /f /t /im nginx.exe
start nginx

以上就是使用window批处理命令构建前端的整个流程,下面是使用pipeline构建项目并部署的流程

流水线项目构建

流水线配置和批处理命令一样,新建流水线任务,配置webhooks和token,pipeline的好处就是将每块步骤分开,直观的看到项目的构建过程

然后就是构建流水线脚本,这里放出我配置的一段供大家参考。


pipeline {
    agent any
   stages {
      stage('pull') {
         steps {
            echo 'pull code start'
            git branch: 'master',
                credentialsId: '7196d35f-xxxxxxxxxxxxxxxxxxxx-c7936ddd3dd4', 
                url: 'http://localhost:10241/xxxxxxx/vite--vue30.git'

         }
      }
      stage('build') {
         steps {
            echo "node version"
            bat "node -v"
            echo 'npm version'
            bat 'npm -v'
            echo 'install start......'
            bat "npm i"
            echo 'build start......'
            bat 'npm run build'
            echo 'build finish......'
         }
      }
      stage('deploy') {
         steps { 
            dir('d:/Soft/Nginx/project') {
                bat "rd /s/q vue_vite"
                bat "md vue_vite"
            }
            bat('xcopy "D:/Soft/Jenkins/jenkins/workspace/vue_vite_pipeline/dist" "D:/Soft/Nginx/project/vue_vite" /O /X /E /H /K')
            dir('d:/Soft/Nginx') {
                bat('start run.bat')
            }
            echo 'deploy success'
         }
         
      }
   }
}

其中run.bat的内容如下:

nginx -s reload
nginx -s quit
tasklist | find /i "nginx.exe" >nul 2>nul && goto isAlive || goto isKilled
:isKilled
start nginx
:isAlive
taskkill /f /t /im nginx.exe
start nginx

保存完成后来到流水线列表点击运行,程序就会开始运行。运行结束后界面会变成绿色,失败会变成红色

最后输入网址就可以看到部署效果,至此,前端自动化部署就介绍这么多,有兴趣的小伙伴可以自己试试,此方法同样适用node项目部署(建议搭配pm2管理node进程),需要把build命令去掉即可。

写在最后

gitee和github等远程仓库同样也支持webhooks或actions,有兴趣的小伙伴可以把Jenkins暴露在公网上配置远程服务,安利一波内网穿透搭建

最后,感谢你阅读完这篇文章,如果这篇文章有帮助到你,请支持一下博主~你的支持就是博主分享文章的动力!

<think>我们正在使用GiteaJenkins配置CI/CD自动化部署流程。根据引用[3],Jenkins是一个实现CI/CD的工具,而Gitea是一个轻量级的代码托管平台(类似于GitHub)。我们将通过以下步骤实现: 1. **安装Jenkins**:按照官方文档安装Jenkins服务端。注意使用最新版本的文档。 2. **配置Jenkins**:安装必要的插件,如Git插件、Gitea插件(或Generic Webhook Trigger插件)等。 3. **在Gitea中创建仓库**:将代码推送到Gitea仓库。 4. **配置Jenkins任务**:创建一个流水线任务(Pipeline),并设置从Gitea仓库拉取代码。 5. **设置Webhook**:在Gitea仓库中设置Webhook,以便在代码推送时触发Jenkins构建。 6. **编写Jenkinsfile**:在代码仓库中定义Jenkinsfile,描述构建、测试和部署的流程。 下面详细说明每一步: ### 1. 安装Jenkins 参考引用[3]中的官方文档,安装Jenkins。假设我们使用Linux服务器,可以按照以下步骤: - 下载并安装Jenkins(例如,使用war包或包管理器安装)。 - 启动Jenkins服务。 - 通过浏览器访问Jenkins,完成初始设置(包括安装推荐插件)。 ### 2. 配置Jenkins - 安装Gitea插件:在Jenkins插件管理中搜索“Gitea”插件并安装。如果找不到,可以使用“Generic Webhook Trigger”插件来接收Gitea的Webhook。 - 确保安装Git插件(通常默认安装)。 ### 3. 在Gitea中创建仓库 - 在Gitea中创建一个项目仓库,并将代码推送到该仓库。 ### 4. 配置Jenkins任务 - 在Jenkins中新建一个流水线任务(Pipeline)。 - 在“源码管理”部分选择Git,填写Gitea仓库的URL(例如:http://your_gitea_server/username/repo.git)和凭证(如果有权限)。 - 在“构建触发器”部分,选择“触发远程构建”(例如使用token)或“Generic Webhook Trigger”(如果使用该插件)。 ### 5. 设置Webhook - 在Gitea仓库中,进入“设置”->“Web钩子”,添加一个新的Webhook。 - 目标URL:填写Jenkins的Webhook触发地址,例如:`http://jenkins_server/generic-webhook-trigger/invoke?token=your_token`(如果使用Generic Webhook Trigger插件)或者如果是Gitea插件,则可能是`http://jenkins_server/gitea-webhook/post`。 - 设置触发事件,如“推送事件”。 ### 6. 编写Jenkinsfile 在代码仓库的根目录创建`Jenkinsfile`,定义流水线阶段。例如: ```groovy pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // 例如,如果是Node.js项目 // sh 'npm install' } } stage('Test') { steps { echo 'Testing...' // sh 'npm test' } } stage('Deploy') { steps { echo 'Deploying...' // 例如,使用scp或ssh部署到服务器 // sh 'scp -r output/ user@server:/path/to/deploy' } } } } ``` ### 验证 - 当向Gitea仓库推送代码时,Gitea会发送Webhook给Jenkins,触发流水线构建。 - 在Jenkins中查看构建日志,确保每个阶段都成功执行。 ### 注意事项 - 确保Jenkins服务器可以访问Gitea仓库(网络和权限)。 - 根据项目需要,在Jenkins中配置构建环境(如Node.js、Java等)。 - 部署步骤需要根据实际部署目标编写(如部署到服务器、Docker容器等)。 通过以上步骤,我们实现了使用GiteaJenkins的CI/CD自动化部署流程。当代码推送到Gitea仓库时,自动触发Jenkins构建,并完成构建、测试和部署。 §§相关问题§§ 1. 如何配置Jenkins以使用Gitea的SSH仓库? 2. 如何在Jenkins流水线中处理构建失败? 3. Jenkins流水线中如何安全地管理凭证(如部署密钥)?</think>### 如何使用 GiteaJenkins 配置 CI/CD 自动化部署流程 以下是配置自动化部署的核心步骤,结合 Gitea 的代码托管能力和 Jenkins 的流水线功能: #### **1. 环境准备** - **安装 Jenkins** 通过官方文档安装 Jenkins 服务端(推荐使用 Docker 或 war 包部署)[^3]: ```bash docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts ``` - **安装 Gitea** 从 [Gitea 官网](https://gitea.io) 下载二进制文件或使用 Docker 部署: ```bash docker run -d -p 3000:3000 gitea/gitea:latest ``` #### **2. Jenkins 基础配置** 1. **安装必要插件** 在 Jenkins 管理面板安装: - Gitea Plugin(用于集成) - Pipeline(定义流水线) - NodeJS Plugin(若需前端构建) - SSH Pipeline Steps(远程部署) 2. **配置全局凭据** 添加以下凭据: - Gitea 的 **SSH 密钥**(用于拉取代码) - 目标服务器的 **SSH 账号**(用于部署) #### **3. Gitea 仓库设置** 1. 在 Gitea 创建代码仓库并推送项目 2. **配置 Webhook**: 仓库设置 → Webhooks → 添加 Webhook: - URL: `http://<JENKINS_IP>/gitea-webhook/post` - 触发事件: `推送事件` #### **4. 创建 Jenkins 流水线** 1. **新建 Pipeline 任务** - 选择 *Pipeline script from SCM* - 填写 Gitea 仓库 URL:`http://<GITEA_IP>/<用户名>/<仓库>.git` 2. **编写 Jenkinsfile**(示例) ```groovy pipeline { agent any stages { // 拉取代码并构建 stage('Build') { steps { sh 'npm install' // 前端项目示例 sh 'npm run build' } } // 运行测试 stage('Test') { steps { sh 'npm run test' } } // 部署到服务器 stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'prod-server', // 预先配置的SSH凭据ID transfers: [ sshTransfer( source: 'dist/**', // 构建产物 remoteDirectory: '/var/www/app' ) ] ) ] ) } } } // Gitea Webhook 触发 triggers { gitea('Push Hook') } } ``` #### **5. 验证流程** 1. 推送代码到 Gitea 仓库 2. 观察 Jenkins 自动触发流水线: - 控制台输构建日志 - 检查目标服务器是否更新文件 #### **关键优化点** 1. **失败处理机制** 添加 `post` 阶段,在失败时发送通知: ```groovy post { failure { slackSend channel: '#alerts', message: '构建失败!' } } ``` 2. **Docker 集成**(可选) 在流水线中构建 Docker 镜像并推送到仓库: ```groovy stage('Docker Build') { steps { script { docker.build("my-app:${env.BUILD_ID}").push() } } } ``` 3. **环境变量管理** 使用 Jenkins 的 *Credentials Binding* 保护敏感数据(如 API 密钥) > **技术原理**:Gitea 的 Webhook 在代码推送时通知 JenkinsJenkins 拉取最新代码并执行预定义的流水线,实现 **持续集成(CI)→ 测试 → 自动部署(CD)** 的闭环[^4]。此方案将人工部署耗时从分钟级降至秒级,同时减少人为错误[^2]。 --- ###
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宇的编程之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值