aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/k8s.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/k8s.yml')
-rw-r--r--.github/workflows/k8s.yml90
1 files changed, 90 insertions, 0 deletions
diff --git a/.github/workflows/k8s.yml b/.github/workflows/k8s.yml
new file mode 100644
index 00000000..fc5e8c90
--- /dev/null
+++ b/.github/workflows/k8s.yml
@@ -0,0 +1,90 @@
+name: k8s
+
+on:
+ push:
+ branches: ["main"]
+ paths:
+ - 'helm/**' # only execute if we have helm chart changes
+ pull_request:
+ branches: ["main"]
+ paths:
+ - 'helm/**'
+
+jobs:
+ lint:
+ name: Lint Helm chart
+ runs-on: ubuntu-latest
+ outputs:
+ changed: ${{ steps.list-changed.outputs.changed }}
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - uses: azure/setup-helm@v3
+ with:
+ version: v3.10.0
+ - uses: actions/setup-python@v4
+ with:
+ python-version: 3.11
+ check-latest: true
+ - uses: helm/chart-testing-action@v2.3.1
+ - name: Get changed status
+ id: list-changed
+ run: |
+ changed=$(ct list-changed --config helm/ct.yaml --target-branch ${{ github.event.repository.default_branch }})
+ if [[ -n "$changed" ]]; then
+ echo "::set-output name=changed::true"
+ fi
+
+ - name: Run lint
+ run: ct lint --config helm/ct.yaml
+
+ # only bother to run if lint step reports a change to the helm chart
+ install:
+ needs:
+ - lint
+ if: ${{ needs.lint.outputs.changed == 'true' }}
+ name: Install Helm charts
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ ref: ${{ inputs.checkoutCommit }}
+ - name: Install Kubernetes tools
+ uses: yokawasa/action-setup-kube-tools@v0.8.2
+ with:
+ setup-tools: |
+ helmv3
+ helm: "3.10.3"
+ - uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+ - name: Set up chart-testing
+ uses: helm/chart-testing-action@v2.3.1
+ - name: Create k3d cluster
+ uses: nolar/setup-k3d-k3s@v1
+ with:
+ version: v1.21
+ - name: Remove node taints
+ run: |
+ kubectl taint --all=true nodes node.cloudprovider.kubernetes.io/uninitialized- || true
+ - name: Run chart-testing (install)
+ run: ct install --config helm/ct.yaml
+
+ # Install the chart using helm directly and test with create-account
+ - name: Install chart
+ run: |
+ helm install --values helm/dendrite/ci/ct-postgres-sharedsecret-values.yaml dendrite helm/dendrite
+ - name: Wait for Postgres and Dendrite to be up
+ run: |
+ kubectl wait --for=condition=ready --timeout=90s pod -l app.kubernetes.io/name=postgresql || kubectl get pods -A
+ kubectl wait --for=condition=ready --timeout=90s pod -l app.kubernetes.io/name=dendrite || kubectl get pods -A
+ kubectl get pods -A
+ kubectl get services
+ kubectl get ingress
+ - name: Run create account
+ run: |
+ podName=$(kubectl get pods -l app.kubernetes.io/name=dendrite -o name)
+ kubectl exec "${podName}" -- /usr/bin/create-account -username alice -password somerandompassword \ No newline at end of file