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 # GlobeKeeper: Skipping this as it not needed for now and it is failing due to env. # 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 # kubectl logs -l app.kubernetes.io/name=dendrite # - 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