Allow customization of rollout strategies for deployments (#142) #339
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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-ignore: | |
- "README.md" | |
push: | |
branches-ignore: | |
- "dependabot/**" | |
workflow_dispatch: | |
permissions: | |
contents: read | |
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.8.0 | |
env: | |
HELM_EXPERIMENTAL_OCI: "1" | |
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 |