Change health check and prom internal metrics ports to a unique value #2757
Workflow file for this run
This file contains hidden or 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: functional-tests | |
on: | |
pull_request: | |
push: | |
branches: [ main ] | |
workflow_dispatch: | |
inputs: | |
UPLOAD_UPDATED_EXPECTED_RESULTS: | |
description: 'Set this to true to upload updated golden file expected results and upload these results as a Github workflow artifact.' | |
required: false | |
default: false | |
UPLOAD_KUBERNETES_DEBUG_INFO: | |
description: 'Set this to true to collect the debug info of the k8s cluster and upload this info as a Github workflow artifact.' | |
required: false | |
default: false | |
env: | |
GO_VERSION: 1.23.6 | |
# Make sure to exit early if cache segment download times out after 2 minutes. | |
# We limit cache download as a whole to 5 minutes. | |
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 | |
jobs: | |
get-test-matrix: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: get matrix | |
id: test_matrix | |
run: | | |
echo "Getting test matrix" | |
matrix=`cat ci-matrix.json | jq '.functional_test_v2' | jq -r 'tostring' | tr -d '\n'` | |
echo "matrix=${matrix}" >> $GITHUB_OUTPUT | |
outputs: | |
matrix: ${{ steps.test_matrix.outputs.matrix }} | |
kubernetes-test: | |
env: | |
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing | |
KUBE_TEST_ENV: kind | |
UPLOAD_UPDATED_EXPECTED_RESULTS: ${{ github.event.inputs.UPLOAD_UPDATED_EXPECTED_RESULTS || 'false' }} | |
UPLOAD_KUBERNETES_DEBUG_INFO: ${{ github.event.inputs.UPLOAD_KUBERNETES_DEBUG_INFO || 'false' }} | |
needs: get-test-matrix | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJSON(needs.get-test-matrix.outputs.matrix) }} | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Create kind cluster | |
uses: helm/[email protected] | |
with: | |
node_image: kindest/node:${{ matrix.k8s-kind-version }} | |
kubectl_version: ${{ matrix.k8s-kind-version }} | |
cluster_name: kind | |
config: ./.github/workflows/configs/kind-config.yaml | |
- name: Fix kubelet TLS server certificates | |
run: | | |
kubectl get csr -o=jsonpath='{range.items[?(@.spec.signerName=="kubernetes.io/kubelet-serving")]}{.metadata.name}{" "}{end}' | xargs kubectl certificate approve | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
id: run-functional-tests | |
env: | |
K8S_VERSION: ${{ matrix.k8s-kind-version }} | |
run: | | |
TEARDOWN_BEFORE_SETUP=true UPDATE_EXPECTED_RESULTS=${{ env.UPLOAD_UPDATED_EXPECTED_RESULTS }} SUITE=${{ matrix.test-job }} make functionaltest | |
- name: Collect Kubernetes Cluster debug info on failure | |
if: always() && (steps.run-functional-tests.outcome == 'failure' || env.UPLOAD_KUBERNETES_DEBUG_INFO == 'true') | |
id: collect-debug-info | |
run: | | |
echo "Functional tests failed. Collecting debug info for current state of the Kubernetes cluster..." | |
cd tools | |
./splunk_kubernetes_debug_info.sh | |
- name: Upload Kubernetes Cluster debug info | |
if: always() && (steps.run-functional-tests.outcome == 'failure' || env.UPLOAD_KUBERNETES_DEBUG_INFO == 'true') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: k8s-debug-info-${{ matrix.test-job }}-${{ matrix.k8s-kind-version }} | |
path: tools/splunk_kubernetes_debug_info_* | |
retention-days: 5 | |
- name: Upload test results | |
if: always() && env.UPLOAD_UPDATED_EXPECTED_RESULTS == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: functional_tests-${{ matrix.test-job }}-${{ matrix.k8s-kind-version }} | |
path: functional_tests/results | |
retention-days: 5 | |
eks-test: | |
name: Test helm install in EKS - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing-eks | |
KUBE_TEST_ENV: eks | |
SKIP_TESTS: "true" # we need to skip functional tests as we have not set probes to listen to the traffic. | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_KEY }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET }} | |
aws-region: us-west-1 | |
- name: Install kubeconfig | |
run: | | |
aws eks update-kubeconfig --name rotel-eks --region us-west-1 | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
eks-upgrade-test: | |
name: Test helm upgrade in EKS - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing-eks | |
KUBE_TEST_ENV: eks | |
SKIP_TESTS: "true" # we need to skip functional tests as we have not set probes to listen to the traffic. | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download the latest published release to use as a base for the upgrade | |
run: | | |
helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart | |
helm repo update | |
helm pull splunk-otel-collector-chart/splunk-otel-collector --untar --untardir base | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_KEY }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET }} | |
aws-region: us-west-1 | |
- name: Install kubeconfig | |
run: | | |
aws eks update-kubeconfig --name rotel-eks --region us-west-1 | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
UPGRADE_FROM_VALUES: aws_upgrade_from_previous_release_values.yaml | |
UPGRADE_FROM_CHART_DIR: base/splunk-otel-collector | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
gke-autopilot-test: | |
name: Test helm install in GKE/Autopilot - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBE_TEST_ENV: gke/autopilot | |
SKIP_TESTS: "true" | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- uses: 'google-github-actions/[email protected]' | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
credentials_json: ${{ secrets.GKE_SA_KEY }} | |
- uses: google-github-actions/[email protected] | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
- uses: google-github-actions/[email protected] | |
with: | |
cluster_name: ${{ secrets.GKE_AUTOPILOT_CLUSTER }} | |
location: ${{ secrets.GKE_REGION }} | |
project_id: ${{ secrets.GKE_PROJECT }} | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
gke-autopilot-upgrade-test: | |
name: Test helm upgrade in GKE/Autopilot - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBE_TEST_ENV: gke/autopilot | |
SKIP_TESTS: "true" | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download the latest published release to use as a base for the upgrade | |
run: | | |
helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart | |
helm repo update | |
helm pull splunk-otel-collector-chart/splunk-otel-collector --untar --untardir base | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- uses: 'google-github-actions/[email protected]' | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
credentials_json: ${{ secrets.GKE_SA_KEY }} | |
- uses: google-github-actions/[email protected] | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
- uses: google-github-actions/[email protected] | |
with: | |
cluster_name: ${{ secrets.GKE_AUTOPILOT_CLUSTER }} | |
location: ${{ secrets.GKE_REGION }} | |
project_id: ${{ secrets.GKE_PROJECT }} | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
UPGRADE_FROM_VALUES: gke_autopilot_upgrade_from_previous_release_values.yaml | |
UPGRADE_FROM_CHART_DIR: base/splunk-otel-collector | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
aks-windows-test: | |
name: Test helm install in AKS - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBE_TEST_ENV: aks | |
SKIP_TESTS: "true" | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Set up kubelogin for non-interactive login | |
uses: azure/[email protected] | |
with: | |
kubelogin-version: "v0.0.24" | |
- uses: azure/[email protected] | |
with: | |
creds: ${{ secrets.AZURE_CREDENTIALS }} | |
- uses: azure/aks-set-context@v4 | |
with: | |
resource-group: ${{ secrets.AKS_RESOURCE_GROUP }} | |
cluster-name: ${{ secrets.AKS_CLUSTER_NAME }} | |
admin: false | |
use-kubelogin: true | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
gce-autopilot-test: | |
name: Test helm install in GCE (kops) - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBE_TEST_ENV: gce | |
SKIP_TESTS: "true" | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: Set kubeconfig | |
run: echo "$GCE_KUBECONFIG" > /tmp/kubeconfig | |
env: | |
GCE_KUBECONFIG: ${{ secrets.GCE_KUBECONFIG }} | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
KUBECONFIG: /tmp/kubeconfig | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
eks-fargate-test: | |
name: Test helm install in EKS Fargate - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing-eks-fargate | |
KUBE_TEST_ENV: "eks/fargate" | |
SKIP_TESTS: "true" # we need to skip functional tests as we have not set probes to listen to the traffic. | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_KEY }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET }} | |
aws-region: us-west-2 | |
- name: Install kubeconfig | |
run: | | |
aws eks update-kubeconfig --name github-gdi-fargate --region us-west-2 | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest | |
eks-fargate-upgrade-test: | |
name: Test helm upgrade in EKS Fargate - credentials needed | |
if: | | |
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || | |
(github.ref == 'refs/heads/main') | |
env: | |
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing-eks-fargate | |
KUBE_TEST_ENV: "eks/fargate" | |
SKIP_TESTS: "true" # we need to skip functional tests as we have not set probes to listen to the traffic. | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'Ignore Tests') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download the latest published release to use as a base for the upgrade | |
run: | | |
helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart | |
helm repo update | |
helm pull splunk-otel-collector-chart/splunk-otel-collector --untar --untardir base | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
cache-dependency-path: '**/go.sum' | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_KEY }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET }} | |
aws-region: us-west-2 | |
- name: Install kubeconfig | |
run: | | |
aws eks update-kubeconfig --name github-gdi-fargate --region us-west-2 | |
- name: Update dependencies | |
run: | | |
make dep-update | |
- name: run functional tests | |
env: | |
HOST_ENDPOINT: 0.0.0.0 | |
UPGRADE_FROM_VALUES: eks_fargate_upgrade_from_previous_release_values.yaml | |
UPGRADE_FROM_CHART_DIR: base/splunk-otel-collector | |
run: | | |
TEARDOWN_BEFORE_SETUP=true SUITE=functional make functionaltest |