Skip to main content

GitHub Action: deploy-argocd

Deploy on Kubernetes with ArgoCD

Introduction

Deploy on Kubernetes with Helm/HelmFile and ArgoCD.

Usage

Deploy environment

  name: Pull Request
on:
pull_request:
branches: [ 'main' ]
types: [opened, synchronize, reopened]

jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: preview
url: ${{ steps.deploy.outputs.webapp-url }}
steps:

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-[email protected]
with:
aws-region: us-west-2
role-to-assume: arn:aws:iam::111111111111:role/preview
role-session-name: deploy

- name: Deploy
uses: cloudposse/github-action-deploy-argocd@main
id: deploy
with:
cluster: https://github.com/cloudposse/argocd-deploy-non-prod-test/blob/main/plat/ue2-sandbox/apps
toolchain: helmfile
environment: preview
namespace: preview
application: test-app
github-pat: ${{ secrets.GITHUB_AUTH_PAT }}
repository: ${{ github.repository }}
ref: ${{ github.event.pull_request.head.ref }}
image: nginx
image-tag: latest
operation: deploy
debug: false
synchronously: true

Destroy environment

  name: Pull Request
on:
pull_request:
branches: [ 'main' ]
types: [closed]

jobs:
destroy:
runs-on: ubuntu-latest
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-[email protected]
with:
aws-region: us-west-2
role-to-assume: arn:aws:iam::111111111111:role/preview
role-session-name: destroy

- name: Destroy
uses: cloudposse/github-action-deploy-helmfile@main
id: destroy
with:
cluster: https://github.com/cloudposse/argocd-deploy-non-prod-test/blob/main/plat/ue2-sandbox/apps
toolchain: helmfile
environment: preview
namespace: preview
application: test-app
github-pat: ${{ secrets.GITHUB_AUTH_PAT }}
repository: ${{ github.repository }}
ref: ${{ github.event.pull_request.head.ref }}
image: "<none>"
image-tag: "<none>"
operation: destroy
debug: false

Inputs

NameDescriptionDefaultRequired
applicationApplication nameN/Atrue
aws-regionAWS regionus-east-1false
check-retry-countCheck retry count (for synchronously mode)5false
check-retry-intervalCheck retry interval (in seconds) (for synchronously mode)10false
clusterCluster nameN/Atrue
debugDebug modefalsefalse
environmentHelmfile environmentpreviewfalse
github-patGithub PAT to access argocd configuration repositoryN/Atrue
gitref-shaGit SHA (Depricated. Use ref instead)false
imageDocker imageN/Atrue
image-tagDocker image tagN/Atrue
namespaceKubernetes namespaceN/Atrue
operationOperation with helmfiles. (valid options - deploy, destroy)deploytrue
pathThe path where lives the helmfile or helm chart.N/Atrue
refGit refN/Atrue
release_label_nameThe name of the label used to describe the helm releasereleasefalse
repositoryApplication GitHub repository full nameN/Atrue
ssm-pathSSM path to read environment secretsN/Atrue
synchronouslyWait until ArgoCD successfully apply the changesfalsefalse
toolchainToolchain ('helm', 'helmfile')helmfilefalse
values_fileHelmfile values filefalse

Outputs

NameDescription
shaGit commit SHA into argocd repo
webapp-urlWeb Application url