GOlang上传静态文件到阿里云OSS

参考文档

阿里云官方API

https://help.aliyun.com/document_detail/88601.html

已服务运行

https://blog.csdn.net/daily886/article/details/103366145

参考

https://blog.csdn.net/qq_36034503/article/details/123696273

jenkins

https://blog.csdn.net/xujiamin0022016/article/details/108859168

架构图

image-20230601093926942

拉取代码

package main

import (
	"fmt"
	"os"
	"os/exec"
)

func main() {
	// 判断当前环境是否有 Git
	if _, err := exec.LookPath("git"); err != nil {
		fmt.Println("当前没有Git环境,建议你安装一下Git环境")
		return
	}

	// 执行 git clone 命令克隆代码仓库,并输入账户密码
	cmd := exec.Command("git", "clone", "-b", "oss", "xxxx", "D:/impromptu")
	cmd.Stdin = os.Stdin
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	cmd.Env = append(cmd.Env, "GIT_TERMINAL_PROMPT=1")
	cmd.Env = append(cmd.Env, "GIT_ASKPASS=")
	cmd.Run()

	fmt.Println("Repository cloned successfully")
}

image-20230602112037246

上传本地文件

package main

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
	client, err := oss.New("xxx", "xxxx", "xxxx")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 填写Bucket名称,例如examplebucket。
	bucketName := "oss-cicd"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 获取要删除的所有对象列表。
	marker := oss.Marker("")
	for {
		// 列举Bucket中的所有对象。
		lsRes, err := bucket.ListObjects(oss.MaxKeys(1000), marker)
		if err != nil {
			fmt.Println("Error:", err)
			os.Exit(-1)
		}

		// 遍历对象列表并依次删除每个对象。
		for _, object := range lsRes.Objects {
			err = bucket.DeleteObject(object.Key)
			if err != nil {
				fmt.Println("Error:", err)
				os.Exit(-1)
			}
			fmt.Println("Object deleted successfully:", object.Key)
		}

		// 如果Bucket中还有更多的对象需要列举,则更新marker继续列举。
		if lsRes.IsTruncated {
			marker = oss.Marker(lsRes.NextMarker)
		} else {
			break
		}
	}

	// 上传本地文件到OSS。
	localPath := "D:/impromptu/index.html"
	objectName := "index.html"
	err = bucket.PutObjectFromFile(objectName, localPath)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("Objects uploaded successfully")
}

在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐