You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.0 KiB
138 lines
4.0 KiB
# 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
|
|
|