Skip to content
This repository was archived by the owner on Jul 15, 2024. It is now read-only.

Matrix generator - Combine SCM and Git Generators, consume parameters from parent #645

@AlissonRS

Description

@AlissonRS

I was looking to have SCM generator discover repos in my organization that have a specific folder "k8s", then combine with Git generator to discover folders and generate one Application for each folder.

Consider two repos as follow:

Repo A
k8s
--- api
--- job-a

Repo B
k8s
--- web
--- api

So it would find both repos as both have the k8s folder, then create 4 applications (one for each subfolder).

So I could create an ApplicationSet as below:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: stakelands-appset
  namespace: argocd
spec:
  goTemplate: true
  goTemplateOptions: ["missingkey=error"]
  generators:
  - merge:
      generators:
        - scmProvider:
            github:
              organization: my-org
            cloneProtocol: ssh
            branchMatch: "\b(main|develop)\b"
            filters:
            - pathsExist: [k8s]
        - git:
            repoURL: '{{ url }}'
            revision: '{{ branch }}'
            directories:
            - path: k8s/*
  template:
    metadata:
      name: '{{.path.basename}}'
    spec:
      project: "default"
      source:
        repoURL: '{{ url }}'
        targetRevision: '{{ branch }}'
        path: '{{.path.path}}'
      destination:
        server: https://kubernetes.default.svc

Notice how in the Git generator I'm trying to use {{ url }} and {{ branch }} found by the SCM generator.

I thought this was implemented in #530 but I'm not sure that's the case, at least this is not working for me, and in the Matrix docs there is an example of combining Git + Cluster generators, but I don't really see the cluster generator referencing parameters from the Git generator, perhaps I misunderstood how it works.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions