Skip to content

improve discord notifications #1

improve discord notifications

improve discord notifications #1

Workflow file for this run

on:
workflow_call:
inputs:
config:
type: string
description: "The test configuration in json format."
required: true
send_notification:
type: string
description: "Send discord notification on test failure (default: false)."
default: "false"
secrets:
RANCHER_TOKEN:
description: "The rancher token to login to the rancher server."
RANCHER_URL:
description: "The rancher url to login to the rancher server."
DISCORD_HOOK:
description: 'Discord hook'
required: false
GITHUB_TOKEN:

Check failure on line 21 in .github/workflows/_shared-run.yaml

View workflow run for this annotation

GitHub Actions / .github/workflows/_shared-run.yaml

Invalid workflow file

secret name `GITHUB_TOKEN` within `workflow_call` can not be used since it would collide with system reserved name
description: 'Github hook'
required: false
jobs:
get_test:
name: "Prepare Test"
runs-on: ubuntu-latest
outputs:
id: ${{ steps.config.outputs.id }}
name: ${{ steps.config.outputs.name }}
clients: ${{ steps.config.outputs.clients }}
kurtosis: ${{ steps.config.outputs.kurtosis }}
kurtosis_branch: ${{ steps.config.outputs.kurtosis_branch }}
worker: ${{ steps.config.outputs.worker }}
backend: ${{ steps.config.outputs.backend }}
pairs: ${{ steps.config.outputs.pairs }}
pairsidx: ${{ steps.config.outputs.pairsidx }}
assertoor_tests: ${{ steps.config.outputs.assertoor_tests }}
kubernetes_cluster: ${{ steps.config.outputs.kubernetes_cluster }}
kubernetes_storageclass: ${{ steps.config.outputs.kubernetes_storageclass }}
kubeconfig: ${{ steps.kubeconfig.outputs.kubeconfig }}
steps:
- name: "Parse test configuration"
id: config
shell: bash
run: |
testcfg=$(
cat <<"EOF"
${{ inputs.config }}
EOF
)
id="$(echo "$testcfg" | jq -r .id)"
name="$(echo "$testcfg" | jq -r .name)"
clients="$(echo "$testcfg" | jq -r .clients)"
kurtosis="$(echo "$testcfg" | jq -r .kurtosis)"
kurtosis_branch="$(echo "$testcfg" | jq -r '.kurtosis_branch // ""')"
worker="$(echo "$testcfg" | jq -c .worker)"
backend="$(echo "$testcfg" | jq -r .backend)"
kubernetes_cluster="$(echo "$testcfg" | jq -r .kubernetes.cluster)"
kubernetes_storageclass="$(echo "$testcfg" | jq -r .kubernetes.storageClass)"
pairs="$(echo "$testcfg" | jq -c .clientPairs)"
assertoor_tests="$(echo "$testcfg" | jq -c .assertoorTests)"
echo "ID: $id"
echo "id=$(echo "$id")" >> $GITHUB_OUTPUT
echo "Name: $name"
echo "name=$(echo "$name")" >> $GITHUB_OUTPUT
echo "Clients yaml: $clients"
echo "clients=$(echo "$clients")" >> $GITHUB_OUTPUT
echo "Kurtosis yaml: $kurtosis"
echo "kurtosis=$(echo "$kurtosis")" >> $GITHUB_OUTPUT
echo "Kurtosis package branch: $kurtosis_branch"
echo "kurtosis_branch=$(echo "$kurtosis_branch")" >> $GITHUB_OUTPUT
echo "Worker: $worker"
echo "worker=$(echo "$worker")" >> $GITHUB_OUTPUT
echo "Backend: $backend"
echo "backend=$(echo "$backend")" >> $GITHUB_OUTPUT
if [ "$backend" == "kubernetes" ]; then
echo "Kubernetes Cluster: $kubernetes_cluster"
echo "kubernetes_cluster=$(echo "$kubernetes_cluster")" >> $GITHUB_OUTPUT
echo "Kubernetes Storage Class: $kubernetes_storageclass"
echo "kubernetes_storageclass=$(echo "$kubernetes_storageclass")" >> $GITHUB_OUTPUT
else
echo "kubernetes_cluster=" >> $GITHUB_OUTPUT
echo "kubernetes_storageclass=" >> $GITHUB_OUTPUT
fi
echo "Client Pairs:"
echo "$pairs" | yq -P
echo "pairs=$(echo "$pairs" | jq -c 'to_entries | map({pairs:.value, index:.key})')" >> $GITHUB_OUTPUT
echo "pairsidx=$(echo "$pairs" | jq -c 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
echo "Assertoor Tests:"
echo "$assertoor_tests" | yq -P
echo "assertoor_tests=$(echo "$assertoor_tests")" >> $GITHUB_OUTPUT
# Generate kubeconfig for kubernetes backend
- name: "Install rancher CLI"
if: ${{ steps.config.outputs.backend == 'kubernetes' }}
shell: bash
run: |
curl -L https://github.com/rancher/cli/releases/download/v2.8.0/rancher-linux-amd64-v2.8.0.tar.gz | tar xvz
mv ./rancher-v2.8.0/rancher /usr/local/bin/rancher
- name: Login to rancher
if: ${{ steps.config.outputs.backend == 'kubernetes' }}
shell: bash
run: |
rancher login --token "${{ secrets.RANCHER_TOKEN }}" "${{ secrets.RANCHER_URL }}" --context c-m-2m5z22jp:p-8vpkn
- name: Login to kubernetes cluster
if: ${{ steps.config.outputs.backend == 'kubernetes' }}
shell: bash
run: |
rancher kubectl config use-context "${{ steps.config.outputs.kubernetes_cluster }}"
- name: Generate kubeconfig
if: ${{ steps.config.outputs.backend == 'kubernetes' }}
id: kubeconfig
shell: bash
run: |
rancher kubectl config view --raw > kubeconfig
echo "kubeconfig=$(cat kubeconfig | base64 -w 0)" >> $GITHUB_OUTPUT
run_test:
needs: get_test
strategy:
fail-fast: false
matrix:
index: ${{ fromJson(needs.get_test.outputs.pairsidx) }}
include: ${{ fromJson(needs.get_test.outputs.pairs) }}
name: "run"
uses: ./.github/workflows/_shared-run-test.yaml
with:
id: "${{ needs.get_test.outputs.id }}-${{ matrix.index }}"
name: "${{ needs.get_test.outputs.name }}"
pairs: ${{ matrix.pairs }}
worker: ${{ needs.get_test.outputs.worker }}
kurtosis: ${{ needs.get_test.outputs.kurtosis }}
kurtosis_branch: ${{ needs.get_test.outputs.kurtosis_branch }}
backend: ${{ needs.get_test.outputs.backend }}
kubeCluster: ${{ needs.get_test.outputs.kubernetes_cluster }}
kubeStorageClass: ${{ needs.get_test.outputs.kubernetes_storageclass }}
clients: ${{ needs.get_test.outputs.clients }}
assertoor_tests: ${{ needs.get_test.outputs.assertoor_tests }}
send_notification: ${{ inputs.send_notification }}
secrets:
KUBECONFIG: ${{ needs.get_test.outputs.kubeconfig }}
DISCORD_HOOK: ${{ secrets.DISCORD_HOOK }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}