从零到一:使用Jenkins配置Web应用的完整指南

从零到一:使用Jenkins配置Web应用的完整指南

1. 介绍

  • 什么是Jenkins?

Jenkins是一个流行的开源自动化服务器,用于实现持续集成和持续部署。它可以自动执行构建、测试和部署任务,极大地提高了软件开发的效率和质量。 一句话就是"管理执行构建、部署、测试脚本的运维平台"。具体功能请至官网查看www.jenkins.io/

  • 为什么使用Jenkins来配置Web应用?

很简单,在满足需求的情况下,jenkins开源免费本地化部署。其实也可选择gitlab ci和github action,但是项目多了之后这些都是要收费的。当然大公司人力投入大的话一般会自己搭建有ci功能的代码平台

2. 准备工作

  • 确保环境满足要求

为了方便本次使用docker安装jenkins 并不需要本地有java安装,所需要的就只有docker。docker 安装如下所示 docs.docker.com/engine/inst...。本次使用的腾讯云服务器,系统版本信息如下

ini 复制代码
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
  • 安装和配置Jenkins

安装jenkins参考官网教程www.jenkins.io/zh/doc/book... 安装完成后访问localhost:8080出现如下所示 由于我们使用的是docker,所以这个初始密码是需要docker中获取。 首先

bash 复制代码
docker container ls

查看jenkins的container id,然后

bash 复制代码
 docker exec -it <containerID> /bin/bash

进入docker,最后

bash 复制代码
cat /var/jenkins_home/secrets/initialAdminPassword

即可获取初始密码 进入jenkins这里选择不安装推荐插件(推荐大家按需安装),

接下来跟着引导创建第一个管理员用户即可。

进入jenkins后,右上角会提示版本低,看上去是中文网的镜像有点落后了,这里建议先升级下版本 安装成功后ui有变化是这样的

3. 插件安装配置

接下来是需要安装必要的插件,首先我们源码是git管理的,所以需要安装两个插件,git 以及 Git Parameter(先忽略最上面的git client这个是pipeline的依赖)
然后安装pipeline ,这个是很最关键的一个插件,只有通过它才能写pipeline 不然就只能自己写shell。
然后是ssh agent,我们需要ssh agent用以访问代码仓库拉取代码,(下述SSH Credentials为git plugin依赖,请忽略)
最后我们打包web app需要安装nodejs plugin用于安装nodejs环境以及安装全局cli工具(比如yarn)。当然,如果使用docker跑的node服务端项目就不需要了。
都安装好后开始配置访问git的密钥,如下所示
add credential后选择 ssh username with private key,然后输入id name 最后将自己的私钥复制粘贴到这里。

再接下来配置nodejs打包环境。 进入tools配置,包管理工具用的yarn,所以需要指定一个全局安装的yarn。如下 最后是打包需要指定branch所以我们需要一个插件叫Git Parameter

4. 编写构建脚本

一切都准备好了,接下来新建项目并就是写ci脚本。 首先创建Jenkins项目

然后在项目设置里面写脚本,这里可以选直接执行项目中的jenkinsfile 但是个人还是比较习惯直接把脚本写在这里

最后我们来写写脚本,写脚本第一步先有思路,一个web项目的脚本执行流程应该是

  1. 从git仓库clone项目并checkout到指定分支
  2. 环境切换为指定node版本以及指定包管理器版本
  3. 执行install命令安装依赖
  4. 执行build相关命令打包产物
  5. 将打包好的产物上传到指定目录/将产物上传到指定cdn

有了思路之后我们把这段话丢给gpt让它给你生成脚本然后自己改改就行,最终脚本大致长这样

typescript 复制代码
pipeline {
  agent any
  environment {
      PROJ_DIR = 'repository'
      APP_ENV = 'dev'
      GIT_REPO_URL = 'https://github.com/your/repository.git'
  }
  parameters {
      gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
  }
  stages {
      stage('pull') {
          steps {
              sshagent(['sshID']) {
                  checkout([$class: 'GitSCM', branches: [[name: params.BRANCH]],
                        doGenerateSubmoduleConfigurations: false,
                        extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: GIT_REPO_URL]]])
              }
          }
      }
      stage('install') {
          steps {
              dir(PROJ_DIR) {
                  nodejs(nodeJSInstallationName: 'nodejs16.20.0') {
                      echo 'clean cache'
                      sh 'yarn cache clean'
                      echo 'install dependencies'
                      sh 'yarn install'
                  }
              }
          }
      }
      stage('build') {
          steps {
              nodejs(nodeJSInstallationName: 'nodejs16.20.0') {
                  sh "VITE_API_ENV=${APP_ENV} yarn build"
              }
          }
      }
      stage('deploy') {
          steps {
              sh 'scp -r -i /root/.ssh/id_rsa ./dist <username>@hostname:/path/to/frontend/'
          }
      }
  }
}

这个脚本填入pipeline后就可以在外部直接点击run with parameter部署自己的项目了。

5. 参考资料

相关推荐
正小安26 分钟前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
_.Switch2 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光2 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   2 小时前
vite学习教程06、vite.config.js配置
前端·vite配置·端口设置·本地开发
长路 ㅤ   2 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web2 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
安冬的码畜日常2 小时前
【CSS in Depth 2 精译_044】第七章 响应式设计概述
前端·css·css3·html5·响应式设计·响应式
莹雨潇潇3 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr3 小时前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
Tiffany_Ho4 小时前
【TypeScript】知识点梳理(三)
前端·typescript