CLOUDP-237043: Use seggregated secret envs #49
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: E2E tests. | ||
on: | ||
workflow_call: | ||
inputs: | ||
forked: | ||
type: boolean | ||
required: false | ||
default: false | ||
workflow_dispatch: | ||
jobs: | ||
environment: test | ||
compute: | ||
name: "Compute test matrix" | ||
runs-on: ubuntu-latest | ||
outputs: | ||
test_matrix: ${{ steps.test.outputs.matrix }} | ||
steps: | ||
- id: test | ||
name: Compute Test Matrix | ||
run: | | ||
# Note the use of external single quotes to allow for double quotes at inline YAML array | ||
matrix='["v1.28.7-kind"]' | ||
if [ "${{ github.ref }}" == "refs/heads/main" ];then | ||
matrix='["v1.28.7-kind", "v1.30.0-kind"]' | ||
fi | ||
echo "matrix=${matrix}" >> "${GITHUB_OUTPUT}" | ||
cat "${GITHUB_OUTPUT}" | ||
prepare-e2e: | ||
name: Prepare E2E configuration and image | ||
environment: release | ||
runs-on: ubuntu-latest | ||
env: | ||
REPOSITORY: ${{ github.repository_owner }}/mongodb-atlas-kubernetes-operator-prerelease | ||
steps: | ||
- if: ${{ inputs.forked == false }} | ||
name: Check out code | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{github.event.pull_request.head.sha}} | ||
submodules: true | ||
fetch-depth: 0 | ||
- if: ${{ inputs.forked == true }} | ||
name: Check out code | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
ref: ${{github.event.pull_request.head.sha}} | ||
repository: ${{github.event.pull_request.head.repo.full_name}} | ||
fetch-depth: 0 | ||
- name: Prepare tag | ||
id: prepare | ||
uses: ./.github/actions/set-tag | ||
- name: Log in to ghcr.io registry | ||
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin | ||
- name: Build and Push image | ||
uses: ./.github/actions/build-push-image | ||
with: | ||
file: fast.Dockerfile | ||
repository: ghcr.io/${{ env.REPOSITORY }} | ||
version: ${{ steps.prepare.outputs.tag }} | ||
tags: ghcr.io/${{ env.REPOSITORY }}:${{ steps.prepare.outputs.tag }} | ||
platforms: linux/amd64 | ||
push_to_docker: false | ||
forked: ${{ inputs.forked }} | ||
- name: Do preflight-check on test image | ||
uses: ./.github/actions/certify-openshift-images | ||
with: | ||
registry: ghcr.io | ||
registry_password: ${{ secrets.GITHUB_TOKEN }} | ||
repository: ${{ env.REPOSITORY }} | ||
version: ${{ steps.prepare.outputs.tag }} | ||
rhcc_token: ${{ secrets.RH_CERTIFICATION_PYXIS_API_TOKEN }} | ||
rhcc_project: ${{ secrets.RH_CERTIFICATION_OSPID }} | ||
submit: false | ||
prepare-e2e-bundle: | ||
name: Prepare E2E Bundle configuration and image | ||
runs-on: ubuntu-latest | ||
env: | ||
GHCR_REPO: ghcr.io/mongodb/mongodb-atlas-kubernetes-operator-prerelease | ||
GHCR_BUNDLES_REPO: ghcr.io/mongodb/mongodb-atlas-kubernetes-bundles-prerelease | ||
steps: | ||
- if: ${{ inputs.forked == false }} | ||
name: Check out code | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{github.event.pull_request.head.sha}} | ||
submodules: true | ||
fetch-depth: 0 | ||
- if: ${{ inputs.forked == true }} | ||
name: Check out code | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
ref: ${{github.event.pull_request.head.sha}} | ||
repository: ${{github.event.pull_request.head.repo.full_name}} | ||
fetch-depth: 0 | ||
- name: Prepare tag | ||
id: prepare | ||
uses: ./.github/actions/set-tag | ||
- name: Generate configuration for the tests | ||
uses: ./.github/actions/gen-install-scripts | ||
with: | ||
IMAGE_URL: ${{ env.GHCR_REPO }}:${{ steps.prepare.outputs.tag }} | ||
VERSION: ${{ steps.prepare.outputs.tag }} | ||
ENV: dev | ||
- name: Change path for the test | ||
run: | | ||
awk '{gsub(/cloud.mongodb.com/, "cloud-qa.mongodb.com", $0); print}' bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml > tmp && mv tmp bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml | ||
- name: Cache repo files | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
./* | ||
key: ${{ github.sha }} | ||
- name: Prepare docker tag | ||
id: prepare-docker-bundle-tag | ||
run: | | ||
REPOSITORY=${{ env.GHCR_BUNDLES_REPO }} | ||
TAG=${{ steps.prepare.outputs.tag }} | ||
TAGS="${REPOSITORY}:${TAG}" | ||
echo "tags=$TAGS" >> $GITHUB_OUTPUT | ||
- name: Log in to ghcr.io registry | ||
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin | ||
- name: Build and Push image | ||
uses: ./.github/actions/build-push-image | ||
with: | ||
file: fast.Dockerfile | ||
repository: ${{ env.GHCR_BUNDLES_REPO }} | ||
version: ${{ steps.prepare.outputs.tag }} | ||
tags: ${{ env.GHCR_BUNDLES_REPO }}:${{ steps.prepare.outputs.tag }} | ||
platforms: linux/amd64 | ||
push_to_docker: false | ||
forked: ${{ inputs.forked }} | ||
e2e: | ||
name: E2E tests | ||
environment: test | ||
needs: [compute, prepare-e2e, prepare-e2e-bundle] | ||
runs-on: ubuntu-latest | ||
env: | ||
GHCR_REPO: ghcr.io/mongodb/mongodb-atlas-kubernetes-operator-prerelease | ||
GHCR_BUNDLES_REPO: ghcr.io/mongodb/mongodb-atlas-kubernetes-bundles-prerelease | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
k8s: ${{fromJson(needs.compute.outputs.test_matrix)}} | ||
test: | ||
[ | ||
"alert-config", | ||
"auditing", | ||
# "bundle-test", | ||
"cloud-access-role", | ||
"deployment-annotations-ns", | ||
"deployment-ns", | ||
"users", | ||
"users-oidc", | ||
"deployment-wide", | ||
"encryption-at-rest", | ||
"free-tier", | ||
"global-deployment", | ||
"helm-ns", | ||
"helm-update", | ||
"helm-wide", | ||
"integration-ns", | ||
"long-run", | ||
"multinamespaced", | ||
"networkpeering", | ||
"privatelink", | ||
"project-settings", | ||
"serverless-pe", | ||
"x509auth", | ||
"custom-roles", | ||
"teams", | ||
"backup-config", | ||
"datafederation", | ||
"atlas-search-nodes", | ||
"atlas-search-index", | ||
"cache-watch", | ||
"reconcile-all", | ||
"reconcile-one", | ||
"reconcile-two", | ||
"backup-compliance", | ||
] | ||
steps: | ||
- name: Get repo files from cache | ||
id: get-repo-files-from-cache | ||
uses: actions/cache@v4 | ||
with: | ||
path: ./* | ||
key: ${{ github.sha }} | ||
- name: Checkout if cache repo files missed | ||
if: steps.get-repo-files-from-cache.outputs.cache-hit != 'true' | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{github.event.pull_request.head.sha}} | ||
submodules: true | ||
fetch-depth: 0 | ||
- name: Install devbox | ||
uses: jetify-com/devbox-install-action@v0.11.0 | ||
with: | ||
enable-cache: 'true' | ||
- name: Prepare tag | ||
id: prepare | ||
uses: ./.github/actions/set-tag | ||
- name: Set properties | ||
id: properties | ||
run: | | ||
version=$(echo ${{ matrix.k8s }} | awk -F "-" '{print $1}') | ||
platform=$(echo ${{ matrix.k8s }} | awk -F "-" '{print $2}') | ||
echo "k8s_version=$version" >> $GITHUB_OUTPUT | ||
echo "k8s_platform=$platform" >> $GITHUB_OUTPUT | ||
- name: Generate configuration for the tests | ||
uses: ./.github/actions/gen-install-scripts | ||
with: | ||
IMAGE_URL: ${{ env.GHCR_REPO }}:${{ steps.prepare.outputs.tag }} | ||
VERSION: ${{ steps.prepare.outputs.tag }} | ||
ENV: dev | ||
- name: Change path for the test | ||
run: | | ||
awk '{gsub(/cloud.mongodb.com/, "cloud-qa.mongodb.com", $0); print}' bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml > tmp && mv tmp bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml | ||
- name: Create k8s Kind Cluster | ||
if: ${{ steps.properties.outputs.k8s_platform == 'kind' && !env.ACT }} | ||
uses: helm/kind-action@v1.10.0 | ||
with: | ||
version: v0.22.0 | ||
config: test/helper/e2e/config/kind.yaml | ||
node_image: kindest/node:${{ steps.properties.outputs.k8s_version }} | ||
cluster_name: ${{ matrix.test }} | ||
wait: 180s | ||
- name: Print kubectl version | ||
run: | | ||
devbox run -- 'kubectl version' | ||
- name: Print kubectl version | ||
run: | | ||
devbox run -- 'kubectl version' | ||
- name: Install CRDs if needed | ||
if: ${{ !( matrix.test == 'helm-update' || matrix.test == 'helm-wide' || matrix.test == 'helm-ns' || matrix.test == 'bundle-test' ) }} | ||
run: | | ||
devbox run -- 'kubectl apply -f deploy/crds' | ||
- name: Run e2e test | ||
env: | ||
MCLI_PUBLIC_API_KEY: ${{ secrets.ATLAS_PUBLIC_KEY }} | ||
MCLI_PRIVATE_API_KEY: ${{ secrets.ATLAS_PRIVATE_KEY }} | ||
MCLI_ORG_ID: ${{ secrets.ATLAS_ORG_ID}} | ||
MCLI_OPS_MANAGER_URL: "https://cloud-qa.mongodb.com/" | ||
IMAGE_URL: "${{ env.GHCR_REPO }}:${{ steps.prepare.outputs.tag }}" | ||
IMAGE_PULL_SECRET_REGISTRY: ghcr.io | ||
IMAGE_PULL_SECRET_USERNAME: $ | ||
IMAGE_PULL_SECRET_PASSWORD: "${{ secrets.GITHUB_TOKEN }}" | ||
BUNDLE_IMAGE: "${{ env.GHCR_BUNDLES_REPO}}:${{ steps.prepare.outputs.tag }}" | ||
K8S_PLATFORM: "${{ steps.properties.outputs.k8s_platform }}" | ||
K8S_VERSION: "${{ steps.properties.outputs.k8s_version }}" | ||
TEST_NAME: "${{ matrix.test }}" | ||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
AWS_ACCOUNT_ARN_LIST: ${{ secrets.AWS_ACCOUNT_ARN_LIST }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_NEW_TEST }} | ||
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} | ||
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET_NEW_TEST }} | ||
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | ||
GCP_SA_CRED: ${{ secrets.GCP_SA_CRED_NEW_TEST }} | ||
DATADOG_KEY: ${{ secrets.DATADOG_KEY }} | ||
PAGER_DUTY_SERVICE_KEY: ${{ secrets.PAGER_DUTY_SERVICE_KEY }} | ||
run: | | ||
devbox run -- 'helm version; | ||
go version; | ||
cd test/e2e; | ||
# no `long-run`, no `broken` tests. `Long-run` tests run as a separate job | ||
[[ $TEST_NAME == "long-run" ]] && filter="long-run && !broken" || filter="$TEST_NAME && !long-run && !broken" && \ | ||
echo "Running: AKO_E2E_TEST=1 ginkgo --label-filter=\"${filter}\" --timeout 120m --nodes=10 --race --cover --v" && \ | ||
AKO_E2E_TEST=1 ginkgo --output-interceptor-mode=none --label-filter="${filter}" --timeout 120m --nodes=10 --flake-attempts=1 --race --cover --v --coverpkg=github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/...' | ||
- name: Upload operator logs | ||
if: ${{ failure() }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: logs | ||
path: output/** | ||
- name: Upload test results to codecov.io | ||
if: ${{ success() }} | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
files: test/e2e/coverprofile.out | ||
name: ${{ matrix.test }} | ||
verbose: true |