🚀. Socket Launch Week Day 2:Introducing Manifest Alerts.Learn more
Sign In

@muvaf/create-argocd-application

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@muvaf/create-argocd-application

A custom Backstage scaffolder action to create ArgoCD `Application` custom resource in the cluster Backstage is running.

latest
Source
npmnpm
Version
0.4.1
Version published
Weekly downloads
28
460%
Maintainers
1
Weekly downloads
 
Created
Source

Create ArgoCD Application in Backstage

This custom scaffolder action allows you to create ArgoCD Application as part of your software template.

I wrote this for a KubeCon talk without knowing much TypeScript. Be careful if you decide to use it.

Getting Started

Add to your Backstage app.

# From your Backstage root directory
yarn add --cwd packages/backend @muvaf/create-argocd-application
# To be able to keep using the built-in actions.
yarn add --cwd packages/backend @backstage/integration

IMPORTANT NOTE: This custom action uses POD_NAMESPACE environment variable to determine the namespace of the ArgoCD Application resource. Make sure you set it when you deploy your Backstage app. An example addition to your container could be like the following:

env:
  - name: POD_NAMESPACE
    valueFrom:
      fieldRef:
        fieldPath: metadata.namespace

Append it to your existing actions in packages/backend/src/plugins/scaffolder.ts

import { CatalogClient } from '@backstage/catalog-client';
import { createRouter, createBuiltinActions } from '@backstage/plugin-scaffolder-backend';
import { ScmIntegrations } from '@backstage/integration';
import { Router } from 'express';
import type { PluginEnvironment } from '../types';
import { argocdCreateHelmApplication, githubWaitLastWorkflow } from "@muvaf/create-argocd-application";

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  const catalogClient = new CatalogClient({ discoveryApi: env.discovery });
  const integrations = ScmIntegrations.fromConfig(env.config);

  const builtInActions = createBuiltinActions({
    integrations,
    catalogClient,
    config: env.config,
    reader: env.reader,
  });

  const actions = [
      ...builtInActions,
      argocdCreateHelmApplication(),
      githubWaitLastWorkflow({ integrations })
  ]

  return await createRouter({
    actions,
    catalogClient,
    logger: env.logger,
    config: env.config,
    database: env.database,
    reader: env.reader,
    identity: env.identity,
  });
}

Done! You can now use the action in your software templates.

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: chart-with-argocd
  title: Chart with ArgoCD
spec:
  steps:
    - id: argocd-create
      name: Create ArgoCD Application
      action: argocd:create-helm-application
      input:
        name: ${{ parameters.serviceName }}
        chart:
          name: ${{ (parameters.repoUrl | parseRepoUrl).repo }}
          repo: ghcr.io/${{ (parameters.repoUrl | parseRepoUrl).owner }}
          version: 9.9.9

Keywords

backstage

FAQs

Package last updated on 25 Oct 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts