1

I'm looking into customizing workflow names. I see that argo submit --generate-name can override the .metadata.generateName property, but does anyone know if this is possible with a Sensor that triggers a Workflow?

I'm using a GitHub event to trigger these workflows, but it would be nice to pull the repository name out of the event and set it as the generateName on the Workflow.

Here's an example of what I was hoping would work, but doesn't seem to as far as I can tell. Maybe I've got the syntax wrong? Does anyone know if something like this is possible?

(Note, I've removed a large part of this sensor so that just the important parts are shown. Basically, I want to parse a GitHub event payload for the repository name. Set it on the workflow arguments. Then use those to override the workflow's generateName property.)

apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: github-sensor
spec:
  dependencies:
    - name: github-webhook-sensor
      eventSourceName: github-events
      eventName: github

  triggers:
    - template:
        name: github
        k8s:
          group: argoproj.io
          version: v1alpha1
          resource: workflows
          operation: create
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: {{ workflow.parameters.name }}
              spec:
                arguments:
                  parameters:
                  - name: "git-repository-name"


          parameters:
          # Parameter: git-repository-name
          - src:
              dependencyName: github-webhook-sensor
              dataKey: body.repository.name
            dest: spec.arguments.parameters.0.value
wsams
  • 2,499
  • 7
  • 40
  • 51

1 Answers1

1

I think you can do this to prepend the generated name with the repo name (and a hypen):

          ...
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: "-"
              spec:
                arguments:
                  parameters:
                  - name: "git-repository-name"


          parameters:
          - src:
              dependencyName: github-webhook-sensor
              dataKey: body.repository.name
            dest: metadata.generateName
            operation: prepend
          # Parameter: git-repository-name
          - src:
              dependencyName: github-webhook-sensor
              dataKey: body.repository.name
            dest: spec.arguments.parameters.0.value

You can also use name instead of generateName, but I'm not sure how that will behave if multiple triggers come.

filiprafaj
  • 105
  • 2
  • 8