Skip to content

minikube CI

minikube CI #500

name: minikube CI
on:
schedule:
# run weekly to ensure to catch build being broken against upstream
- cron: "0 7 * * 1"
push:
# dependabot will create both branches and pull request
# only run on pull requests to avoid running twice and creating a release draft
branches-ignore:
- 'dependabot/**'
paths:
- 'provision/minikube/**'
- '.github/workflows/provision-minikube.yml'
pull_request:
paths:
- 'provision/minikube/**'
- '.github/workflows/provision-minikube.yml'
concurrency:
# Only run once for latest commit per ref and cancel other (previous) runs.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Task
uses: arduino/setup-task@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
- uses: azure/[email protected]
with:
version: 'v3.8.2'
- uses: azure/[email protected]
with:
version: 'v1.23.3'
- name: Add yq
run: |
mkdir -p $GITHUB_WORKSPACE/bin
wget https://github.com/mikefarah/yq/releases/download/v4.25.3/yq_linux_amd64 -O $GITHUB_WORKSPACE/bin/yq
chmod +x $GITHUB_WORKSPACE/bin/yq
- name: Setup minikube-Kubernetes
uses: manusa/[email protected]
with:
minikube version: 'v1.28.0'
# the version of Kubernetes needs to be in-sync with `rebuild.sh`
kubernetes version: 'v1.25.3'
github token: ${{ secrets.GITHUB_TOKEN }}
driver: docker
start args: --memory 4096
- name: Provision Legacy store on PostgreSQL DB
working-directory: provision/minikube
run: |
PATH=$PATH:$GITHUB_WORKSPACE/bin
./rebuild.sh
task KC_DATABASE=postgres KC_STORAGE=
kubectl get pods -A
kubectl get events -A
- name: Create Dataset on Postgres Legacy Store
working-directory: provision/minikube
run: |
task KC_DATABASE=postgres KC_STORAGE= dataset-import -- -a clear-status-completed
task KC_DATABASE=postgres KC_STORAGE= dataset-import -- -a create-realms -r 1 -c 5 -u 5 -i 1000
task KC_DATABASE=postgres KC_STORAGE= dataset-import -- -a status-completed
- name: Provision JPA Map store on PostgreSQL DB
working-directory: provision/minikube
run: |
PATH=$PATH:$GITHUB_WORKSPACE/bin
task KC_DATABASE=postgres KC_STORAGE=jpa
- name: Create Dataset on Postgres JPA Map Store
working-directory: provision/minikube
run: |
task KC_DATABASE=postgres KC_STORAGE=jpa KC_OTEL=true dataset-import -- -a clear-status-completed
task KC_DATABASE=postgres KC_STORAGE=jpa KC_OTEL=true dataset-import -- -a create-realms -r 1 -c 5 -u 5 -i 1000
task KC_DATABASE=postgres KC_STORAGE=jpa KC_OTEL=true dataset-import -- -a status-completed
- name: Provision JPA Map store on Cockroach DB Single Node
working-directory: provision/minikube
run: |
PATH=$PATH:$GITHUB_WORKSPACE/bin
task KC_DATABASE=cockroach-single KC_STORAGE=jpa
kubectl get pods -A
kubectl get events -A
- name: Create Dataset on Cockroach JPA Map Store
working-directory: provision/minikube
run: |
task KC_DATABASE=cockroach-single KC_STORAGE=jpa dataset-import -- -a clear-status-completed
task KC_DATABASE=cockroach-single KC_STORAGE=jpa dataset-import -- -a create-realms -r 1 -c 5 -u 5 -i 1000
task KC_DATABASE=cockroach-single KC_STORAGE=jpa dataset-import -- -a status-completed
- name: Provision Hot Rod Map store on Infinispan (In-Memory store)
working-directory: provision/minikube
run: |
PATH=$PATH:$GITHUB_WORKSPACE/bin
task KC_DATABASE=infinispan KC_STORAGE=hotrod
kubectl get pods -A
kubectl get events -A
- name: Create Dataset on Infinispan Hot Rod Store
working-directory: provision/minikube
run: |
task KC_DATABASE=infinispan KC_STORAGE=hotrod dataset-import -- -a clear-status-completed
task KC_DATABASE=infinispan KC_STORAGE=hotrod dataset-import -- -a create-realms -r 1 -c 5 -u 5 -i 1000
task KC_DATABASE=infinispan KC_STORAGE=hotrod dataset-import -- -a status-completed
- name: Provision JPA and Hot Rod store on PostgreSQL and Infinispan (In-Memory store)
working-directory: provision/minikube
run: |
PATH=$PATH:$GITHUB_WORKSPACE/bin
task KC_DATABASE=postgres+infinispan KC_STORAGE=jpa+hotrod
kubectl get pods -A
kubectl get events -A
- name: Create Dataset on Infinispan Hot Rod and PostgreSQL JPA Store
working-directory: provision/minikube
run: |
task KC_DATABASE=postgres+infinispan KC_STORAGE=jpa+hotrod dataset-import -- -a clear-status-completed
task KC_DATABASE=postgres+infinispan KC_STORAGE=jpa+hotrod dataset-import -- -a create-realms -r 1 -c 5 -u 5 -i 1000
task KC_DATABASE=postgres+infinispan KC_STORAGE=jpa+hotrod dataset-import -- -a status-completed
- name: Provision JPA Map store on CHM (File store)
working-directory: provision/minikube
run: |
PATH=$PATH:$GITHUB_WORKSPACE/bin
task KC_DATABASE=none KC_STORAGE=chm
kubectl get pods -A
kubectl get events -A
- name: Create Dataset on CHM Store
working-directory: provision/minikube
run: |
task KC_DATABASE=none KC_STORAGE=chm dataset-import -- -a clear-status-completed
task KC_DATABASE=none KC_STORAGE=chm dataset-import -- -a create-realms -r 1 -c 5 -u 5 -i 1000
task KC_DATABASE=none KC_STORAGE=chm dataset-import -- -a status-completed
- name: Provision Cockroach Operator minimally
working-directory: provision/minikube
run: |
# minimal testing for storage cockroach-operator, as GitHub actions doesn't have enough resources for this
helm template --debug keycloak --set hostname=minikube.nip.io --set storage=cockroach-operator
kubectl get pods -A
kubectl get events -A
- name: Show logs on failure
if: ${{ failure() }}
working-directory: provision/minikube
run: |
kubectl get pods -A
kubectl get pods -A -o yaml
kubectl get events -A
kubectl logs -n keycloak keycloak-0