# 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