Skip to content

Commit

Permalink
fix: PaC build
Browse files Browse the repository at this point in the history
* Fixed detection of PaC controller URL for unprivileged users.
* Use fn.Deploy.Image before fn.Image since the fn.Image may not be
  populated.

Signed-off-by: Matej Vašek <matejvasek@gmail.com>
  • Loading branch information
matejvasek committed Jun 6, 2024
1 parent ef2edc5 commit 68dd754
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
20 changes: 12 additions & 8 deletions pkg/pipelines/tekton/pac/pac.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,15 @@ const (
routePacLabel = "pipelines-as-code/route=controller"
)

// Namespaces where PaC is commonly installed.
var usualSuspects = []string{"pipelines-as-code", "openshift-pipelines"}

// DetectPACInstallation checks whether PAC is installed on the cluster
// Taken and slightly modified from https://github.com/openshift-pipelines/pipelines-as-code/blob/6a7f043f9bb51d04ab729505b26446695595df1f/pkg/cmd/tknpac/bootstrap/bootstrap.go
func DetectPACInstallation(ctx context.Context, wantedNamespace string) (bool, string, error) {
func DetectPACInstallation(ctx context.Context) (bool, string, error) {
var installed bool

clientPac, _, err := NewTektonPacClientAndResolvedNamespace("")
clientPac, cns, err := NewTektonPacClientAndResolvedNamespace("")
if err != nil {
return false, "", err
}
Expand All @@ -36,20 +39,21 @@ func DetectPACInstallation(ctx context.Context, wantedNamespace string) (bool, s
return false, "", err
}

_, err = clientPac.Repositories("").List(ctx, metav1.ListOptions{})
_, err = clientPac.Repositories(cns).List(ctx, metav1.ListOptions{})
if err != nil && k8serrors.IsNotFound(err) {
return false, "", nil
}

installed = true
if wantedNamespace != "" {
_, err := clientK8s.CoreV1().ConfigMaps(wantedNamespace).Get(ctx, infoConfigMap, metav1.GetOptions{})
if err == nil {
return installed, wantedNamespace, nil

for _, suspectedNS := range usualSuspects {
_, e := clientK8s.CoreV1().ConfigMaps(suspectedNS).Get(ctx, infoConfigMap, metav1.GetOptions{})
if e == nil {
return installed, suspectedNS, nil
}
return installed, "", fmt.Errorf("could not detect Pipelines as Code configmap in %s namespace : %w, please reinstall", wantedNamespace, err)
}

// Search all namespaces if the usual suspects do not contain the desired configmap.
cms, err := clientK8s.CoreV1().ConfigMaps("").List(ctx, metav1.ListOptions{
LabelSelector: configMapPacLabel,
})
Expand Down
13 changes: 9 additions & 4 deletions pkg/pipelines/tekton/pipelines_pac_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func (pp *PipelinesProvider) createClusterPACResources(ctx context.Context, f fn
}

// figure out pac installation namespace
installed, _, err := pac.DetectPACInstallation(ctx, "")
installed, _, err := pac.DetectPACInstallation(ctx)
if !installed {
errMsg := ""
if err != nil {
Expand All @@ -168,7 +168,12 @@ func (pp *PipelinesProvider) createClusterPACResources(ctx context.Context, f fn
labels = pp.decorator.UpdateLabels(f, labels)
}

registry, err := docker.GetRegistry(f.Image)
img := f.Deploy.Image
if img == "" {
img = f.Image
}

registry, err := docker.GetRegistry(img)
if err != nil {
return fmt.Errorf("problem in resolving image registry name: %w", err)
}
Expand All @@ -177,7 +182,7 @@ func (pp *PipelinesProvider) createClusterPACResources(ctx context.Context, f fn
registry = authn.DefaultAuthKey
}

creds, err := pp.credentialsProvider(ctx, f.Image)
creds, err := pp.credentialsProvider(ctx, img)
if err != nil {
return err
}
Expand Down Expand Up @@ -213,7 +218,7 @@ func (pp *PipelinesProvider) createClusterPACResources(ctx context.Context, f fn
func (pp *PipelinesProvider) createRemotePACResources(ctx context.Context, f fn.Function, metadata pipelines.PacMetadata) error {

// figure out pac installation namespace
installed, installationNS, err := pac.DetectPACInstallation(ctx, "")
installed, installationNS, err := pac.DetectPACInstallation(ctx)
if !installed {
errMsg := ""
if err != nil {
Expand Down

0 comments on commit 68dd754

Please sign in to comment.