feat: Add Admin Fine Grained Permissions to Keycloak Client #116
Workflow file for this run
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
name: "pull_request" | |
on: | |
pull_request: | |
branches: [master] | |
types: [opened, synchronize, reopened] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
GOLANG_VERSION: '1.22' | |
jobs: | |
check-commit-message: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Check Commit Format | |
uses: gsactions/commit-message-checker@v2 | |
with: | |
pattern: '^(fix|feat|docs|style|refactor|test|chore){1}(\([\w\-\.]+\))?(!)?: .+( (#\d+))?$' | |
error: 'Your commit message should be in the format "type: Description (#issue)". Example: "fix: Update build (#33)"' | |
excludeDescription: 'true' | |
excludeTitle: 'true' | |
checkAllCommitMessages: 'true' | |
accessToken: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check Line Length | |
uses: gsactions/commit-message-checker@v2 | |
with: | |
pattern: '.{0,50}' | |
error: 'The maximum line length of 50 characters is exceeded.' | |
excludeDescription: 'true' | |
excludeTitle: 'true' | |
checkAllCommitMessages: 'true' | |
accessToken: ${{ secrets.GITHUB_TOKEN }} | |
helm-docs: | |
needs: [check-commit-message] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GOLANG_VERSION }} | |
- name: Make Build | |
run: make validate-docs | |
helm-lint: | |
needs: [helm-docs] | |
runs-on: ubuntu-20.04 | |
env: | |
CHART_DIR: "deploy-templates" | |
CT_CONFIGS_DIR: "." | |
CT_CONFIGS_DIR_DEFAULT: "ct-configs" | |
CT_FILE_PATH: "ct.yaml" | |
LINTCONF_FILE_PATH: "lintconf.yaml" | |
CHART_SCHEMA_FILE_PATH: "chart_schema.yaml" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Helm | |
uses: azure/setup-helm@v3 | |
with: | |
version: v3.12.1 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
check-latest: true | |
- name: Set up chart-testing | |
uses: helm/chart-testing-action@v2.6.0 | |
- name: Run chart-testing (lint) | |
run: ct lint --target-branch ${{ github.event.repository.default_branch }} \ | |
--charts ${CHART_DIR}/ \ | |
--config ${CT_FILE_PATH} \ | |
--lint-conf ${LINTCONF_FILE_PATH} \ | |
--chart-yaml-schema ${CHART_SCHEMA_FILE_PATH} | |
build-and-lint: | |
needs: [helm-lint] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GOLANG_VERSION }} | |
- name: Make Build | |
run: make build | |
- name: Make Lint | |
run: make lint | |
docker-lint: | |
needs: [build-and-lint] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Run hadolint | |
uses: hadolint/hadolint-action@v1.5.0 | |
with: | |
dockerfile: Dockerfile | |
e2e-tests: | |
name: End-to-end tests | |
needs: [docker-lint] | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
# The e2e tests are run on the lowest and highest supported k8s version. | |
# All Kubernetes version in between expose the same APIs, hence the operator | |
# should be compatible with them. | |
kube-version: | |
- "1.27" | |
- "1.28" | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GOLANG_VERSION }} | |
- name: "install kuttl" | |
run: ./hack/install-kuttl.sh | |
- name: "run tests" | |
env: | |
KUBE_VERSION: ${{ matrix.kube-version }} | |
run: make start-kind KUBE_VERSION=$KUBE_VERSION && make e2e | |
e2e-tests-check: | |
runs-on: ubuntu-20.04 | |
if: always() | |
needs: [e2e-tests] | |
steps: | |
- name: Print result | |
run: echo ${{ needs.e2e-tests.result }} | |
- name: Interpret result | |
run: | | |
if [[ success == ${{ needs.e2e-tests.result }} ]] | |
then | |
echo "All matrix jobs passed!" | |
else | |
echo "One or more matrix jobs failed." | |
false | |
fi | |
integration-tests: | |
runs-on: ubuntu-latest | |
needs: [e2e-tests-check] | |
strategy: | |
matrix: | |
kube-version: | |
- "1.27" | |
- "1.28" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GOLANG_VERSION }} | |
- name: Setup KinD Cluster | |
env: | |
YAML_CONFIG: ${{ format('hack/kind-{0}.yaml', matrix.kube-version) }} | |
run: | | |
# Install kind | |
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-$(uname)-amd64 | |
chmod +x ./kind | |
sudo mv ./kind /usr/local/bin/kind | |
# Create cluster from specific config | |
kind create cluster --config "${YAML_CONFIG}" | |
- name: Create keycloak namespace | |
run: kubectl create ns keycloak | |
- name: Deploy Keycloak server and wait for readiness | |
run: | | |
kubectl apply -f tests/e2e/helm-success-path/01-install-keycloak-server.yaml --namespace keycloak | |
kubectl wait --for condition=Available=True deployment keycloak --timeout=120s --namespace keycloak | |
- name: Port-forward Keycloak service | |
run: kubectl port-forward svc/keycloak 8081:8081 --namespace keycloak & sleep 5 | |
- name: Run tests against the Keycloak service | |
run: | | |
# Extract the cluster IP and port from the service | |
TEST_KEYCLOAK_URL="http://localhost:8081" | |
echo "Test Keycloak URL: $TEST_KEYCLOAK_URL" | |
# Set the URL in environment variable for make test | |
export TEST_KEYCLOAK_URL | |
# Run the make test | |
make test | |
- name: Delete the Kubernetes cluster | |
if: always() | |
run: kind delete cluster |