Skip to content

Commit

Permalink
feat: Support publishing to a private docker registry (#15698)
Browse files Browse the repository at this point in the history

#### Summary

Example (images generated with cloudquery/plugin-sdk-javascript#106)
![image](https://github.com/cloudquery/cloudquery/assets/26760571/e51f90a2-2af3-4d09-8039-92343eebe16a)

The images were generated by cloudquery/plugin-sdk-javascript#106 (replacing `registry.cloudquery.io` with `ghcr.io`)

### TODO

- [ ] Merge the different platforms into a single image with `docker manifest`. The is done by `docker buildx --push` automatically at the moment in https://github.com/cloudquery/cloudquery/blob/67c10c38a04dcdd1512bf6dc739f89bc11baa888/.github/workflows/release_plugin.yml#L94

<!--
  • Loading branch information
erezrokah committed Dec 29, 2023
1 parent f51f12d commit 36e0351
Show file tree
Hide file tree
Showing 4 changed files with 515 additions and 18 deletions.
19 changes: 11 additions & 8 deletions cli/cmd/plugin_publish.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"os"
"os/signal"
"path"
"path/filepath"
"strings"
"syscall"
Expand Down Expand Up @@ -83,6 +82,7 @@ func runPluginPublish(ctx context.Context, cmd *cobra.Command, args []string) er
return errors.New("invalid plugin name. Must be in format <team_name>/<plugin_name>")
}
teamName, pluginName = parts[0], parts[1]
pkgJSON.Team, pkgJSON.Name = teamName, pluginName
}

name := fmt.Sprintf("%s/%s@%s", teamName, pluginName, pkgJSON.Version)
Expand Down Expand Up @@ -121,13 +121,8 @@ func runPluginPublish(ctx context.Context, cmd *cobra.Command, args []string) er
}

// upload binaries
fmt.Println("Uploading binaries...")
for _, t := range pkgJSON.SupportedTargets {
fmt.Printf("- Uploading %s_%s...\n", t.OS, t.Arch)
err = publish.UploadPluginBinary(ctx, c, teamName, pluginName, t.OS, t.Arch, path.Join(distDir, t.Path), pkgJSON)
if err != nil {
return fmt.Errorf("failed to upload binary: %w", err)
}
if err := publishPluginAssets(ctx, c, token.String(), distDir, pkgJSON); err != nil {
return fmt.Errorf("failed to upload binaries: %w", err)
}

// optional: mark plugin as draft=false
Expand Down Expand Up @@ -158,3 +153,11 @@ func runPluginPublish(ctx context.Context, cmd *cobra.Command, args []string) er

return nil
}

func publishPluginAssets(ctx context.Context, c *cloudquery_api.ClientWithResponses, token, distDir string, pkgJSON publish.PackageJSONV1) error {
if pkgJSON.PackageType == string(cloudquery_api.PluginVersionPackageTypeDocker) {
return publish.PublishToDockerRegistry(ctx, token, distDir, pkgJSON)
}

return publish.PublishNativeBinaries(ctx, c, distDir, pkgJSON)
}
17 changes: 13 additions & 4 deletions cli/go.mod
Expand Up @@ -9,10 +9,14 @@ require (
github.com/cloudquery/cloudquery-api-go v1.6.3
github.com/cloudquery/plugin-pb-go v1.15.0
github.com/cloudquery/plugin-sdk/v4 v4.23.0
github.com/distribution/reference v0.5.0
github.com/docker/distribution v2.8.3+incompatible
github.com/docker/docker v24.0.7+incompatible
github.com/getsentry/sentry-go v0.24.1
github.com/ghodss/yaml v1.0.0
github.com/google/go-cmp v0.6.0
github.com/google/uuid v1.5.0
github.com/opencontainers/go-digest v1.0.0
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
github.com/rs/zerolog v1.31.0
github.com/schollz/progressbar/v3 v3.13.1
Expand All @@ -38,17 +42,17 @@ require (
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
github.com/avast/retry-go/v4 v4.5.1 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bytedance/sonic v1.10.2 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
github.com/chenzhuoyu/iasm v0.9.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deepmap/oapi-codegen v1.16.2 // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker v24.0.7+incompatible // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-metrics v0.0.1 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
github.com/fatih/structs v1.1.0 // indirect
github.com/flosch/pongo2/v4 v4.0.2 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
Expand All @@ -64,6 +68,7 @@ require (
github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd // indirect
github.com/google/flatbuffers v23.5.26+incompatible // indirect
github.com/gorilla/css v1.0.1 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/iris-contrib/schema v0.0.6 // indirect
github.com/josharian/intern v1.0.0 // indirect
Expand All @@ -84,16 +89,20 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/microcosm-cc/bluemonday v1.0.26 // indirect
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
github.com/pierrec/lz4/v4 v4.1.19 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_golang v1.1.0 // indirect
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 // indirect
github.com/prometheus/common v0.6.0 // indirect
github.com/prometheus/procfs v0.0.3 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/schollz/closestmatch v2.1.0+incompatible // indirect
Expand Down

0 comments on commit 36e0351

Please sign in to comment.