Skip to content

Commit

Permalink
ci: add new dist publisher
Browse files Browse the repository at this point in the history
  • Loading branch information
mozillazg committed May 17, 2023
1 parent e346d64 commit 926c138
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Expand Up @@ -31,7 +31,7 @@ jobs:
# either 'goreleaser' (default) or 'goreleaser-pro'
distribution: goreleaser
version: latest
args: release --rm-dist
args: release
env:
GOPATH: ${{ env.HOME }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
19 changes: 18 additions & 1 deletion .github/workflows/test.yml
Expand Up @@ -30,6 +30,8 @@ jobs:

releaser-test:
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
steps:
- uses: actions/checkout@v3

Expand All @@ -46,10 +48,25 @@ jobs:
# either 'goreleaser' (default) or 'goreleaser-pro'
distribution: goreleaser
version: latest
args: release --snapshot --rm-dist --skip-publish
args: release --snapshot --skip-publish
env:
GOPATH: ${{ env.HOME }}

- uses: 'mozillazg/alibabacloud-oidc-auth@v1'
with:
role-arn-to-assume: '${{ secrets.ALIBABA_CLOUD_RAM_ROLE_ARN }}'
oidc-provider-arn: '${{ secrets.ALIBABA_CLOUD_RAM_OIDC_ARN }}'
export-environment-variables: 'true'
- run: |
set -e
cd ci/ossutil && go build && \
chmod +x ossutil && cp ossutil ../../cputil && cd ../../
./cputil --endpoint=oss-cn-hangzhou.aliyuncs.com \
--bucket '${{ secrets.OSS_BUCKET_NAME }}' \
--objectdir '${{ secrets.OSS_OBJECT_DIR }}/${{ github.ref_name }}' \
dist/ack-ram-tool*.tar.gz
build:
runs-on: ubuntu-latest
steps:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -21,3 +21,5 @@ kubeconfig
/examples/rrsa/go-sdk/go-sdk
/bin/
/examples/rrsa/kaniko-in-ack/deploy.yaml
ossutil
cputil
112 changes: 112 additions & 0 deletions ci/ossutil/main.go
@@ -0,0 +1,112 @@
package main

import (
"flag"
"fmt"
"log"
"path"
"time"

"github.com/alibabacloud-go/tea/tea"
"github.com/aliyun/aliyun-oss-go-sdk/oss"

Check failure on line 11 in ci/ossutil/main.go

View workflow job for this annotation

GitHub Actions / build

cannot find package "." in:
"github.com/aliyun/credentials-go/credentials"
)

type ossCredentials struct {
teaCred credentials.Credential
}

func (cred *ossCredentials) GetAccessKeyID() string {
value, err := cred.teaCred.GetAccessKeyId()
if err != nil {
log.Printf("get access key id failed: %+v", err)
return ""
}
return tea.StringValue(value)
}

func (cred *ossCredentials) GetAccessKeySecret() string {
value, err := cred.teaCred.GetAccessKeySecret()
if err != nil {
log.Printf("get access key secret failed: %+v", err)
return ""
}
return tea.StringValue(value)
}

func (cred *ossCredentials) GetSecurityToken() string {
value, err := cred.teaCred.GetSecurityToken()
if err != nil {
log.Printf("get access security token failed: %+v", err)
return ""
}
return tea.StringValue(value)
}

type ossCredentialsProvider struct {
cred credentials.Credential
}

func (p *ossCredentialsProvider) GetCredentials() oss.Credentials {
return &ossCredentials{teaCred: p.cred}
}

func NewClient(endpoint string) (*oss.Client, error) {
cred, err := credentials.NewCredential(nil)
if err != nil {
return nil, err
}
provider := &ossCredentialsProvider{cred: cred}
client, err := oss.New(endpoint, "", "", oss.SetCredentialsProvider(provider))
return client, err
}

func UploadFile(bucket *oss.Bucket, baseObjectDir, filePath string) (string, error) {
objectPath := fmt.Sprintf("%s/%s", baseObjectDir, path.Base(filePath))

var err error
maxN := 5
for i := 0; i < maxN; i++ {
err = bucket.PutObjectFromFile(objectPath, filePath)
if err == nil {
return objectPath, nil
}
log.Printf("%d/%d upload file failed: %s", i+1, maxN, err)
if i < maxN {
time.Sleep(time.Second * 3 * time.Duration(i+1))
}
}
if err != nil {
return "", err
}
return objectPath, nil
}

func main() {
endpoint := flag.String("endpoint", "", "")
bucketName := flag.String("bucket", "", "")
objectDir := flag.String("objectdir", "", "")
flag.Parse()

filepathList := flag.Args()
if *endpoint == "" || *bucketName == "" || *objectDir == "" || len(filepathList) == 0 {
log.Fatalln("missing required arguments")
}

client, err := NewClient(*endpoint)
if err != nil {
log.Fatalf("init client failed: %s", err)
}
bucket, err := client.Bucket(*bucketName)
if err != nil {
log.Fatalf("init bucket client failed: %s", err)
}

for _, ph := range filepathList {
_, err = UploadFile(bucket, *objectDir, ph)
if err != nil {
log.Fatalf("upload %s failed: %s", ph, err)
}
log.Printf("uploaded %s to oss", ph)
}
}

0 comments on commit 926c138

Please sign in to comment.