Skip to content

switch to workflows #10

switch to workflows

switch to workflows #10

name: kubernetes infrastructure and cluster
on:
push:
branches: [ master ]
env:
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
jobs:
hetzner-k3s:
if: "!contains(github.event.head_commit.message, 'skip')"
name: kubernetes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: install and upgrade k3s on hetzner cloud
working-directory: hetzner-k3s
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
kube-system:
if: "!contains(github.event.head_commit.message, 'skip')"
name: kube-system
needs: [ hetzner-k3s ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: prepare kube-system namespace
working-directory: kube-system
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
hcloud-csi:
if: "!contains(github.event.head_commit.message, 'skip')"
name: hcloud-csi
needs: [ kube-system ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: install hetzner csi driver
working-directory: hcloud-csi
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
ingress-nginx:
if: "!contains(github.event.head_commit.message, 'skip')"
name: ingress-nginx
needs: [ kube-system ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy kubernetes ingress controller
working-directory: ingress-nginx
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
cert-manager:
if: "!contains(github.event.head_commit.message, 'skip')"
name: cert-manager
needs: [ ingress-nginx ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy cert-manager for let's encrypt
working-directory: cert-manager
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
oauth2-proxy:
if: "!contains(github.event.head_commit.message, 'skip')"
name: oauth2-proxy
needs: [ ingress-nginx ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy oauth2-proxy
working-directory: oauth2-proxy
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
kubernetes-dashboard:
if: "!contains(github.event.head_commit.message, 'skip')"
name: kubernetes-dashboard
needs: [ oauth2-proxy, cert-manager ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy kubernetes dashboard
working-directory: kubernetes-dashboard
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
kube-state-metrics:
if: "!contains(github.event.head_commit.message, 'skip')"
name: kube-state-metrics
needs: [ kube-system ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy kube-state-metrics
working-directory: monitoring/kube-state-metrics
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
prometheus:
if: "!contains(github.event.head_commit.message, 'skip')"
name: prometheus
needs: [ oauth2-proxy, cert-manager, kube-state-metrics, hcloud-csi ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy prometheus
working-directory: monitoring/prometheus
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
prometheus-msteams:
if: "!contains(github.event.head_commit.message, 'skip')"
name: prometheus-msteams
needs: [ oauth2-proxy, cert-manager, kube-state-metrics ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy prometheus-msteams proxy
working-directory: monitoring/prometheus-msteams
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
loki:
if: "!contains(github.event.head_commit.message, 'skip')"
name: loki
needs: [ oauth2-proxy, cert-manager, hcloud-csi ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy loki
working-directory: monitoring/loki
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
grafana:
if: "!contains(github.event.head_commit.message, 'skip')"
name: grafana
needs: [ prometheus, loki, hcloud-csi ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy grafana
working-directory: monitoring/grafana
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
postgres:
if: "!contains(github.event.head_commit.message, 'skip')"
name: postgres
needs: [ kube-system, hcloud-csi ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deploy postgres database
working-directory: postgres
run: ./deploy.sh
- name: cleanup
if: ${{ always() }}
run: ./cleanup.sh
testing:
if: "!contains(github.event.head_commit.message, 'skip')"
name: k8s e2e testing
needs: [ postgres, grafana, kubernetes-dashboard ]
runs-on: ubuntu-latest
steps:
- name: checkout k8s-testing
uses: actions/checkout@v3
with:
repository: JamesClonk/k8s-testing
ref: master
- name: setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7'
bundler-cache: true
- name: setup chrome
uses: ./.github/actions/setup-chrome
- uses: actions/checkout@v3
with:
path: repo
- name: setup kubeconfig
working-directory: repo
run: ./setup.sh
- name: run k8s-testing specs
run: |
export KUBECONFIG=${HOME}/.kube/k8s-infrastructure
make test
- name: cleanup
if: ${{ always() }}
working-directory: repo
run: |
rm -f ${HOME}/.kube/k8s-infrastructure || true
./cleanup.sh