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 helm-installer 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

The following content is an example of the "tool file".

For more information on the main config, the tool file and the var file of DevStream, see Core Concepts Overview and DevStream Configuration.

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:
    destinationRepo:
      owner: [[ githubUsername ]]
      org: ""
      repo: [[ repoName ]]
      branch: [[ defaultBranch ]]
      repoType: github
    vars:
      ImageRepo: "[[ dockerhubUsername ]]/[[ repoName ]]"
    sourceRepo:
      org: devstream-io
      repo: dtm-scaffolding-golang
      repoType: 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.