Support logging in directly to the provider when pushing OCI artifacts
I've noticed during CI, that the current command already expected a configured Docker client to push artifacts to authenticated registries. Some users might not want to have the Docker client in their process (like a CI job) or build an handcrafted config.json file. This would allow this kind of behavior: ``` flux push artifact oci://my-registry.dev/foo:v1 \ --source xxx \ --revision xxx \ --path . \ --creds $TOKEN # Authenticate via "Bearer $TOKEN" Authorization header ``` Or via Autologin: ``` flux push artifact oci://012345678901.dkr.ecr.us-east-1.amazonaws.com/foo:v1 \ --source xxx \ --revision xxx \ --path . \ --provider aws ``` This has been implemented for: * flux push artifact * flux list artifact * flux tag artifact * flux pull artifact This will require another PR in https://github.com/fluxcd/pkg/pull/352 Signed-off-by: Adrien Fillon <adrien.fillon@manomano.com>
This commit is contained in:
@@ -21,6 +21,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/fluxcd/flux2/internal/utils"
|
||||
"github.com/fluxcd/pkg/oci"
|
||||
sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
|
||||
)
|
||||
|
||||
@@ -31,6 +32,13 @@ var supportedSourceOCIProviders = []string{
|
||||
sourcev1.GoogleOCIProvider,
|
||||
}
|
||||
|
||||
var sourceOCIProvidersToOCIProvider = map[string]oci.Provider{
|
||||
sourcev1.GenericOCIProvider: oci.ProviderGeneric,
|
||||
sourcev1.AmazonOCIProvider: oci.ProviderAWS,
|
||||
sourcev1.AzureOCIProvider: oci.ProviderAzure,
|
||||
sourcev1.GoogleOCIProvider: oci.ProviderGCP,
|
||||
}
|
||||
|
||||
type SourceOCIProvider string
|
||||
|
||||
func (p *SourceOCIProvider) String() string {
|
||||
@@ -60,3 +68,12 @@ func (p *SourceOCIProvider) Description() string {
|
||||
strings.Join(supportedSourceOCIProviders, ", "),
|
||||
)
|
||||
}
|
||||
|
||||
func (p *SourceOCIProvider) ToOCIProvider() (oci.Provider, error) {
|
||||
value, ok := sourceOCIProvidersToOCIProvider[p.String()]
|
||||
if !ok {
|
||||
return 0, fmt.Errorf("no mapping between source OCI provider %s and OCI provider", p.String())
|
||||
}
|
||||
|
||||
return value, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user