Skip to content

Workflow file for this run

# This GitHub Workflow will run on every push to the repository
# and will test the Kargo codebase on a Kind Kubernetes cluster.
name: CI - Kargo on Kind
on:
workflow_dispatch:
push:
branches:
- main
paths-ignore:
- "devcontainer/**"
- ".devcontainer/**"
- ".pulumi/**"
- ".talos/**"
- ".kube/**"
- "docs/**"
- "**.md"
pull_request:
branches:
- main
paths-ignore:
- "devcontainer/**"
- ".devcontainer/**"
- ".pulumi/**"
- ".talos/**"
- ".kube/**"
- "docs/**"
- "**.md"
schedule:
- cron: "0 2 * * *"
jobs:
ci-kargo-kind:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
id: checkout
with:
fetch-depth: 1
- name: Kubernetes KinD Cluster
uses: helm/[email protected]
with:
wait: 30s
cluster_name: kargo
config: hack/kind.yaml
ignore_failed_clean: true
- name: Kubectl Get Pods
id: kubectl-get-pods
env:
KUBECONFIG: .kube/config
ACTIONS_STEP_DEBUG: true
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
sudo kind get kubeconfig --name kargo --internal > .kube/config
kubectl cluster-info --context kind-kargo
kubectl get po --all-namespaces --context kind-kargo
- name: Create Kind Cluster
id: create-kind-kubernetes
env:
KUBECONFIG: .kube/config
ACTIONS_STEP_DEBUG: true
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
source .envrc
kubectl config get-contexts
kubectl cluster-info --context kind-kargo
- id: pulumi-up
name: Deploy Pulumi IaC
env:
KUBECONFIG: .kube/config
ACTIONS_STEP_DEBUG: true
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
source .envrc
pulumi login
pulumi install
pulumi stack select --create dev
pulumi config set kubernetes kind
pulumi up --refresh --skip-preview
- id: pulumi-destroy
name: Wait for Kind Kubernetes API to be Ready
env:
KUBECONFIG: .kube/config
ACTIONS_STEP_DEBUG: false
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
source .envrc
pulumi down --skip-preview --refresh \
|| PULUMI_K8S_DELETE_UNREACHABLE=true pulumi down --skip-preview --refresh
# - name: Cleanup
# id: clean-all
# if: always()
# run: |
# make clean-all
# env:
# KUBECONFIG: /tmp/kubeconfig
# ACTIONS_STEP_DEBUG: false
# PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}