最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 服务端项目服务器配置流程(GitLab+Jenkins)

    正文概述 掘金(ZhaoQianQian)   2021-07-24   579

    服务端项目服务器配置流程(GitLab+Jenkins)

    1. 阿里云域名配置指向到服务器地址
    2. 本地通过xshell测试域名是否联通指向服务器ping test.page.com
    1. 增加nginx代理
    server {
      listen:80;  # 监听本机所有 ip 上的 80 端口
      server_name test.page.com; # 域名:www.example.com 这里 "_" 代表获取匹配所有
      root /storage/nginx/www/page;  # 此处page代表文件夹名称,匹配所有名字发现为test.page.com 时访问代理的文件夹
      location / {
        index index.htm index.html index.php;
        try_files $uri $uri/ /index.html;
      } #默认访问根目录进入index主页
    }
    
    1. 重启 nginx服务
    systemctl stop nginx
    systemctl start nginx
    
    1. 检查 访问 test.page.com 是否出现502/404提示
    2. cd /storge/node 进入node文件配置
    1. 前端项目配置脚本
    新增oss配置
    const OSS = require('ali-oss');
    const util = require('util');
    const fs = require('fs');
    const path = require('path');
    
    const readdir = util.promisify(fs.readdir);
    const stat = util.promisify(fs.stat);
    
    class OssClient {
      constructor() {
        this.client = new OSS({
          region: 'xxxxxxxxxxx',
          accessKeyId: 'xxxxxxxxxxx', // process.env.ACCESSKEYID,
          accessKeySecret: 'xxxxxxxxxxx', // process.env.ACCESSKEYSECRET,
          bucket: process.env.NODE_ENV === 'production' ? 'xxxxxxxxxxx' : 'xxxxxxxxxxx', // process.env.BUCKET,
        });
      }
    
      async putStream(dir, ossDir = '/', fileName) {
        try {
          const stream = fs.createReadStream(path.resolve(dir, fileName));
          return await this.client.putStream(ossDir + fileName, stream);
        } catch (e) {
          console.log(e);
        }
      }
    
      async putDir(dir, ossDir) {
        let files;
        try {
          files = await readdir(dir);
        } catch (e) {
          console.log(`【当前目录不存在】 -- ${dir} --`);
          return undefined;
        }
    
        for (const i in files) {
          const state = await stat(`${dir}/${files[i]}`);
          if (state.isDirectory()) {
            await this.putDir(`${dir}/${files[i]}`, `${ossDir}/${files[i]}`);
          } else {
            await this.putStream(dir, `${ossDir}/`, files[i]);
          }
        }
      }
    
      async upload() {
        try {
          await this.putDir(path.resolve(__dirname, 'dist'), 'sass-erp-page');
        } catch (e) {
          console.log('【上传异常请重试】', e);
        }
      }
    }
    
    new OssClient().upload()
      .then(() => {
        console.log('上传成功')
      })
      .catch((error) => {
        console.log('上传异常', error);
      });
    
    根目录下新增build-test.sh
    #!/usr/bin/env bash
    
    echo "编译开始..."
    
    git pull
    
    yarn
    
    npm run build:test
    
    npm run oss:test
    
    echo "编译完成..."
    
    echo "复制文件到nginx 静态目录..."
    
    rm -rf  /storage/nginx/www/page/*
    
    \cp -rf dist/index.html  /storage/nginx/www/page
    
    echo "发布完成..."
    
    在package.json中增加执行脚本
    {
      ...
      "build:test":"cross-env ENV_NODE=test umi build",
      "oss:test":"cross-env ENV_NODE=test node oss.client.js"
    }
    

    \

    1. 拉取线上代码,切换分支,执行脚本
    git clone ... # 项目git路径
    cd /storge/node/page # 进入项目目录
    git checkout develop # 切换分支 
    git pull	# 拉取代码
    sh build-test.sh #执行脚本
    
    以上前端项目服务器环境配置完成
    自动化ci/cd配置
    1. 在Jenkins新建项目
    1. 添加项目描述
    2. 源代码管理选择Git
    1. Repositories 地址为GitLab项目地址
    2. 指定分支(为空时代表any)
    1. 构建触发器 选择Generic Webhook Trigger
    2. 设置token (可选令牌。如果已指定,则只有在调用http://JENKINS_URL/generic-webhook-trigger/invoke时提供了该令牌,才能触发此作业)
    1. 构建=》Execute shell
    cd /storage/node/page
    sh build-test.sh
    
    1. 保存
    1. 打开GitLab当前项目的设置
    1. 点击集成
    2. url:http://JENKINS_URL/generic-webhook-trigger/invoke ( JENKINS_URL本地集成环境;有token携带token )
    1. 保存当前设置

    \

    自动化ci/cd配置配置完成

    \

    \

    \


    起源地下载网 » 服务端项目服务器配置流程(GitLab+Jenkins)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元