把nodeJs后端代码通过Jenkins自动部署到服务器运行

554 阅读1分钟

第一步 写好要推送到git远程的代码(可运行的index.js)

新建一个npm node项目,引入依赖:

"dependencies": {
  "express": "^4.19.2"
}

在index.js写:

const express = require('express');
const app = express();


let github_router = require('./github_123_com/index')

app.use('/', github_router);

let port = 7777;
app.listen(port, () => {
    console.log(`github-node-server app listening on port ${port}`)
})

github_123_com/index.js写:

let express = require('express')
let router = express.Router()

// middleware that is specific to this router
router.use(function timeLog(req, res, next) {
    console.log('Time: ', Date.now())
    next()
})

let apiMount = require('./api');
apiMount(router);

module.exports = router

在api.js写:

module.exports = function apiMount(router) {
    function setHeaders(res) {
        res.setHeader("Access-Control-Allow-Origin", "https://github.123.com");
        res.setHeader("Access-Control-Allow-Method", "*");
        res.setHeader("Access-Control-Allow-Headers", "Content-Type");
        res.setHeader("Access-Control-Allow-Credentials", "true");
        res.setHeader("Access-Control-Expose-Headers", "Authorization");
        res.setHeader("Access-Control-Max-Age", "600");
    }

    apis.forEach(({regExp, method, getData}) => {
        router[method.toLowerCase()](regExp, function (req, res) {
            setHeaders(res);
            res.send(getData());
        });
    });
};

然后commit这个提交!

第二步:在centos(Linux)安装Jenkins

1、首先安装Java的jdk(步骤如网上所说,jdk17或者21)

2、安装好nvm,然后使用nvm install node@20安装好node,node自带npm,

3、然后安装好pnpm:npm install -g pnpm

4、

5、在安装好jdk的基础上,安装Jenkins(参考juejin.cn/post/726192…

  1. 打开get.jenkins.io/ 选择Linux版本进去
  2. 下载get.jenkins.io/redhat-stab… 可以使用wget下载
  3. 执行安装命令:rpm -ivh jenkins-2.452.3-1.1.noarch.rpm
  4. 修改配置:vi /usr/lib/systemd/system/jenkins.service
  5. 为了方便,不考虑安全策略,使用以下配置
User=root
Group=root

Environment="JAVA_HOME=/usr/share/java /usr/local/jdk/openjdk-21"

Environment="JENKINS_PORT=28088"

  1. 重新加载systemctl daemon-reload,启动服务:systemctl start jenkins

如果上面失败了,可以使用yum源安装:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key 

yum install jenkins
#或者
yum install --nogpgcheck  jenkins

  1. 如果上面都失败了,直接下载war包:get.jenkins.io/war-stable/…

  2. 写一个脚本(给运行权限 chmod +x 脚本):

#启动脚本 
export JENKINS_HOME=/usr/local/jenkins/

cd $JENKINS_HOME


nohup /usr/local/jdk/jdk-21/bin/java -jar jenkins.war --httpPort=28080 >console 2>&1 & 

启动成功(看日志):

image.png

第三步:使用vscode转发端口到本地电脑,配置Jenkins

image.png

image.png

配置这一步可以参考:juejin.cn/post/726192…

全部选空白不安装

安装gitee插件:plugins.jenkins.io/gitee/

然后直接创建Jenkins项目:

image.png

可以参考:front-end.toimc.com/notes-page/…

最后在Jenkins每次被webhook触发后执行以下:


echo 123
who am i
node -v
npm -v
pnpm -v
pwd

pnpm install

pm2 stop ./index.js


pm2 start ./index.js

echo '成功'

因为这个是运行在内部端口,最后还需要配置nginx反向代理才可以访问到。