Skip to content

argocdapp Plugin

This plugin creates an ArgoCD Application custom resource.

Notes:

  • ArgoCD itself must have been already installed before the usage of this plugin. To install ArgoCD, use the argocd plugin. Or you can use both plugins(argocd+argocdapp) at the same time. See GitOps Toolchain for more info.
  • Currently, only the Helm chart is supported when creating the ArgoCD application.
  • Modify the file accordingly. Especially remember to modify ARGOCD_TOOL_NAME.

Usage

YAML
tools:
  # name of the tool
  - name: argocdapp
    # id of the tool instance
    instanceID: default
    # format: name.instanceID; If specified, dtm will make sure the dependency is applied first before handling this tool.
    dependsOn: [ "argocd.ARGOCD_INSTANCE_NAME" ]
    # options for the plugin
    options:
      # information on the ArgoCD Application
      app:
        # name of the ArgoCD Application
        name: hello
        # where the ArgoCD Application custom resource will be created
        namespace: argocd
      # destination of the ArgoCD Application
      destination:
        # on which server to deploy
        server: https://kubernetes.default.svc
        # in which namespace to deploy
        namespace: default
      # source of the application
      source:
        # which values file to use in the Helm chart
        valuefile: values.yaml
        # path of the Helm chart
        path: charts/go-hello-http
        # Helm chart repo URL, this is only an example, do not use this
        repoURL: YOUR_CHART_REPO_URL

Use Together with the repo-scaffolding Plugin

This plugin can be used together with the repo-scaffolding plugin (see document here.)

For example, you can first use repo-scaffolding to bootstrap a Golang repo, then use this plugin to set up basic GitHub Actions CI workflows. In this scenario:

  • This plugin can specify repo-scaffolding as a dependency, so that the dependency is first satisfied before executing this plugin.
  • This plugin can refer to repo-scaffolding's output to reduce copy/paste human error.

See the example below:

YAML
---
tools:
- name: repo-scaffolding
  instanceID: golang-github
  options:
    destination_repo:
      owner: [[ githubUsername ]]
      org: ""
      repo: [[ repoName ]]
      branch: [[ defaultBranch ]]
      repo_type: github
    vars:
      ImageRepo: "[[ dockerhubUsername ]]/[[ repoName ]]"
    source_repo:
      org: devstream-io
      repo: dtm-scaffolding-golang
      repo_type: github
- name: go-webapp-argocd-deploy
  plugin: argocdapp
  dependsOn: ["repo-scaffolding.golang-github"]
  options:
    app:
      name: hello
      namespace: argocd
    destination:
      server: https://kubernetes.default.svc
      namespace: default
    source:
      valuefile: values.yaml
      path: charts/go-hello-http
      repoURL: ${{repo-scaffolding.golang-github.outputs.repoURL}}

In the example above:

  • We put repo-scaffolding.golang-github as dependency by using the dependsOn keyword.
  • We used repo-scaffolding.golang-github's output as input for the githubactions-golang plugin.

Pay attention to the ${{ xxx }} part in the example. ${{ TOOL_NAME.PLUGIN.outputs.var}} is the syntax for using an output.