First commit
This commit is contained in:
commit
0caa1b4f62
|
@ -0,0 +1,5 @@
|
|||
.git
|
||||
.github
|
||||
LICENSE
|
||||
README.md
|
||||
action.yml
|
|
@ -0,0 +1,4 @@
|
|||
.idea
|
||||
.vscode
|
||||
.DS_Store
|
||||
*.log
|
|
@ -0,0 +1,11 @@
|
|||
FROM python:3.7-slim
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
RUN pip install --upgrade --no-cache-dir coscmd
|
||||
|
||||
COPY "entrypoint.sh" "/entrypoint.sh"
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2020 zkqiang
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,62 @@
|
|||
## 简介
|
||||
|
||||
该 [GitHub Action](https://help.github.com/cn/actions) 用于调用腾讯云
|
||||
[coscmd](https://cloud.tencent.com/document/product/436/10976)
|
||||
工具,实现对象存储的批量上传、下载、删除等操作。
|
||||
|
||||
## workflow 示例
|
||||
|
||||
在目标仓库中创建 `.github/workflows/xxx.yml` 即可,文件名任意,配置参考如下:
|
||||
|
||||
```yaml
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout master
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: master
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: "10.x"
|
||||
|
||||
- name: Build project
|
||||
run: yarn && yarn build
|
||||
|
||||
- name: Upload COS
|
||||
uses: zkqiang/tencent-cos-action@master
|
||||
with:
|
||||
args: delete -r -f / && upload -r ./dist/ /
|
||||
secret_id: ${{ secrets.SECRET_ID }}
|
||||
secret_key: ${{ secrets.SECRET_KEY }}
|
||||
bucket: ${{ secrets.BUCKET }}
|
||||
region: ap-shanghai
|
||||
```
|
||||
|
||||
其中 `${{ secrets.SECRET_XXX }}` 是调用 settings 配置的密钥,防止公开代码将权限密钥暴露,添加方式如下:
|
||||
|
||||
![](https://static.zkqiang.cn/images/20200118171056.png-slim)
|
||||
|
||||
## 相关参数
|
||||
|
||||
以下参数均可参见
|
||||
[coscmd 官方文档](https://cloud.tencent.com/document/product/436/10976)
|
||||
|
||||
| 参数 | 是否必传 | 备注 |
|
||||
| --- | --- | --- |
|
||||
| args | 是 | coscmd 命令参数,参见官方文档,多个命令用 ` && ` 隔开<br>如 `delete -r -f / && upload -r ./dist/ /` |
|
||||
| secret_id | 是 | 从 [控制台-API密钥管理](https://console.cloud.tencent.com/cam/capi) 获取 |
|
||||
| secret_key | 是 | 同上 |
|
||||
| bucket | 是 | 对象存储桶的名称,包含后边的数字 |
|
||||
| region | 是 | 对象存储桶的地区,[参见文档](https://cloud.tencent.com/document/product/436/6224) |
|
|
@ -0,0 +1,25 @@
|
|||
name: 'Tencent COS Action'
|
||||
description: 'GitHub Action for Tencent COS Command (coscmd)'
|
||||
author: 'zkqiang <zkqiang@126.com>'
|
||||
branding:
|
||||
icon: 'cloud'
|
||||
color: 'blue'
|
||||
inputs:
|
||||
args:
|
||||
description: 'COSCMD args, detail: https://cloud.tencent.com/document/product/436/10976'
|
||||
required: true
|
||||
secret_id:
|
||||
description: 'Tencent cloud SecretId, from: https://console.cloud.tencent.com/cam/capi'
|
||||
required: true
|
||||
secret_key:
|
||||
description: 'Tencent cloud SecretKey, from: https://console.cloud.tencent.com/cam/capi'
|
||||
required: true
|
||||
bucket:
|
||||
description: 'COS bucket name'
|
||||
required: true
|
||||
region:
|
||||
description: 'COS bucket region, detail: https://cloud.tencent.com/document/product/436/6224'
|
||||
required: true
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$INPUT_ARGS" ]; then
|
||||
echo '::error::Required Args parameter'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$INPUT_SECRET_ID" ]; then
|
||||
echo '::error::Required SecretId parameter'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$INPUT_SECRET_KEY" ]; then
|
||||
echo '::error::Required SecretKey parameter'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$INPUT_BUCKET" ]; then
|
||||
echo '::error::Required Bucket parameter'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$INPUT_REGION" ]; then
|
||||
echo '::error::Required Region parameter'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
coscmd config -a $INPUT_SECRET_ID -s $INPUT_SECRET_KEY -b $INPUT_BUCKET -r $INPUT_REGION -m 30
|
||||
|
||||
IFS="&&"
|
||||
arrARGS=($INPUT_ARGS)
|
||||
|
||||
for each in ${arrARGS[@]}
|
||||
do
|
||||
unset IFS
|
||||
each=$(echo ${each} | xargs)
|
||||
if [ -n "$each" ]; then
|
||||
echo "Running command: coscmd ${each}"
|
||||
coscmd $each
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Commands ran successfully"
|
Loading…
Reference in New Issue