在项目开发中,每次修改完代码后,都需要我们手动打包部署到服务器中。
这个过程是重复的机械的,我们可以使用一定的方式来简化这个过程,让它自动化执行。
常见的方法有Jenkins配合对应的代码仓库,在代码提交后自动打包发布到服务器上。
这里我使用的代码仓库是coding,以部署我的个人网站为例
环境- 项目:vuepress(node环境)
- 部署:nginx服务器
- 在conding打包生成结果文件
- 推送到服务器上nginx对应的文件夹中
创建代码仓库
提交代码到云仓库
我的项目使用的vuepress模版(一个简单的vue个人网站模版)
持续集成 创建构建过程在左侧菜单中有持续集成的选项
创建构建计划
可以选择模版
这里选择自定义构建过程
设置构建过程配置构建过程
Jenkinsfilepipeline { agent any stages { stage('检出') { steps { checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]) } } stage('安装依赖') { steps { sh 'rm -rf /usr/lib/node_modules/npm/' dir('/root/.cache/downloads') { sh 'wget -nc "https://coding-public-generic.pkg.coding.net/public/downloads/node-linux-x64.tar.xz?version=v16.13.0" -O node-v16.13.0-linux-x64.tar.xz | true' sh 'tar -xf node-v16.13.0-linux-x64.tar.xz -C /usr --strip-components 1' } withCredentials([ usernamePassword( // CODING 持续集成的环境变量中内置了一个用于上传到当前项目制品库的凭证 credentialsId: env.CODING_ARTIFACTS_CREDENTIALS_ID, usernameVariable: 'CODING_ARTIFACTS_USERNAME', passwordVariable: 'CODING_ARTIFACTS_PASSWORD' )]) { script { sh ''' CODING_ARTIFACTS_PASSWORD_ENCODED=$(echo -n "${CODING_ARTIFACTS_PASSWORD}" | base64) echo "CODING_ARTIFACTS_USERNAME=${CODING_ARTIFACTS_USERNAME}" >> $CI_ENV_FILE echo "CODING_ARTIFACTS_PASSWORD_ENCODED=${CODING_ARTIFACTS_PASSWORD_ENCODED}" >> $CI_ENV_FILE ''' readProperties(file: env.CI_ENV_FILE).each {key, value -> env[key] = value } } } sh 'npm install' } } stage('构建') { steps { echo '构建中...' sh 'npm run docs:build' sh 'tar -zcf /tmp/tmp.tar.gz docs/.vuepress/dist/' echo '构建完成.' } } stage('部署') { steps { echo '部署中...' script { def remote = [:] remote.name = 'web-server' remote.allowAnyHosts = true remote.host = '1.1.1.1' remote.port = 22 remote.user = 'root' // 把「CODING 凭据管理」中的「凭据 ID」填入 credentialsId,而 username 和 password 无需修改 withCredentials([usernamePassword(credentialsId: "****", usernameVariable: 'username', passwordVariable: 'password')]) { remote.user = username remote.password = password // SSH 上传文件到远端服务器 sshPut remote: remote, from: '/tmp/tmp.tar.gz', into: '/tmp/' // 解压缩 sshCommand remote: remote, command: "tar -zxf /tmp/tmp.tar.gz -C /tmp/" sshCommand remote: remote, sudo: true, command: "cp -R /tmp/docs/.vuepress/dist/* /usr/local/nginx/html/web/blog/" } } echo '部署完成' } } } }构建
点击立即构建,可以看到如下图示
如果全程没有报错,那就是成功了,如果报错就根据报错提示修改Jenkinsfile
设置触发规则可以根据自己的需求来设置触发规则,我这里是代码提交到master后执行
结果访问网站就能看见最新的修改
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)