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
| Name | Description | Default | Required |
|---|---|---|---|
| application | Application name | N/A | true |
| aws-region | AWS region | us-east-1 | false |
| check-retry-count | Check retry count (for synchronously mode) | 5 | false |
| check-retry-interval | Check retry interval (in seconds) (for synchronously mode) | 10 | false |
| cluster | Cluster name | N/A | true |
| commit-retry-count | Commit retry count | 4 | false |
| commit-retry-interval | Commit retry interval (in seconds) | 10 | false |
| commit-status-github-token | Github token to access the app repository. Defaults to github-pat if not set. | N/A | false |
| commit-timeout | Commit timeout (in seconds) | 60 | false |
| debug | Debug mode | false | false |
| environment | Helmfile environment | preview | false |
| github-pat | Github PAT to access argocd configuration repository | N/A | true |
| gitref-sha | Git SHA (Depricated. Use ref instead) | false | |
| helm-args | Additional helm arguments | false | |
| helm-dependency-build | Run helm dependency build, only for helm toolchain, true or false | false | false |
| helm-version | Helm version | v3.10.2 | false |
| helmfile-args | Additional helmfile arguments | false | |
| helmfile-version | Helmfile version | v0.148.1 | false |
| image | Docker image | N/A | true |
| image-tag | Docker image tag | N/A | true |
| namespace | Kubernetes namespace | N/A | true |
| operation | Operation with helmfiles. (valid options - deploy, destroy) | deploy | true |
| path | The path where lives the helmfile or helm chart. | N/A | true |
| ref | Git ref | N/A | true |
| release_label_name | The name of the label used to describe the helm release | release | false |
| repository | Application GitHub repository full name | N/A | true |
| ssm-path | SSM path to read environment secrets | N/A | true |
| synchronously | Wait until ArgoCD successfully apply the changes | false | false |
| toolchain | Toolchain ('helm', 'helmfile') | helmfile | false |
| values_file | Helm values file, this can be a single file or a comma separated list of files | false |
Outputs
| Name | Description |
|---|---|
| sha | Git commit SHA into argocd repo |
| webapp-url | Web Application url |