Compare commits

...

65 Commits

Author SHA1 Message Date
5850f0b468 feat(更新镜像): 更新镜像
All checks were successful
/ build (push) Successful in 36s
2025-12-08 10:47:31 +08:00
f061d6178d fix(修复错误): 修复例子错误 2025-12-02 12:26:29 +08:00
2a282ca5c2 docs(更新文档): 更新文档 2025-12-02 11:41:16 +08:00
a3375a34a4 docs(更新文档): 更新文档 2025-12-02 11:29:12 +08:00
2090aae0cc docs(更新文档): 更新文档 2025-12-02 11:28:36 +08:00
1ebda0078c docs(更新说明): 更新说明 2025-12-02 11:16:27 +08:00
ea44ed1507 docs(更新说明): 更新说明 2025-12-02 11:08:29 +08:00
db4bc7fdc0 feat(项目描述): 更新项目描述 2025-12-02 10:59:25 +08:00
d1524949bc feat(项目说明): 更新项目说明 2025-12-02 10:56:47 +08:00
d245b6a457 feat(项目说明): 更新项目说明 2025-12-02 10:51:07 +08:00
58e013d16c feat(更新标识): 更新标识 2025-12-02 10:45:33 +08:00
415ee86119 feat(添加标识): 添加标识 2025-12-02 10:44:57 +08:00
b790581c61 feat(更新文件): 添加icon和color 2025-12-02 10:42:21 +08:00
82450d7c27 feat(更新描述): 更新描述 2025-12-02 10:40:52 +08:00
bb13514103 feat(构建文件): 添加构建文件 2025-12-02 10:35:46 +08:00
55797be1d7 feat(调整参数): 源和目的输入参数后面添加_path 2025-12-02 10:24:14 +08:00
9f9fba518b feat(加强兼容): 兼容Gitea/GitHub 2025-12-02 10:20:58 +08:00
5b7ff7204d feat(构建脚本): 迁移构建脚本 2025-11-26 17:19:50 +08:00
e2bd2e0381 feat(更新依赖): 更新依赖 2025-11-09 20:14:17 +08:00
c5e2ea06e3 feat(更新镜像): 更新镜像 2025-10-15 13:46:06 +08:00
8eb4fc49aa feat(更新镜像): 更新镜像 2025-10-09 23:59:15 +08:00
c5a7ce0691 feat(升级依赖): 升级依赖 2025-09-07 18:35:06 +08:00
e0ff4aca0b feat(更新版本): 更新版本 2025-08-14 10:54:11 +08:00
f17e12a988 feat(升级版本): 升级版本 2025-08-07 20:47:57 +08:00
e21e1b6363 feat(更新依赖): 更新依赖 2025-07-24 10:01:28 +08:00
4a754700e2 feat(刷新版本): 刷新版本 2025-07-09 09:14:03 +08:00
0f22d0991b feat(刷新版本): 刷新版本 2025-07-09 09:02:00 +08:00
7af5b8c98d feat(升级依赖): 升级依赖 2025-06-07 20:50:58 +08:00
e307db9de7 feat(升级依赖): 升级依赖 2025-05-08 14:35:02 +08:00
677cac0b33 feat(更新依赖): 更新依赖 2025-04-02 11:11:34 +08:00
4bdcf5d57e feat(更新依赖): 更新依赖 2025-03-05 18:29:06 +08:00
ec10d3093a feat(更新版本): 更新版本 2025-02-13 09:19:54 +08:00
61844be062 feat(升级依赖): 升级依赖 2025-02-11 21:49:42 +08:00
6be36afba1 feat(更新语法): 更新语法 2025-01-18 23:07:38 +08:00
c674c7c3c3 feat(更新镜像): 更新镜像 2025-01-18 22:59:05 +08:00
095ddd9165 feat(更新镜像): 更新镜像 2024-12-17 16:43:54 +08:00
67637fa55e feat(升级依赖): 升级依赖 2024-12-04 14:30:35 +08:00
a229f9eb3b feat(升级依赖): 升级依赖 2024-11-21 14:07:37 +08:00
4df67b8874 feat(更新依赖): 更新依赖 2024-11-08 21:49:22 +08:00
a470a2eab3 feat(升级依赖): 升级依赖 2024-10-08 09:59:10 +08:00
5a6d2baadf feat(升级版本): 升级版本 2024-09-12 14:58:02 +08:00
0c86408480 feat(升级依赖): 升级依赖 2024-08-15 03:44:45 +08:00
d5454ddc37 feat(更新依赖): 更新依赖 2024-07-17 10:03:17 +08:00
239c3d2ad0 feat(构建脚本): 调整构建脚本 2024-06-22 22:56:00 +08:00
969b0cbe62 feat(更新镜像): 更新镜像 2024-06-21 15:51:38 +08:00
0b233666f5 feat(更新依赖): 更新依赖 2024-06-19 14:31:33 +08:00
c7d127dff7 feat(升级依赖): 升级依赖 2024-06-05 13:51:08 +08:00
59411279eb feat(升级依赖): 升级依赖 2024-05-11 19:47:01 +08:00
e528f2ddf4 feat(更新版本): 更新版本 2024-04-07 13:38:13 +08:00
e9e86af4dd feat(更新依赖): 更新依赖 2024-03-13 16:55:55 +08:00
ab8323a34d feat(升级依赖): 升级依赖 2024-02-13 00:57:02 +08:00
1d73a5a962 feat(升级依赖): 升级依赖 2024-01-10 11:42:19 +08:00
882519753b feat(升级版本): 升级版本 2023-12-06 11:31:21 +08:00
bdaade4a18 feat(更新依赖): 更新依赖 2023-11-08 12:38:40 +08:00
83e9a70b01 feat(升级依赖): 升级依赖 2023-10-15 23:45:49 +08:00
67e3da13c7 Merge branch 'main' of github.com:xiaoqidun/gocos 2023-10-07 00:04:43 +08:00
1ab730b0bb feat(更新镜像): 更新镜像 2023-10-07 00:03:23 +08:00
e91e2d56e4 feat(编译参数): 调整编译参数 2023-10-06 02:26:17 +08:00
d7b165ce82 feat(升级镜像): 升级镜像 2023-09-29 17:37:01 +08:00
0d84371b1f feat(更新依赖): 更新依赖 2023-09-07 10:38:26 +08:00
536852bb79 feat(更新镜像): 更新底层镜像 2023-08-09 15:55:00 +08:00
11ab5e4f01 feat(更新镜像): 更新镜像 2023-07-12 11:10:26 +08:00
a2ea6579d9 feat(设置区域): 设置打包区域 2023-07-07 02:28:15 +08:00
dff970b744 feat(更新镜像): 增加国内部署 2023-07-07 01:28:01 +08:00
3ef8929f4b feat(升级依赖): 升级依赖 2022-08-04 12:56:15 +08:00
8 changed files with 130 additions and 64 deletions

View File

@@ -1,21 +0,0 @@
kind: pipeline
type: docker
name: default
steps:
- name: build
pull: if-not-exists
image: hkccr.ccs.tencentyun.com/xiaoqidun/goenv
commands:
- CGO_ENABLED=0 go build -o gocos -trimpath -ldflags '-s -w' gocos.go
- name: docker
pull: if-not-exists
image: plugins/docker
settings:
repo: hkccr.ccs.tencentyun.com/xiaoqidun/gocos
registry: hkccr.ccs.tencentyun.com
username:
from_secret: docker_username
password:
from_secret: docker_password
dockerfile: Dockerfile

View File

@@ -0,0 +1,39 @@
on: [push, workflow_dispatch]
jobs:
build:
runs-on: cn
steps:
- name: checkout
uses: actions/checkout@v6
- name: docker goenv
uses: docker://ccr.ccs.tencentyun.com/xiaoqidun/goenv:latest
with:
args: sh -c "GOAMD64=v3 CGO_ENABLED=0 go build -o gocos -trimpath -ldflags '-s -w -buildid=' gocos.go"
- name: docker setup
uses: docker/setup-buildx-action@v3
with:
driver-opts: |
"env.http_proxy=${{ env.HTTP_PROXY }}"
"env.https_proxy=${{ env.HTTPS_PROXY }}"
"env.no_proxy=${{ env.NO_PROXY }}"
- name: docker login
uses: docker/login-action@v3
with:
registry: ccr.ccs.tencentyun.com
username: ${{ secrets.docker_username }}
password: ${{ secrets.docker_password }}
- name: docker login
uses: docker/login-action@v3
with:
registry: hkccr.ccs.tencentyun.com
username: ${{ secrets.docker_username }}
password: ${{ secrets.docker_password }}
- name: docker build
uses: docker/build-push-action@v6
with:
context: .
push: true
provenance: false
tags: |
ccr.ccs.tencentyun.com/xiaoqidun/gocos:latest
hkccr.ccs.tencentyun.com/xiaoqidun/gocos:latest

View File

@@ -1,11 +1,10 @@
# 基础镜像
FROM alpine:3.16.0
FROM alpine:3.23.0
# 作者信息
LABEL MAINTAINER="xiaoqidun@gmail.com"
LABEL authors="xiaoqidun"
# 复制程序
COPY gocos /bin/gocos
# 启动命令
ENTRYPOINT /bin/gocos
ENTRYPOINT ["/bin/gocos"]

View File

@@ -1,8 +1,30 @@
# GoCOS
腾讯云对象存储(COS)Drone CI插件[AWS S3](http://plugins.drone.io/drone-plugins/drone-s3/)的COS实现
通过Gitea/Drone CI上传文件到腾讯云对象存储
# Drone CI配置例子
# Gitea配置例子
```yaml
on: [ push, workflow_dispatch ]
jobs:
default:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v6
- name: upload to cos
uses: xiaoqidun/gocos@main
with:
secret_id: ${{ secrets.secret_id }}
secret_key: ${{ secrets.secret_key }}
bucket_url: ${{ secrets.bucket_url }}
source_path: build/release
target_path: build/release
strip_prefix: build/release
```
# Drone配置例子
```yml
kind: pipeline
@@ -10,8 +32,8 @@ type: docker
name: default
steps:
- name: upload
image: hkccr.ccs.tencentyun.com/xiaoqidun/gocos
- name: upload to cos
image: ccr.ccs.tencentyun.com/xiaoqidun/gocos:latest
settings:
secret_id:
from_secret: secret_id
@@ -19,12 +41,12 @@ steps:
from_secret: secret_key
bucket_url:
from_secret: bucket_url
source: build/release
target: build/release
source_path: build/release
target_path: build/release
strip_prefix: build/release
```
# Drone CI配置说明
# 输入参数说明
### secret_id
@@ -38,11 +60,11 @@ API密钥管理获得的SecretKey
存储桶概览中的访问域名
### source
### source_path
DroneCI中文件的源位置
构建环境中文件的源位置
### target
### target_path
存储桶中文件的目标位置

28
action.yml Normal file
View File

@@ -0,0 +1,28 @@
name: '上传文件到腾讯云对象存储xiaoqidun'
description: '上传文件到腾讯云对象存储xiaoqidun'
author: 'xiaoqidun'
inputs:
secret_id:
description: 'API密钥管理获得的SecretId'
required: true
secret_key:
description: 'API密钥管理获得的SecretKey'
required: true
bucket_url:
description: '存储桶概览中的访问域名'
required: true
source_path:
description: '构建环境中文件的源位置'
required: true
target_path:
description: '存储桶中文件的目标位置'
required: true
strip_prefix:
description: '从文件的源位置剔除前缀'
required: false
runs:
using: 'docker'
image: 'docker://ccr.ccs.tencentyun.com/xiaoqidun/gocos:latest'
branding:
icon: 'upload-cloud'
color: 'blue'

4
go.mod
View File

@@ -1,8 +1,8 @@
module github.com/xiaoqidun/gocos
go 1.18
go 1.25.5
require github.com/tencentyun/cos-go-sdk-v5 v0.7.35
require github.com/tencentyun/cos-go-sdk-v5 v0.7.71
require (
github.com/clbanning/mxj v1.8.4 // indirect

13
go.sum
View File

@@ -1,7 +1,7 @@
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I=
github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
@@ -11,9 +11,12 @@ github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ=
github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4=
github.com/tencentyun/cos-go-sdk-v5 v0.7.35 h1:XVk5GQ4eH1q+DBUJfpaMMdU9TJZWMjwNNwv0PG5nbLQ=
github.com/tencentyun/cos-go-sdk-v5 v0.7.35/go.mod h1:4dCEtLHGh8QPxHEkgq+nFaky7yZxQuYwgSJM87icDaw=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563/go.mod h1:uom4Nvi9W+Qkom0exYiJ9VWJjXwyxtPYTkKkaLMlfE0=
github.com/tencentyun/cos-go-sdk-v5 v0.7.71 h1:dV0doQK6k0MTdNIIWqP23ESvlPPI1ZZCCIBZGjsWR2Y=
github.com/tencentyun/cos-go-sdk-v5 v0.7.71/go.mod h1:STbTNaNKq03u+gscPEGOahKzLcGSYOj6Dzc5zNay7Pg=
github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20250515025012-e0eec8a5d123/go.mod h1:b18KQa4IxHbxeseW1GcZox53d7J0z39VNONTxvvlkXw=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

View File

@@ -3,7 +3,6 @@ package main
import (
"context"
"errors"
"github.com/tencentyun/cos-go-sdk-v5"
"io/fs"
"log"
"net/http"
@@ -13,14 +12,16 @@ import (
"strings"
"time"
_ "time/tzdata"
"github.com/tencentyun/cos-go-sdk-v5"
)
const (
SecretID = "secret_id"
SecretKey = "secret_key"
BucketURL = "bucket_url"
Source = "source"
Target = "target"
SourcePath = "source_path"
TargetPath = "target_path"
StripPrefix = "strip_prefix"
PathSeparator = "/"
)
@@ -31,25 +32,20 @@ func ErrExit(err error) {
}
func GetConfig(key string) string {
key = "PLUGIN_" + strings.ToUpper(key)
key = strings.ToUpper(key)
if val := os.Getenv("INPUT_" + key); val != "" {
return val
}
if val := os.Getenv("PLUGIN_" + key); val != "" {
return val
}
return os.Getenv(key)
}
func VarIsEmpty(a ...interface{}) bool {
func StrIsEmpty(a ...string) bool {
for _, v := range a {
switch v := v.(type) {
case string:
if "" == v {
return true
}
case []byte:
if 0 == len(v) {
return true
}
case []string:
if 0 == len(v) {
return true
}
if v == "" {
return true
}
}
return false
@@ -69,12 +65,12 @@ func main() {
secretID = GetConfig(SecretID)
secretKey = GetConfig(SecretKey)
bucketURL = GetConfig(BucketURL)
source = GetConfig(Source)
target = GetConfig(Target)
source = GetConfig(SourcePath)
target = GetConfig(TargetPath)
stripPrefix = GetConfig(StripPrefix)
)
if VarIsEmpty(secretID, secretKey, bucketURL, source, target) {
ErrExit(errors.New("input error"))
if StrIsEmpty(secretID, secretKey, bucketURL, source, target) {
ErrExit(errors.New("missing input parameter"))
}
sourceFiles := make([]string, 0, 0)
if err = filepath.WalkDir(source, func(path string, d fs.DirEntry, err error) error {