@@ -3,46 +3,58 @@ package pipeline
33import (
44 "context"
55 "fmt"
6+ "path/filepath"
7+ "strings"
68
79 "dagger/harbor-cli/internal/dagger"
810)
911
10- func (s * Pipeline ) PublishRelease (ctx context.Context , dist * dagger.Directory ) (string , error ) {
11- bins , err := DistBinaries (ctx , dist )
12+ func (s * Pipeline ) PublishRelease (ctx context.Context , dist * dagger.Directory , token * dagger. Secret ) (string , error ) {
13+ bins , err := DistBinaries (ctx , s . dag , dist )
1214 if err != nil {
1315 return "" , err
1416 }
1517
16- cmd := []string {
17- "gh" , "release" , "upload" , s .appVersion ,
18- }
18+ cmd := []string {"gh" , "release" , "create" , s .appVersion , "--title" , fmt .Sprintf ("'Release %s'" , s .appVersion )}
1919 cmd = append (cmd , bins ... )
20- cmd = append (cmd , "--clobber" )
2120
22- return s .dag .Container ().
23- From ("ghcr.io/cli/cli:latest" ).
21+ ctr := s .dag .Container ().
22+ From ("debian:bookworm-slim" ).
23+ WithMountedDirectory ("/src" , s .source ).
2424 WithMountedDirectory ("/dist" , dist ).
25- WithSecretVariable ("GH_TOKEN" , s .GithubToken ).
26- WithExec ([]string {
27- "gh" , "release" , "create" , s .appVersion , "--title" , fmt .Sprintf ("Release %s" , s .appVersion ),
28- }).
29- WithExec ([]string {"sh" , "-c" , "echo $GITHUB_TOKEN" }).
30- WithExec (cmd ).Stderr (ctx )
25+ WithSecretVariable ("GH_TOKEN" , token ).
26+ WithExec ([]string {"apt-get" , "update" }).
27+ WithExec ([]string {"apt-get" , "install" , "-y" , "curl" , "git" }).
28+ WithExec ([]string {"curl" , "-fsSL" , "https://cli.github.com/packages/githubcli-archive-keyring.gpg" , "-o" , "/usr/share/keyrings/githubcli-archive-keyring.gpg" }).
29+ WithExec ([]string {"sh" , "-c" , `echo "deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list` }).
30+ WithExec ([]string {"apt-get" , "update" }).
31+ WithExec ([]string {"apt-get" , "install" , "-y" , "gh" })
32+
33+ return ctr .
34+ WithWorkdir ("/src" ).
35+ WithExec (cmd ).
36+ Stdout (ctx )
3137}
3238
33- func DistBinaries (ctx context.Context , dist * dagger.Directory ) ([]string , error ) {
39+ func DistBinaries (ctx context.Context , s * dagger. Client , dist * dagger.Directory ) ([]string , error ) {
3440 dirs := []string {"archive" , "linux" , "windows" , "darwin" , "deb" , "rpm" }
3541 var files []string
3642
37- for _ , d := range dirs {
38- subdir := dist .Directory (d )
39- entries , err := subdir .Entries (ctx )
43+ ctr := s .Container ().
44+ From ("alpine:latest" ).
45+ WithMountedDirectory ("/dist" , dist ).
46+ WithWorkdir ("/dist" )
47+
48+ for _ , v := range dirs {
49+ out , err := ctr .WithExec ([]string {"ls" , v }).Stdout (ctx )
4050 if err != nil {
41- // skip missing directories or return error
42- continue
51+ return nil , err
4352 }
4453
45- files = append (files , entries ... )
54+ bins := strings .Split (out , "\n " )
55+ for _ , bin := range bins {
56+ files = append (files , filepath .Join ("/" , "dist" , v , bin ))
57+ }
4658 }
4759
4860 return files , nil
0 commit comments