aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-01-06 15:44:10 +0100
committerGitHub <noreply@github.com>2023-01-06 15:44:10 +0100
commitd579ddb8e7c1a7e118797bcef08113379535e6fb (patch)
tree383aa921b109c687fcf623a4fd31797e3b7a33b4 /.github
parent2e1fe589375b650f9b2d9a09e1fcffb3ab6fe5b6 (diff)
Add simplified helm chart (#2905)helm-dendrite-0.10.8
As discussed yesterday, a simplified version of [my helm](https://github.com/S7evinK/dendrite-helm) which deploys a monolith with internal NATS and an optionally enabled PostgreSQL server. If the PostgreSQL dependency is not enabled, a user specified connection string is constructed. Co-authored-by: kegsay <kegan@matrix.org>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/gh-pages.yml52
-rw-r--r--.github/workflows/helm.yml39
-rw-r--r--.github/workflows/k8s.yml90
3 files changed, 181 insertions, 0 deletions
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
new file mode 100644
index 00000000..b5a8f0bb
--- /dev/null
+++ b/.github/workflows/gh-pages.yml
@@ -0,0 +1,52 @@
+# Sample workflow for building and deploying a Jekyll site to GitHub Pages
+name: Deploy GitHub Pages dependencies preinstalled
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["main"]
+ paths:
+ - 'docs/**' # only execute if we have docs changes
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow one concurrent deployment
+concurrency:
+ group: "pages"
+ cancel-in-progress: true
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - name: Setup Pages
+ uses: actions/configure-pages@v2
+ - name: Build with Jekyll
+ uses: actions/jekyll-build-pages@v1
+ with:
+ source: ./docs
+ destination: ./_site
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v1
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v1
diff --git a/.github/workflows/helm.yml b/.github/workflows/helm.yml
new file mode 100644
index 00000000..7cdc369b
--- /dev/null
+++ b/.github/workflows/helm.yml
@@ -0,0 +1,39 @@
+name: Release Charts
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'helm/**' # only execute if we have helm chart changes
+
+jobs:
+ release:
+ # depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions
+ # see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token
+ permissions:
+ contents: write
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Configure Git
+ run: |
+ git config user.name "$GITHUB_ACTOR"
+ git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
+
+ - name: Install Helm
+ uses: azure/setup-helm@v3
+ with:
+ version: v3.10.0
+
+ - name: Run chart-releaser
+ uses: helm/chart-releaser-action@v1.4.1
+ env:
+ CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ with:
+ config: helm/cr.yaml
+ charts_dir: helm/
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