|
@@ -0,0 +1,138 @@
|
|
|
+# This is a GitHub workflow defining a set of jobs with a set of steps.
|
|
|
+# ref: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
|
|
|
+#
|
|
|
+name: Test chart
|
|
|
+
|
|
|
+on:
|
|
|
+ pull_request:
|
|
|
+ paths:
|
|
|
+ - "chart/**"
|
|
|
+ - "!**.md"
|
|
|
+ - ".github/workflows/test-chart.yml"
|
|
|
+ push:
|
|
|
+ paths:
|
|
|
+ - "chart/**"
|
|
|
+ - "!**.md"
|
|
|
+ - ".github/workflows/test-chart.yml"
|
|
|
+ branches-ignore:
|
|
|
+ - "dependabot/**"
|
|
|
+ workflow_dispatch:
|
|
|
+
|
|
|
+permissions:
|
|
|
+ contents: read
|
|
|
+
|
|
|
+defaults:
|
|
|
+ run:
|
|
|
+ working-directory: chart
|
|
|
+
|
|
|
+jobs:
|
|
|
+ lint-templates:
|
|
|
+ runs-on: ubuntu-22.04
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+ - uses: actions/setup-python@v4
|
|
|
+ with:
|
|
|
+ python-version: "3.x"
|
|
|
+
|
|
|
+ - name: Install dependencies (yamllint)
|
|
|
+ run: pip install yamllint
|
|
|
+
|
|
|
+ - run: helm dependency update
|
|
|
+
|
|
|
+ - name: helm lint
|
|
|
+ run: |
|
|
|
+ helm lint . \
|
|
|
+ --values dev-values.yaml
|
|
|
+
|
|
|
+ - name: helm template
|
|
|
+ run: |
|
|
|
+ helm template . \
|
|
|
+ --values dev-values.yaml \
|
|
|
+ --output-dir rendered-templates
|
|
|
+
|
|
|
+ - name: yamllint (only on templates we manage)
|
|
|
+ run: |
|
|
|
+ rm -rf rendered-templates/mastodon/charts
|
|
|
+
|
|
|
+ yamllint rendered-templates \
|
|
|
+ --config-data "{rules: {indentation: {spaces: 2}, line-length: disable}}"
|
|
|
+
|
|
|
+ # This job helps us validate that rendered templates are valid k8s resources
|
|
|
+ # against a k8s api-server, via "helm template --validate", but also that a
|
|
|
+ # basic configuration can be used to successfully startup mastodon.
|
|
|
+ #
|
|
|
+ test-install:
|
|
|
+ runs-on: ubuntu-22.04
|
|
|
+ timeout-minutes: 15
|
|
|
+
|
|
|
+ strategy:
|
|
|
+ fail-fast: false
|
|
|
+ matrix:
|
|
|
+ include:
|
|
|
+ # k3s-channel reference: https://update.k3s.io/v1-release/channels
|
|
|
+ - k3s-channel: latest
|
|
|
+ - k3s-channel: stable
|
|
|
+
|
|
|
+ # This represents the oldest configuration we test against.
|
|
|
+ #
|
|
|
+ # The k8s version chosen is based on the oldest still supported k8s
|
|
|
+ # version among two managed k8s services, GKE, EKS.
|
|
|
+ # - GKE: https://endoflife.date/google-kubernetes-engine
|
|
|
+ # - EKS: https://endoflife.date/amazon-eks
|
|
|
+ #
|
|
|
+ # The helm client's version can influence what helper functions is
|
|
|
+ # available for use in the templates, currently we need v3.6.0 or
|
|
|
+ # higher.
|
|
|
+ #
|
|
|
+ - k3s-channel: v1.21
|
|
|
+ helm-version: v3.6.0
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+
|
|
|
+ # This action starts a k8s cluster with NetworkPolicy enforcement and
|
|
|
+ # installs both kubectl and helm.
|
|
|
+ #
|
|
|
+ # ref: https://github.com/jupyterhub/action-k3s-helm#readme
|
|
|
+ #
|
|
|
+ - uses: jupyterhub/action-k3s-helm@v3
|
|
|
+ with:
|
|
|
+ k3s-channel: ${{ matrix.k3s-channel }}
|
|
|
+ helm-version: ${{ matrix.helm-version }}
|
|
|
+ metrics-enabled: false
|
|
|
+ traefik-enabled: false
|
|
|
+ docker-enabled: false
|
|
|
+
|
|
|
+ - run: helm dependency update
|
|
|
+
|
|
|
+ # Validate rendered helm templates against the k8s api-server
|
|
|
+ - name: helm template --validate
|
|
|
+ run: |
|
|
|
+ helm template --validate mastodon . \
|
|
|
+ --values dev-values.yaml
|
|
|
+
|
|
|
+ - name: helm install
|
|
|
+ run: |
|
|
|
+ helm install mastodon . \
|
|
|
+ --values dev-values.yaml \
|
|
|
+ --timeout 10m
|
|
|
+
|
|
|
+ # This actions provides a report about the state of the k8s cluster,
|
|
|
+ # providing logs etc on anything that has failed and workloads marked as
|
|
|
+ # important.
|
|
|
+ #
|
|
|
+ # ref: https://github.com/jupyterhub/action-k8s-namespace-report#readme
|
|
|
+ #
|
|
|
+ - name: Kubernetes namespace report
|
|
|
+ uses: jupyterhub/action-k8s-namespace-report@v1
|
|
|
+ if: always()
|
|
|
+ with:
|
|
|
+ important-workloads: >-
|
|
|
+ deploy/mastodon-sidekiq
|
|
|
+ deploy/mastodon-streaming
|
|
|
+ deploy/mastodon-web
|
|
|
+ job/mastodon-assets-precompile
|
|
|
+ job/mastodon-chewy-upgrade
|
|
|
+ job/mastodon-create-admin
|
|
|
+ job/mastodon-db-migrate
|