借助 Gitee Go 将博客(文档知识库)上传至阿里云 OSS 中

Gitee借助 Gitee Go 将博客(文档知识库)上传至阿里云 OSS 中

博客文章链接: https://www.ftls.xyz/posts/gitee-oss/

本文借助Gitee Go实现上传博客到阿里云中,成品在 https://note.ftls.xyz 。有两种方法可以实现。

准备工作

  1. 博客本体,存储至 Gitee 中。并开通了 Gitee Go。
  2. 阿里云存储桶一个。准备存储桶参数 endpoint , bucketname。 并在基础设置中开启静态页面服务。
  3. 有存储桶写入权限的阿里云 AccessKey 。即 accessKeyID 和 accessKeySecret 。
  4. 服务器一台。不需要有公网ip,但是要有网。能被添加到 Gitee 主机组管理 即可。
  5. Docker软件 + Docker 仓库 + Gitee 凭证管理添加凭证 + Gitee 私人令牌

注意: 阿里OSS静态页面服务和阿里云CDN的OSS私有Bucket回源冲突! 原因及解决方案

注意: 4,5满足其中一个即可。

说明: 本文使用docsify作为博客网站生成渲染工具。docsify十分小巧。比起其他软件生成的一堆文件,docsify只需上传源文件。流量存储开销都很小。/root /home/kkbt

资料

命令行工具ossutil快速入门

步骤

方法一 Shell 脚本执行

该方法大约执行 3s .总文件大小不到 100k ,文件数不到 20.

在服务器上下载 git 和 ossutil

git clone 自己的项目,git 操作私有库可以使用 git config --global credential.helper store 存储密码。或者

git clone https://<用户名>:<私人令牌>@gitee.com/<用户名>/<项目名>/

ossutil 安装和使用见命令行工具ossutil快速入门

主机组管理添加

打开 Gitee 主机组管理

新建一组主机,添加主机。然后将命令复制到自己的服务器上(可以没有公网ip)。等待完成。

具体可见 https://gitee.com/help/categories/76

然后在 Gitee 新建一条流水线,触发事件选择 Push 事件 - 分支匹配留空可监听所有分支。

Push触发

Gitee Go 任务编排-工具Shell 脚本执行: 在指定主机组执行Shell脚本,可完成测试、部署等任务。

选择 任务编排,添加一个新任务。在 工具- Shell 脚本执行 中配置执行主机组和构建命令。

配置执行主机组和构建命令

构建命令就是会在自己服务器执行的脚本,可以参考

echo 'Start Push To OSS'
cd /home/kkbt/note
git pull
/home/kkbt/ossutil64 cp /home/kkbt/note/ oss://bucketname -rf --only-current-dir
/home/kkbt/ossutil64 cp /home/kkbt/note/text/ oss://bucketname/text -rf 
echo 'The End of Push'

两条上传主要排除 .git 文件夹。主要因为里面文件很多,还没必要上传。这之后只要Push就会触发脚本上传。

成功

方法二 Docker

该方法大约执行 30s .总文件大小不到 100k ,文件数不到 20. 可自行打包镜像,也可以使用 alpine 或 ubuntu 。

构建镜像

开源项目地址 https://github.com/chuangbo/docker-ossutil

Dockerfile:

FROM alpine as certs
RUN apk update && apk add ca-certificates

FROM busybox:glibc
COPY --from=certs /etc/ssl/certs /etc/ssl/certs

ENV OSSUTIL_VERSION 1.7.13

RUN mkdir -p /usr/local/bin \
    && wget http://gosspublic.alicdn.com/ossutil/${OSSUTIL_VERSION}/ossutil64 -O /usr/local/bin/ossutil \
    && chmod +x /usr/local/bin/ossutil

ENTRYPOINT ["/usr/local/bin/ossutil"]

原使用镜像: chuangbo/ossutil

我自己clone一个并更新了 1.7.13 版本 . 放在阿里云公开仓库了. 大约 15M 。地址:

registry.cn-hangzhou.aliyuncs.com/kkbt/ossutil:1.7.13
Docker仓库的配置

本文使用了阿里云容器镜像服务作为Docker私人镜像仓库。创建命名空间、创建镜像仓库。一个仓库可以存储不同版本的镜像。在容器镜像服务/实例列表/镜像仓库/基本信息中可以找到操作指南。

打开Gitee 凭证管理添加凭证。

Gitee上添加凭证

配置流水线

在 Giee 流水线设置四个全局参数

ENDPOINT

ACCESS_KEY_ID

ACCESS_KEY_SECRET

BUCKET_NAME

全局参数配置

在配置中引用

流水线内参数引用

配置任务

配置任务

镜像地址 registry.cn-hangzhou.aliyuncs.com/kkbt/ossutil:1.7.13

构建命令

echo '开始构建'
/usr/local/bin/ossutil config -e ${ENDPOINT} -i ${ACCESS_KEY_ID} -k ${ACCESS_KEY_SECRET} -L CH -c /root/.ossutilconfig # 生成配置文件
/usr/local/bin/ossutil cp . oss://${BUCKET_NAME} -rf --only-current-dir 
/usr/local/bin/ossutil cp ./text/ oss://${BUCKET_NAME}/text -rf 
echo '完成推送'

我两条上传主要不上传 .git 文件夹。而阿里的 ossutil 不能排除文件夹,只能排除文件。至少 1.7.13 版本是这样。

需要使用 Hugo , Hexo 等需要构建的博客

选择一个小 Linux 镜像 alpine。拉取镜像地址。拉取镜像地址 docker.io/alpine:latest 。

基于镜像的脚本执行的镜像地址填写 docker.io/alpine:latest。需要什么就安装什么,如hugo,hexo,zola等。

hexo 需要先安装 npm ,再使用 npm install -g hexo-cli 安装。hugo , zola 都可以通过 apk 安装。目前 mdbook 没有编译好的包,需要安装 Rust 环境,编译安装。

下面是hugo的安装和一些测试

构建命令填写

echo '开始测试'
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # alpine 包管理 apk 换源
apk add hugo # apk 安装 hugo
hugo version # 测试 hugo
wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 # 下载 ossutil64
chmod 755 ossutil64 # 赋予 ossutil64 执行权限
./ossutil64 config -e ${ENDPOINT} -i ${ACCESS_KEY_ID} -k ${ACCESS_KEY_SECRET} -L CH -c /root/.ossutilconfig # 生成配置文件
cat /root/.ossutilconfig # 查看是否成功

构建详情-基于镜像的脚本执行-执行日志脚本执行结果

执行结果

[2022-07-01 04:05:13]  ##################################################################################
[2022-07-01 04:05:13]  #             ____________.    _       __                                        #
[2022-07-01 04:05:13]  #            / __________/    (*)  .__/ /_.   _________.   _________.            #
[2022-07-01 04:05:13]  #           / /   ________.  / /  /__  __/   / _____  /   / _____  /             #
[2022-07-01 04:05:13]  #          / /   /_____/ /  / /    / /      / /____/ /   / /____/ /              #
[2022-07-01 04:05:13]  #         / /________/ /   / /    / /__.   / /______.   / /______.               #
[2022-07-01 04:05:13]  #         \_____**____/   /_/    /_**_/    \__**___/    \__**___/                #
[2022-07-01 04:05:13]  #                                                                                #
[2022-07-01 04:05:13]  ################################################################################## 
[2022-07-01 04:05:13] 
[2022-07-01 04:05:13] 开始测试
[2022-07-01 04:05:13] fetch https://mirrors.aliyun.com/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
[2022-07-01 04:05:16] fetch https://mirrors.aliyun.com/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
[2022-07-01 04:05:19] (1/3) Installing libgcc (11.2.1_git20220219-r2)
[2022-07-01 04:05:19] (2/3) Installing libstdc++ (11.2.1_git20220219-r2)
[2022-07-01 04:05:20] (3/3) Installing hugo (0.99.1-r0)
[2022-07-01 04:05:56] Executing busybox-1.35.0-r13.trigger
[2022-07-01 04:05:56] OK: 61 MiB in 17 packages
[2022-07-01 04:05:56] hugo v0.99.1-57dae1c2a4fbd9563f9c1ebf4196b5c5de4d6878+extended linux/amd64 BuildDate=2022-05-18T16:48:40Z
[2022-07-01 04:05:56] Connecting to gosspublic.alicdn.com (140.249.40.227:443)
[2022-07-01 04:05:56] saving to 'ossutil64'
[2022-07-01 04:05:56] ossutil64            100% |********************************|  9.9M  0:00:00 ETA
[2022-07-01 04:05:56] 'ossutil64' saved
[2022-07-01 04:05:56] [Credentials]
[2022-07-01 04:05:56] language=CH
[2022-07-01 04:05:56] endpoint=******
[2022-07-01 04:05:56] accessKeyID=******
[2022-07-01 04:05:56] accessKeySecret=******

总结

配合 OSS 的 CDN 更新触发,很好的完成了网站的自动部署和更新。

两个方法都跟通用,第二个通过简单配置即可使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,关于go阿里云oss视频上传的问题,我可以为您提供一些建议和参考。 首先,您需要在阿里云官网注册账号并创建一个OSS存储空间。然后,您可以使用阿里云提供的Go SDK来实现视频上传功能。在使用SDK前,您需要先安装SDK,并在代码引入相应的SDK包。 接下来,您需要编写代码来实现视频上传功能。以下是一个简单的示例代码: ``` import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 阿里云OSS的Access Key ID和Access Key Secret accessKeyId := "your_access_key_id" accessKeySecret := "your_access_key_secret" // OSS存储空间的Endpoint和名称 endpoint := "your_endpoint" bucketName := "your_bucket_name" // 本地视频文件的路径和文件名 localFile := "path/to/local/video.mp4" // OSS存储空间视频文件的名称 objectName := "video.mp4" // 创建OSS客户端实例 client, err := oss.New(endpoint, accessKeyId, accessKeySecret) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 获取存储空间实例 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 上传视频文件 err = bucket.PutObjectFromFile(objectName, localFile) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println("Video uploaded successfully.") } ``` 在代码,您需要替换accessKeyId、accessKeySecret、endpoint、bucketName、localFile和objectName等参数为您自己的值。 以上就是使用Go语言实现阿里云OSS视频上传的基本步骤和示例代码。希望能对您有所帮助。 ### 回答2: 阿里云oss是一种云存储服务,可以用于上传、存储和管理各种文件,包括视频文件。下面是如何使用阿里云oss进行视频上传的步骤: 1. 创建阿里云账号并登录控制台。如果还没有账号,需要先注册一个阿里云账号。 2. 在控制台找到并点击进入OSS服务。 3. 在OSS服务创建一个存储空间,即Bucket。Bucket可以理解为一个文件夹,用于存放上传的视频文件。 4. 在创建Bucket时,需要设置Bucket的名称和地域等属性。 5. 在Bucket创建一个文件夹,用于存放视频文件。 6. 使用OSS的SDK或者API,将视频文件上传到创建的文件夹。SDK和API提供了丰富的功能,可以支持断点续传、上传进度监听等。 7. 在上传视频文件时,可以设置一些参数,例如文件的ACL权限、存储类型等。 8. 上传完成后,可以在控制台查看已上传的视频文件。 9. 可以通过OSS提供的URL链接,获取已上传视频的访问地址,用于分享、播放等。 10. 在需要使用已上传的视频时,可以使用OSS提供的SDK或API进行相关操作,例如下载、删除等。 总结,使用阿里云OSS进行视频上传需要创建阿里云账号、登录控制台,创建存储空间和文件夹,使用SDK或API实现上传功能,最后通过链接分享或进行其他操作。 ### 回答3: 阿里云OSS(对象存储服务)是一种可靠、安全、高性能的云存储产品。通过OSS,我们可以方便地上传和管理各种类型的文件,包括视频文件。 要使用阿里云OSS上传视频,需要先获取阿里云账号,并在控制台创建一个OSS Bucket(存储空间)。在创建Bucket时,需要选择合适的地域和权限策略。 在上传视频之前,我们需要将视频文件切片处理,这可以通过FFmpeg等工具来实现。切片处理可以将大文件切割成小的分片,便于上传和管理。 接下来,我们可以使用阿里云OSS SDK或API进行视频上传。SDK提供了多种编程语言的封装,例如Java、Python、PHP等,方便开发者使用。我们需要设置好上传的目标Bucket、Object(视频文件名)、上传文件的本地路径以及其他可选的上传参数。 在视频上传过程,可以选择通过断点续传来保证上传的稳定性。断点续传可以将大文件分成多个分片,每个分片独立上传,如果某个分片上传失败,可重新上传该分片而不需要重新上传整个文件。 上传完成后,可以通过OSS提供的URL访问视频文件。同时,我们还可以设置访问权限,限定只有特定的用户或应用可以访问视频文件。 阿里云OSS还提供了丰富的功能,例如数据归档、数据迁移、安全备份等,可以根据实际需求来进行配置和使用。 总之,通过阿里云OSS,我们可以方便地将视频文件上传至云端,并进行灵活的管理和访问。这为视频存储和分发提供了可靠的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值