静态文件部署到阿里云oss

2020-05-01
oss
阿里云

一个可以将构建的静态文件推送到阿里云 oss 的 docker 镜像,一般来说,既然是 docker,还得使用宿主机,既然有了宿主机,完全可以用 ossutil 工具。

所以该镜像配合 coding 用起来很方便,coding 有自动化部署功能,通过该功能可以实现静态网站生成,配合该推送工具,即可同步推送到 oss。

该镜像目前通过 hexo 和 vuepress 测试正常,其他程序暂未测试。

实现步骤

先进行构建静态网站,然后讲静态网站文件全部推送到 oss

准备条件

  1. oss 秘钥配置文件 ossutilconfig
1[Credentials]
2    language=CH
3    accessKeyID=LTAIbZcdVCmQ****
4    accessKeySecret=D26oqKBudxDRBg8Wuh2EWDBrM0****
5    endpoint=oss-cn-hongkong.aliyuncs.com
  1. hexo 和 vuepress 需要基于现有项目,不能全局安装,需要基于项目安装的 vuepress 或者 hexo,所以需要 package.json 增加 scripts
1"scripts": {
2  "build2oss": "npx xxxxxxxx"
3}
  1. 配置 Jenkinsifle,DEST=生成的静态文件目录
 1pipeline {
 2  agent any
 3  stages {
 4    stage('检出') {
 5      steps {
 6        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
 7      }
 8    }
 9    stage('构建并推送到oss') {
10      steps {
11        sh 'docker run -i --name build2oss -v "$(pwd)/":/var/app -e DEST="public" -e BUCKET=${BUCKET} ioutio/build2oss'
12      }
13    }
14  }
15}
  1. coding 自动部署配置:

持续集成=》构建计划=》新建,配置来源选择使用代码库中的 Jenkinsfile

新建构建计划

设置环境变量 BUCKET=Bucket 名称,其他保持不变,触发规则可以根据自己情况配置

环境变量设置

vuepress 目录及文件说明:

进到 vuepress 根目录,确保结构如下,有 ossutilconfig 文件

1. 根目录
2|--docs
3|--|--dist          #生成的静态文件目录
4|--|--.vuepress
5|--|--|--config.js  #vuepress配置文件
6|--|--README.md
7|--package.json     #vuepress所属项目配置文件
8|--ossutilconfig    #阿里云oss配置参数
9|--Jenkinsifle      #自动构建文件

package.json 中"build2oss":"npx vuepress build docs"

将 Jenkinsifle 中构建并推送 oss 步内容改为:

1stage('构建并推送到oss') {
2  steps {
3    sh 'docker run -i --name build2oss -v "$(pwd)/":/var/app -e DEST="docs/dist" -e BUCKET=${BUCKET} ioutio/build2oss'
4  }
5}
6

hexo 目录及文件说明:

进到 hexo 根目录,确保结构如下,有 ossutilconfig 文件

1. 根目录
2|--public           #生成的静态文件目录
3|--package.json     #vuepress所属项目配置文件
4|--ossutilconfig    #阿里云oss配置参数

package.json 中"build2oss":"npx hexo generate"

将 Jenkinsifle 中构建并推送 oss 步内容改为:

1stage('构建并推送到oss') {
2  steps {
3    sh 'docker run -i --name build2oss -v "$(pwd)/":/var/app -e DEST="public" -e BUCKET=${BUCKET} ioutio/build2oss'
4  }
5}

一切配置好后,如果触发是提交代码就触发,每次提交代码,就自动部署到 oss 了,大约 1 分钟左右吧。