静态文件部署到阿里云oss
一个可以将构建的静态文件推送到阿里云 oss 的 docker 镜像,一般来说,既然是 docker,还得使用宿主机,既然有了宿主机,完全可以用 ossutil 工具。
所以该镜像配合 coding 用起来很方便,coding 有自动化部署功能,通过该功能可以实现静态网站生成,配合该推送工具,即可同步推送到 oss。
该镜像目前通过 hexo 和 vuepress 测试正常,其他程序暂未测试。
实现步骤
先进行构建静态网站,然后讲静态网站文件全部推送到 oss
准备条件
- oss 秘钥配置文件 ossutilconfig
1[Credentials]
2 language=CH
3 accessKeyID=LTAIbZcdVCmQ****
4 accessKeySecret=D26oqKBudxDRBg8Wuh2EWDBrM0****
5 endpoint=oss-cn-hongkong.aliyuncs.com
- hexo 和 vuepress 需要基于现有项目,不能全局安装,需要基于项目安装的 vuepress 或者 hexo,所以需要 package.json 增加 scripts
1"scripts": {
2 "build2oss": "npx xxxxxxxx"
3}
- 配置 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}
- 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 分钟左右吧。
关注 “AUTRE” 微信公众号,给我留言