name: E2EUpgrade on: workflow_dispatch: inputs: from_git_ref: type: string required: true region: type: choice options: - "us-east-2" - "us-west-2" default: "us-east-2" to_git_ref: type: string k8s_version: type: choice options: - "1.25" - "1.26" - "1.27" - "1.28" - "1.29" - "1.30" - "1.31" default: "1.31" cleanup: required: true default: true type: boolean workflow_call: inputs: from_git_ref: type: string required: true to_git_ref: type: string region: type: string default: "us-east-2" k8s_version: type: string default: "1.31" cleanup: required: true type: boolean workflow_trigger: type: string secrets: SLACK_WEBHOOK_URL: required: true jobs: run-suite: permissions: id-token: write # aws-actions/configure-aws-credentials@v4.0.1 statuses: write # ./.github/actions/commit-status/start name: suite-upgrade runs-on: ubuntu-latest steps: # This additional checkout can be removed when the commit status action is added to the from_git_ref version of Karpenter - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: ref: ${{ inputs.to_git_ref }} - if: always() && github.event_name == 'workflow_run' uses: ./.github/actions/commit-status/start with: name: ${{ github.workflow }} (${{ inputs.k8s_version }}) / e2e (Upgrade) git_ref: ${{ inputs.to_git_ref }} - uses: ./.github/actions/install-deps - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: ref: ${{ inputs.from_git_ref }} - name: configure aws credentials uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 with: role-to-assume: arn:aws:iam::${{ vars.CI_ACCOUNT_ID }}:role/${{ vars.CI_ROLE_NAME }} aws-region: ${{ inputs.region }} role-duration-seconds: 21600 - id: generate-cluster-name name: generate cluster name run: | CLUSTER_NAME="upgrade-$RANDOM$RANDOM" echo "Using cluster name \"$CLUSTER_NAME\"" echo CLUSTER_NAME="$CLUSTER_NAME" >> "$GITHUB_OUTPUT" - name: setup eks cluster '${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }}' uses: ./.github/actions/e2e/setup-cluster with: account_id: ${{ vars.CI_ACCOUNT_ID }} role: ${{ vars.CI_ROLE_NAME }} region: ${{ inputs.region }} cluster_name: ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} k8s_version: ${{ inputs.k8s_version }} eksctl_version: v0.191.0 ip_family: IPv4 # Set the value to IPv6 if IPv6 suite, else IPv4 git_ref: ${{ inputs.from_git_ref }} ecr_account_id: ${{ vars.SNAPSHOT_ACCOUNT_ID }} ecr_region: ${{ vars.SNAPSHOT_REGION }} prometheus_workspace_id: ${{ vars.WORKSPACE_ID }} prometheus_region: ${{ vars.PROMETHEUS_REGION }} - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: ref: ${{ inputs.to_git_ref }} - name: upgrade crds uses: ./.github/actions/e2e/upgrade-crds with: account_id: ${{ vars.CI_ACCOUNT_ID }} role: ${{ vars.CI_ROLE_NAME }} region: ${{ inputs.region }} cluster_name: ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} git_ref: ${{ inputs.to_git_ref }} - name: upgrade eks cluster '${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }}' uses: ./.github/actions/e2e/setup-cluster with: account_id: ${{ vars.CI_ACCOUNT_ID }} role: ${{ vars.CI_ROLE_NAME }} region: ${{ inputs.region }} cluster_name: ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} k8s_version: ${{ inputs.k8s_version }} eksctl_version: v0.191.0 ip_family: IPv4 # Set the value to IPv6 if IPv6 suite, else IPv4 git_ref: ${{ inputs.to_git_ref }} ecr_account_id: ${{ vars.SNAPSHOT_ACCOUNT_ID }} ecr_region: ${{ vars.SNAPSHOT_REGION }} prometheus_workspace_id: ${{ vars.WORKSPACE_ID }} prometheus_region: ${{ vars.PROMETHEUS_REGION }} - name: run the Upgrade test suite run: | aws eks update-kubeconfig --name ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} CLUSTER_NAME=${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} INTERRUPTION_QUEUE=${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} CLUSTER_ENDPOINT="$(aws eks describe-cluster --name ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} --query "cluster.endpoint" --output text)" TEST_SUITE="Integration" make e2etests - name: notify slack of success or failure uses: ./.github/actions/e2e/slack/notify if: (success() || failure()) && github.event_name != 'workflow_run' && inputs.workflow_trigger != 'versionCompatibility' with: cluster_name: ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} url: ${{ secrets.SLACK_WEBHOOK_URL }} suite: Upgrade git_ref: ${{ inputs.to_git_ref }} - name: dump logs on failure uses: ./.github/actions/e2e/dump-logs if: failure() || cancelled() with: account_id: ${{ vars.CI_ACCOUNT_ID }} role: ${{ vars.CI_ROLE_NAME }} region: ${{ inputs.region }} cluster_name: ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} - name: cleanup karpenter and cluster '${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }}' resources uses: ./.github/actions/e2e/cleanup if: always() && inputs.cleanup with: account_id: ${{ vars.CI_ACCOUNT_ID }} role: ${{ vars.CI_ROLE_NAME }} region: ${{ inputs.region }} cluster_name: ${{ steps.generate-cluster-name.outputs.CLUSTER_NAME }} git_ref: ${{ inputs.to_git_ref }} eksctl_version: v0.191.0 - if: always() && github.event_name == 'workflow_run' uses: ./.github/actions/commit-status/end with: name: ${{ github.workflow }} (${{ inputs.k8s_version }}) / e2e (Upgrade) git_ref: ${{ inputs.to_git_ref }}