由于jenkins是基于java开发的软件,有些同学可能不想电脑里有多余的环境,所以只介绍docker镜像的安装方法,简单干净,如果有不会使用docker的小伙伴可以看一下我之前的帖子——从0开始打包docker镜像全过程记录(nodejs)

1. 安装jenkins镜像

docker pull jenkins/jenkins

2. 启动jenkins

docker run -d -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins
-v <主机路径>:<jenkins的插件配置路径> 
jenkinis的所有数据都在容器内的/var/jenkins_home中
这样配置可以把插件以及配置持久化保存到主机上,而不会因为删除容器导致配置丢失

没出啥问题的话,浏览器访问本地的8080路径就可以看到jenkins的页面了。

3. 安装需要的插件

  1. 点击系统管理=>插件管理=>Available plugins。
  2. 搜索安装NodeJS PluginPublish Over SSH,安装完毕后重启jenkins。

前者是为了全局的node环境,后者是为了上传构建完后的代码到服务器上。

4. 进行全局配置

  1. 点击系统管理=>系统配置,找到 Publish over SSH项(如果没有的话就是插件安装有问题),先配置ssh私钥(用来ssh连接到需要上传的服务器),没有就生成一个。
    配置私钥
  2. 然后是SSH Servers的配置,按照提示写就行,后续构建选择上传选择对应的就行。
    ssh server配置
  3. 点击系统管理=>全局工具配置=>NodeJS 安装,新增NodeJS,选择从nodejs.org(防止网络问题,推荐选镜像源)。
    新增NodeJS
  4. 选择你需要的node版本,需要安装的全局包(我这里选择了pnpm作为安装依赖的工具)。
    配置版本以及公共包
    保存后回到首页,准备开始创建构建任务。

5. 新建任务

  1. 创建一个自由风格的任务。
    新建任务
    创建完毕后,在配置页面选择丢弃旧的构建。
    在这里插入图片描述
  2. 添加源码的git仓库地址,添加仓库对应的凭据(我这里是添加了gitee的账号密码)。
    在这里插入图片描述
    按照提示添加即可
    添加凭证
  3. 构建环境选择Provide Node & npm bin/ folder to PATH,用于构建vue项目。
    选择构建环节为node
  4. 增加构建步骤,执行shell脚本,用来安装项目依赖和打包项目。
    执行shell脚本
echo $PATH
node -v
pnpm -v
pnpm install
pnpm run build
cd dist
tar -zcvf portal.tar.gz *
cd ../
  1. 添加构建后操作,用于上传打包后文件到服务器上。
    选择构建后操作
    SSH上传的配置
#参数说明
Source files => dist/portal.tar.gz # 指定上传的文件,也可以使用`**/*.jar`来匹配文件
# 上面最好指定某个路径下的文件,不然会扫描全局文件(别问我为啥知道)
Remove prefix => dist # 需要删除的前缀
Remote Directory => /home/username/jenkins_ssh # 指定上传到服务器的路径
Exec command => sh /home/username/utils/publish_protal.sh portal /home/username/jenkins
# 上面的参数可以指定上传完毕后,在服务器执行的命令,用来部署解压文件到具体目录,接下来我会放出脚本内容

全部设置完毕后即可保存任务。

6. 编写部署脚本

  1. 新建publish_protal.sh,键入以下内容(需要根据项目实际生成的文件修改)
project_name="portal"
portal_home="/home/username/protal"
ssh_home="/home/username/jenkins_ssh"

# 校验传参
if [ $# -lt 1 ]; then
  echo "you must use like this : ./publish_portal.sh <project_name> [portal home dir]"
  exit
fi
if [ "$1" != "" ]; then
   project_name="$1"
fi
if [ "$2" != "" ]; then
   portal_home="$2"
fi

echo "portal code copy"
#publish project_name
echo "$project_name publishing"
rm -rf "$portal_home"/index.html "$portal_home"/assets "$portal_home"/static
cd $ssh_home
tar -zxvf portal.tar.gz
#bak project_name
BAK_DIR=~/jenkins_ssh_old/$project_name/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp $ssh_home/portal.tar.gz "$BAK_DIR"/"$project_name"_`date +%H%M%S`.tar.gz
#remove tmp
rm portal.tar.gz
#copy portal code
cp -r * "$portal_home"
#remove tmp
rm -rf index.html assets static
#start portal
echo "Portal is starting,please try to access $project_name conslone url"
  1. 上传到服务器指定位置如/home/username/jenkins_ssh,然后执行chmod命令让文件可执行,chmod 755 /home/username/jenkins_ssh/publish_portal.sh

7. 测试运行,如有报错可以根据提示修改配置。

  1. 进入你创建的任务,点击立即构建,开始构建后会产生一条日志。
    构建任务
    点击进入日志后,可查看控制台输出,查看构建失败的原因。

8. 执行上传完毕后如果发现部署失败了,可以在服务器看看错误日志,不会看日志可以选择手动把文件上传到服务器再手动执行脚本运行一下,这样可以直接看到报错信息。

如果想外部访问web应用,还需要配置nginx,网上帖子也很多,这里就不赘述了,祝你码到成功!

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐