Skip to content

Revert strategy matrix changes to have more flexibility #189

Revert strategy matrix changes to have more flexibility

Revert strategy matrix changes to have more flexibility #189

Workflow file for this run

---
name: Proxy Testing
on:
pull_request:
branches:
- main
schedule:
- cron: "0 9 * * 1"
workflow_dispatch:
inputs:
rancher_version:
description: "Rancher version"
rancher_chart_version:
description: "Rancher chart version"
run_all_versions:
description: "Run all supported versions if manually triggered"
required: false
default: false
type: boolean
workflow_call:
inputs:
rancher_version:
description: "Rancher tag version provided from check-rancher-tag workflow"
required: true
type: string
rancher_chart_version:
description: "Rancher chart version provided from check-rancher-tag workflow"
required: true
type: string
permissions:
id-token: write
contents: read
env:
CLOUD_PROVIDER_VERSION: "5.95.0"
HOSTNAME_PREFIX: "tfp-proxy"
LOCALS_PROVIDER_VERSION: "${{ vars.LOCALS_PROVIDER_VERSION }}"
PACKAGE: "proxy"
RKE_PROVIDER_VERSION: "${{ vars.RKE_PROVIDER_VERSION }}"
TEST_SUITE: "^TestTfpProxyProvisioningTestSuite$"
TIMEOUT: "5h"
jobs:
head:
if: |
github.event_name == 'schedule' ||
github.event.inputs.run_all_versions == 'true' ||
(github.event_name == 'workflow_dispatch' && startsWith(github.event.inputs.rancher_version, 'head'))
name: head
runs-on: ubuntu-latest
environment: latest
env:
RANCHER2_PROVIDER_VERSION: "${{ vars.RANCHER2_PROVIDER_VERSION_2_13 }}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.TFP_IAM_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Get AWS credentials from Secrets Manager
uses: aws-actions/aws-secretsmanager-get-secrets@v2
with:
secret-ids: |
AWS_ACCESS_KEY, ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_KEY, ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: "Fetch and Set DockerHub Credentials"
uses: rancher-eio/read-vault-secrets@main
with:
secrets: |
secret/data/github/repo/${{ github.repository }}/dockerhub/org-token/credentials username | DOCKERHUB_USERNAME ;
secret/data/github/repo/${{ github.repository }}/dockerhub/org-token/credentials password | DOCKERHUB_PASSWORD
- name: Mask Dockerhub Credentials
run: |
echo "::add-mask::${{ env.DOCKERHUB_USERNAME }}"
echo "::add-mask::${{ env.DOCKERHUB_PASSWORD }}"
- name: Whitelist Runner IP
uses: ./.github/actions/whitelist-runner-ip
with:
prefix-list-id: ${{ secrets.AWS_MANAGED_PREFIX_LIST_ID }}
region: "${{ secrets.AWS_REGION }}"
- name: Set up SSH Keys
uses: ./.github/actions/setup-ssh-keys
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
ssh-private-key-name: ${{ secrets.SSH_PRIVATE_KEY_NAME }}
windows-ssh-private-key: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY }}
windows-ssh-private-key-name: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY_NAME }}
- name: Uniquify hostname prefix
uses: ./.github/actions/uniquify-hostname
- name: Set Rancher version
uses: ./.github/actions/set-env-var
with:
key: RANCHER_VERSION
value: |
${{
github.event.inputs.rancher_version ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.rancher_version) ||
(github.event_name == 'schedule' && vars.RANCHER_VERSION_HEAD) ||
(github.event.inputs.run_all_versions == 'true' && vars.RANCHER_VERSION_HEAD)
}}
- name: Set Rancher chart version
uses: ./.github/actions/set-env-var
with:
key: RANCHER_CHART_VERSION
value: |
${{
github.event.inputs.rancher_chart_version ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.rancher_chart_version) ||
(github.event_name == 'schedule' && vars.RELEASED_RANCHER_CHART_VERSION_2_12) ||
(github.event.inputs.run_all_versions == 'true' && vars.RELEASED_RANCHER_CHART_VERSION_2_12)
}}
- name: Set Rancher repo
uses: ./.github/actions/set-rancher-repo
with:
rancher-version: ${{ env.RANCHER_VERSION }}
fallback-repo: ${{ secrets.RANCHER_REPO }}
- name: Get Qase ID
id: get-qase-id
uses: ./.github/actions/get-qase-id
with:
triggered_tag: ${{ github.event.inputs.rancher_version }}
qase_recurring_id: "${{ vars.QASE_RECURRING_TEST_RUN_ID_2_13 }}"
- name: Create config.yaml
run: |
cat > config.yaml <<EOF
rancher:
host: "${{ env.HOSTNAME_PREFIX }}.${{ secrets.AWS_ROUTE_53_ZONE }}"
adminPassword: "${{ secrets.RANCHER_ADMIN_PASSWORD }}"
insecure: true
cleanup: true
terraform:
cni: "${{ secrets.CNI }}"
defaultClusterRoleForProjectMembers: "true"
enableNetworkPolicy: false
provider: "${{ vars.PROVIDER_AMAZON }}"
privateKeyPath: "${{ secrets.SSH_PRIVATE_KEY_PATH }}"
resourcePrefix: "${{ env.HOSTNAME_PREFIX }}"
windowsPrivateKeyPath: "${{ secrets.WINDOWS_SSH_PRIVATE_KEY_PATH }}"
proxy:
proxyBastion: ""
privateRegistries:
url: "${{ secrets.PRIVATE_REGISTRY_URL }}"
username: "${{ env.DOCKERHUB_USERNAME }}"
password: "${{ env.DOCKERHUB_PASSWORD }}"
insecure: true
authConfigSecretName: "${{ secrets.AUTH_CONFIG_SECRET_NAME }}"
mirrorHostname: "${{ secrets.PRIVATE_REGISTRY_MIRROR_HOSTNAME }}"
mirrorEndpoint: "${{ secrets.PRIVATE_REGISTRY_MIRROR_ENDPOINT }}"
awsCredentials:
awsAccessKey: "$AWS_ACCESS_KEY"
awsSecretKey: "$AWS_SECRET_KEY"
awsConfig:
ami: "${{ secrets.AWS_AMI }}"
awsKeyName: "${{ secrets.SSH_PRIVATE_KEY_NAME }}"
awsInstanceType: "${{ vars.AWS_INSTANCE_TYPE }}"
awsVolumeType: "${{ vars.AWS_VOLUME_TYPE }}"
region: "${{ secrets.AWS_REGION }}"
awsSecurityGroups: [${{ secrets.AWS_SECURITY_GROUPS }}]
awsSecurityGroupNames: [${{ secrets.AWS_SECURITY_GROUP_NAMES }}]
awsSubnetID: "${{ secrets.AWS_SUBNET_ID }}"
awsVpcID: "${{ secrets.AWS_VPC_ID }}"
awsZoneLetter: "${{ vars.AWS_ZONE_LETTER }}"
awsRootSize: ${{ vars.AWS_ROOT_SIZE }}
awsRoute53Zone: "${{ secrets.AWS_ROUTE_53_ZONE }}"
awsUser: "${{ secrets.AWS_USER }}"
sshConnectionType: "${{ vars.SSH_CONNECTION_TYPE }}"
timeout: "${{ vars.TIMEOUT }}"
windowsAWSUser: "${{ secrets.AWS_WINDOWS_USER }}"
windows2019AMI: "${{ secrets.WINDOWS_2019_AMI }}"
windows2022AMI: "${{ secrets.WINDOWS_2022_AMI }}"
windows2019Password: "${{ secrets.AWS_WINDOWS_2019_PASSWORD }}"
windows2022Password: "${{ secrets.AWS_WINDOWS_2022_PASSWORD }}"
windowsInstanceType: "${{ vars.AWS_WINDOWS_INSTANCE_TYPE }}"
windowsKeyName: "${{ secrets.WINDOWS_SSH_PRIVATE_KEY_NAME }}"
ipAddressType: "${{ vars.IP_ADDRESS_TYPE }}"
loadBalancerType: "${{ vars.LOAD_BALANCER_TYPE }}"
targetType: "${{ vars.TARGET_TYPE }}"
standalone:
bootstrapPassword: "${{ secrets.RANCHER_ADMIN_PASSWORD }}"
certManagerVersion: "${{ vars.CERT_MANAGER_VERSION }}"
certType: "${{ vars.CERT_TYPE }}"
chartVersion: "${{ env.RANCHER_CHART_VERSION }}"
osUser: "${{ secrets.OS_USER }}"
osGroup: "${{ secrets.OS_GROUP }}"
rancherChartRepository: "${{ secrets.RANCHER_HELM_CHART_URL }}"
rancherHostname: "${{ env.HOSTNAME_PREFIX }}.${{ secrets.AWS_ROUTE_53_ZONE }}"
rancherImage: "${{ secrets.RANCHER_IMAGE }}"
rancherTagVersion: "${{ env.RANCHER_VERSION }}"
registryUsername: "${{ secrets.PRIVATE_REGISTRY_USERNAME }}"
registryPassword: "${{ secrets.PRIVATE_REGISTRY_PASSWORD }}"
repo: "${{ env.RANCHER_REPO }}"
rke2Version: "${{ vars.RKE2_VERSION_2_12 }}"
standaloneRegistry:
registryName: "${{ secrets.REGISTRY_NAME }}"
registryPassword: "${{ secrets.REGISTRY_PASSWORD }}"
registryUsername: "${{ secrets.REGISTRY_USERNAME }}"
terratest:
pathToRepo: "${{ secrets.PATH_TO_REPO }}"
etcdCount: ${{ vars.ETCD_COUNT }}
controlPlaneCount: ${{ vars.CP_COUNT }}
workerCount: ${{ vars.WORKER_COUNT }}
windowsNodeCount: ${{ vars.WINDOWS_NODE_COUNT }}
EOF
- name: Export CATTLE_TEST_CONFIG
run: echo "CATTLE_TEST_CONFIG=${{ github.workspace }}/config.yaml" >> $GITHUB_ENV
shell: bash
- name: Set up Go environment
uses: actions/setup-go@v5
with:
go-version-file: "./go.mod"
- name: Build Packages
run: ./.github/scripts/build-packages.sh
- name: Install gotestsum
run: go install gotest.tools/gotestsum@latest
- name: Set up Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: "${{ vars.TERRAFORM_VERSION }}"
terraform_wrapper: false
- name: Setup Rancher2 Provider if RC is present
if: contains(env.RANCHER2_PROVIDER_VERSION, '-rc')
run: /home/runner/${{ secrets.PATH_TO_REPO }}/scripts/setup-provider.sh rancher2 v${{ env.RANCHER2_PROVIDER_VERSION }}
shell: bash
- name: Run Proxy Test Suite
uses: ./.github/actions/run-test-suite
with:
package: ${{ env.PACKAGE }}
path-to-repo: ${{ secrets.PATH_TO_REPO }}
test-suite: ${{ env.TEST_SUITE }}
timeout: ${{ env.TIMEOUT }}
- name: Refresh AWS credentials
if: always()
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.TFP_IAM_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Revoke Runner IP
if: always()
uses: ./.github/actions/revoke-runner-ip
with:
prefix-list-id: ${{ secrets.AWS_MANAGED_PREFIX_LIST_ID }}
region: "${{ secrets.AWS_REGION }}"
- name: Set job status output
if: always()
run: echo "job_status=${{ job.status }}" >> $GITHUB_OUTPUT
id: set-job-status
- name: Reporting Results to Qase
if: always()
uses: ./.github/actions/report-to-qase
with:
qase-test-run-id: ${{ steps.get-qase-id.outputs.id }}
qase-automation-token: ${{ secrets.QASE_TOKEN }}
- name: Reporting Results to Slack
if: always()
uses: ./.github/actions/report-to-slack
with:
job-status: ${{ steps.set-job-status.outputs.job_status }}
slack-channel: ${{ secrets.SLACK_CHANNEL }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
v2-12:
if: |
github.event_name == 'schedule' ||
github.event.inputs.run_all_versions == 'true' ||
(github.event_name == 'workflow_dispatch' && startsWith(github.event.inputs.rancher_version, 'v2.12')) && contains(github.event.inputs.rancher_version, '-alpha') ||
(github.event_name == 'workflow_call' && startsWith(inputs.rancher_version, 'v2.12.')) && contains(inputs.rancher_version, '-alpha')
name: ${{ github.event.inputs.rancher_version }}
runs-on: ubuntu-latest
environment: latest
env:
RANCHER2_PROVIDER_VERSION: "${{ vars.RANCHER2_PROVIDER_VERSION_2_12 }}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.TFP_IAM_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Get AWS credentials from Secrets Manager
uses: aws-actions/aws-secretsmanager-get-secrets@v2
with:
secret-ids: |
AWS_ACCESS_KEY, ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_KEY, ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: "Fetch and Set DockerHub Credentials"
uses: rancher-eio/read-vault-secrets@main
with:
secrets: |
secret/data/github/repo/${{ github.repository }}/dockerhub/org-token/credentials username | DOCKERHUB_USERNAME ;
secret/data/github/repo/${{ github.repository }}/dockerhub/org-token/credentials password | DOCKERHUB_PASSWORD
- name: Mask Dockerhub Credentials
run: |
echo "::add-mask::${{ env.DOCKERHUB_USERNAME }}"
echo "::add-mask::${{ env.DOCKERHUB_PASSWORD }}"
- name: Whitelist Runner IP
uses: ./.github/actions/whitelist-runner-ip
with:
prefix-list-id: ${{ secrets.AWS_MANAGED_PREFIX_LIST_ID }}
region: "${{ secrets.AWS_REGION }}"
- name: Set up SSH Keys
uses: ./.github/actions/setup-ssh-keys
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
ssh-private-key-name: ${{ secrets.SSH_PRIVATE_KEY_NAME }}
windows-ssh-private-key: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY }}
windows-ssh-private-key-name: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY_NAME }}
- name: Uniquify hostname prefix
uses: ./.github/actions/uniquify-hostname
- name: Set Rancher version
uses: ./.github/actions/set-env-var
with:
key: RANCHER_VERSION
value: |
${{
github.event.inputs.rancher_version ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.rancher_version) ||
(github.event_name == 'schedule' && vars.RANCHER_VERSION_2_12_HEAD) ||
(github.event.inputs.run_all_versions == 'true' && vars.RANCHER_VERSION_2_12_HEAD)
}}
- name: Set Rancher chart version
uses: ./.github/actions/set-env-var
with:
key: RANCHER_CHART_VERSION
value: |
${{
github.event.inputs.rancher_chart_version ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.rancher_chart_version) ||
(github.event_name == 'schedule' && vars.RELEASED_RANCHER_CHART_VERSION_2_12) ||
(github.event.inputs.run_all_versions == 'true' && vars.RELEASED_RANCHER_CHART_VERSION_2_12)
}}
- name: Set Rancher repo
uses: ./.github/actions/set-rancher-repo
with:
rancher-version: ${{ env.RANCHER_VERSION }}
fallback-repo: ${{ secrets.RANCHER_REPO }}
- name: Get Qase ID
id: get-qase-id
uses: ./.github/actions/get-qase-id
with:
triggered_tag: ${{ github.event.inputs.rancher_version }}
qase_recurring_id: "${{ vars.QASE_RECURRING_TEST_RUN_ID_2_12 }}"
- name: Create config.yaml
run: |
cat > config.yaml <<EOF
rancher:
host: "${{ env.HOSTNAME_PREFIX }}.${{ secrets.AWS_ROUTE_53_ZONE }}"
adminPassword: "${{ secrets.RANCHER_ADMIN_PASSWORD }}"
insecure: true
cleanup: true
terraform:
cni: "${{ secrets.CNI }}"
defaultClusterRoleForProjectMembers: "true"
enableNetworkPolicy: false
provider: "${{ vars.PROVIDER_AMAZON }}"
privateKeyPath: "${{ secrets.SSH_PRIVATE_KEY_PATH }}"
resourcePrefix: "${{ env.HOSTNAME_PREFIX }}"
windowsPrivateKeyPath: "${{ secrets.WINDOWS_SSH_PRIVATE_KEY_PATH }}"
proxy:
proxyBastion: ""
privateRegistries:
url: "${{ secrets.PRIVATE_REGISTRY_URL }}"
username: "${{ env.DOCKERHUB_USERNAME }}"
password: "${{ env.DOCKERHUB_PASSWORD }}"
insecure: true
authConfigSecretName: "${{ secrets.AUTH_CONFIG_SECRET_NAME }}"
mirrorHostname: "${{ secrets.PRIVATE_REGISTRY_MIRROR_HOSTNAME }}"
mirrorEndpoint: "${{ secrets.PRIVATE_REGISTRY_MIRROR_ENDPOINT }}"
awsCredentials:
awsAccessKey: "$AWS_ACCESS_KEY"
awsSecretKey: "$AWS_SECRET_KEY"
awsConfig:
ami: "${{ secrets.AWS_AMI }}"
awsKeyName: "${{ secrets.SSH_PRIVATE_KEY_NAME }}"
awsInstanceType: "${{ vars.AWS_INSTANCE_TYPE }}"
awsVolumeType: "${{ vars.AWS_VOLUME_TYPE }}"
region: "${{ secrets.AWS_REGION }}"
awsSecurityGroups: [${{ secrets.AWS_SECURITY_GROUPS }}]
awsSecurityGroupNames: [${{ secrets.AWS_SECURITY_GROUP_NAMES }}]
awsSubnetID: "${{ secrets.AWS_SUBNET_ID }}"
awsVpcID: "${{ secrets.AWS_VPC_ID }}"
awsZoneLetter: "${{ vars.AWS_ZONE_LETTER }}"
awsRootSize: ${{ vars.AWS_ROOT_SIZE }}
awsRoute53Zone: "${{ secrets.AWS_ROUTE_53_ZONE }}"
awsUser: "${{ secrets.AWS_USER }}"
sshConnectionType: "${{ vars.SSH_CONNECTION_TYPE }}"
timeout: "${{ vars.TIMEOUT }}"
windowsAWSUser: "${{ secrets.AWS_WINDOWS_USER }}"
windows2019AMI: "${{ secrets.WINDOWS_2019_AMI }}"
windows2022AMI: "${{ secrets.WINDOWS_2022_AMI }}"
windows2019Password: "${{ secrets.AWS_WINDOWS_2019_PASSWORD }}"
windows2022Password: "${{ secrets.AWS_WINDOWS_2022_PASSWORD }}"
windowsInstanceType: "${{ vars.AWS_WINDOWS_INSTANCE_TYPE }}"
windowsKeyName: "${{ secrets.WINDOWS_SSH_PRIVATE_KEY_NAME }}"
ipAddressType: "${{ vars.IP_ADDRESS_TYPE }}"
loadBalancerType: "${{ vars.LOAD_BALANCER_TYPE }}"
targetType: "${{ vars.TARGET_TYPE }}"
standalone:
bootstrapPassword: "${{ secrets.RANCHER_ADMIN_PASSWORD }}"
certManagerVersion: "${{ vars.CERT_MANAGER_VERSION }}"
certType: "${{ vars.CERT_TYPE }}"
chartVersion: "${{ env.RANCHER_CHART_VERSION }}"
osUser: "${{ secrets.OS_USER }}"
osGroup: "${{ secrets.OS_GROUP }}"
rancherChartRepository: "${{ secrets.RANCHER_HELM_CHART_URL }}"
rancherHostname: "${{ env.HOSTNAME_PREFIX }}.${{ secrets.AWS_ROUTE_53_ZONE }}"
rancherImage: "${{ secrets.RANCHER_IMAGE }}"
rancherTagVersion: "${{ env.RANCHER_VERSION }}"
registryUsername: "${{ secrets.PRIVATE_REGISTRY_USERNAME }}"
registryPassword: "${{ secrets.PRIVATE_REGISTRY_PASSWORD }}"
repo: "${{ env.RANCHER_REPO }}"
rke2Version: "${{ vars.RKE2_VERSION_2_12 }}"
standaloneRegistry:
registryName: "${{ secrets.REGISTRY_NAME }}"
registryPassword: "${{ secrets.REGISTRY_PASSWORD }}"
registryUsername: "${{ secrets.REGISTRY_USERNAME }}"
terratest:
pathToRepo: "${{ secrets.PATH_TO_REPO }}"
etcdCount: ${{ vars.ETCD_COUNT }}
controlPlaneCount: ${{ vars.CP_COUNT }}
workerCount: ${{ vars.WORKER_COUNT }}
windowsNodeCount: ${{ vars.WINDOWS_NODE_COUNT }}
EOF
- name: Export CATTLE_TEST_CONFIG
run: echo "CATTLE_TEST_CONFIG=${{ github.workspace }}/config.yaml" >> $GITHUB_ENV
shell: bash
- name: Set up Go environment
uses: actions/setup-go@v5
with:
go-version-file: "./go.mod"
- name: Build Packages
run: ./.github/scripts/build-packages.sh
- name: Install gotestsum
run: go install gotest.tools/gotestsum@latest
- name: Set up Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: "${{ vars.TERRAFORM_VERSION }}"
terraform_wrapper: false
- name: Setup Rancher2 Provider if RC is present
if: contains(env.RANCHER2_PROVIDER_VERSION, '-rc')
run: /home/runner/${{ secrets.PATH_TO_REPO }}/scripts/setup-provider.sh rancher2 v${{ env.RANCHER2_PROVIDER_VERSION }}
shell: bash
- name: Run Proxy Test Suite
uses: ./.github/actions/run-test-suite
with:
package: ${{ env.PACKAGE }}
path-to-repo: ${{ secrets.PATH_TO_REPO }}
test-suite: ${{ env.TEST_SUITE }}
timeout: ${{ env.TIMEOUT }}
- name: Refresh AWS credentials
if: always()
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.TFP_IAM_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Revoke Runner IP
if: always()
uses: ./.github/actions/revoke-runner-ip
with:
prefix-list-id: ${{ secrets.AWS_MANAGED_PREFIX_LIST_ID }}
region: "${{ secrets.AWS_REGION }}"

Check failure on line 518 in .github/workflows/proxy-test.yaml

View workflow run for this annotation

GitHub Actions / .github/workflows/proxy-test.yaml

Invalid workflow file

You have an error in your yaml syntax on line 518
- name: Set job status output
if: always()
run: echo "job_status=${{ job.status }}" >> $GITHUB_OUTPUT
id: set-job-status
- name: Reporting Results to Qase
if: always()
uses: ./.github/actions/report-to-qase
with:
qase-test-run-id: ${{ steps.get-qase-id.outputs.id }}
qase-automation-token: ${{ secrets.QASE_TOKEN }}
- name: Reporting Results to Slack
if: always()
uses: ./.github/actions/report-to-slack
with:
job-status: ${{ steps.set-job-status.outputs.job_status }}
slack-channel: ${{ secrets.SLACK_CHANNEL }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
v2-11:
if: |
github.event_name == 'schedule' ||
github.event.inputs.run_all_versions == 'true' ||
(github.event_name == 'workflow_dispatch' && startsWith(github.event.inputs.rancher_version, 'v2.11')) && contains(github.event.inputs.rancher_version, '-alpha') ||
(github.event_name == 'workflow_call' && startsWith(inputs.rancher_version, 'v2.11.')) && contains(inputs.rancher_version, '-alpha')
name: ${{ github.event.inputs.rancher_version }}
runs-on: ubuntu-latest
environment: staging
env:
RANCHER2_PROVIDER_VERSION: "${{ vars.RANCHER2_PROVIDER_VERSION_2_11 }}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.TFP_IAM_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Get AWS credentials from Secrets Manager
uses: aws-actions/aws-secretsmanager-get-secrets@v2
with:
secret-ids: |
AWS_ACCESS_KEY, ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_KEY, ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: "Fetch and Set DockerHub Credentials"
uses: rancher-eio/read-vault-secrets@main
with:
secrets: |
secret/data/github/repo/${{ github.repository }}/dockerhub/org-token/credentials username | DOCKERHUB_USERNAME ;
secret/data/github/repo/${{ github.repository }}/dockerhub/org-token/credentials password | DOCKERHUB_PASSWORD
- name: Mask Dockerhub Credentials
run: |
echo "::add-mask::${{ env.DOCKERHUB_USERNAME }}"
echo "::add-mask::${{ env.DOCKERHUB_PASSWORD }}"
- name: Whitelist Runner IP
uses: ./.github/actions/whitelist-runner-ip
with:
prefix-list-id: ${{ secrets.AWS_MANAGED_PREFIX_LIST_ID_PRIME }}
region: "${{ secrets.AWS_REGION }}"
- name: Set up SSH Keys
uses: ./.github/actions/setup-ssh-keys
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
ssh-private-key-name: ${{ secrets.SSH_PRIVATE_KEY_NAME }}
windows-ssh-private-key: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY }}
windows-ssh-private-key-name: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY_NAME }}
- name: Uniquify hostname prefix
uses: ./.github/actions/uniquify-hostname
- name: Set Rancher version
uses: ./.github/actions/set-env-var
with:
key: RANCHER_VERSION
value: |
${{
github.event.inputs.rancher_version ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.rancher_version) ||
(github.event_name == 'schedule' && vars.RANCHER_VERSION_2_11_HEAD) ||
(github.event.inputs.run_all_versions == 'true' && vars.RANCHER_VERSION_2_11_HEAD)
}}
- name: Set Rancher chart version
uses: ./.github/actions/set-env-var
with:
key: RANCHER_CHART_VERSION
value: |
${{
github.event.inputs.rancher_chart_version ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.rancher_chart_version) ||
(github.event_name == 'schedule' && vars.RELEASED_RANCHER_CHART_VERSION_2_11) ||
(github.event.inputs.run_all_versions == 'true' && vars.RELEASED_RANCHER_CHART_VERSION_2_11)
}}
- name: Set Rancher repo
uses: ./.github/actions/set-rancher-repo
with:
rancher-version: ${{ env.RANCHER_VERSION }}
fallback-repo: ${{ secrets.RANCHER_REPO }}
is-prime: true
- name: Set Rancher chart url
uses: ./.github/actions/set-rancher-chart-url
with:
rancher-repo: ${{ env.RANCHER_REPO }}
staging-chart-url: ${{ secrets.STAGING_RANCHER_HELM_CHART_URL }}
fallback-chart-url: ${{ secrets.RANCHER_HELM_CHART_URL }}
- name: Get Qase ID
id: get-qase-id
uses: ./.github/actions/get-qase-id
with:
triggered_tag: ${{ github.event.inputs.rancher_version }}
qase_recurring_id: "${{ vars.QASE_RECURRING_TEST_RUN_ID_2_11 }}"
- name: Create config.yaml
run: |
cat > config.yaml <<EOF
rancher:
host: "${{ env.HOSTNAME_PREFIX }}.${{ secrets.AWS_ROUTE_53_ZONE }}"
adminPassword: "${{ secrets.RANCHER_ADMIN_PASSWORD }}"
insecure: true
cleanup: true
terraform:
cni: "${{ secrets.CNI }}"
defaultClusterRoleForProjectMembers: "true"
enableNetworkPolicy: false
provider: "${{ vars.PROVIDER_AMAZON }}"
privateKeyPath: "${{ secrets.SSH_PRIVATE_KEY_PATH }}"
resourcePrefix: "${{ env.HOSTNAME_PREFIX }}"
windowsPrivateKeyPath: "${{ secrets.WINDOWS_SSH_PRIVATE_KEY_PATH }}"
proxy:
proxyBastion: ""
privateRegistries:
url: "${{ secrets.PRIVATE_REGISTRY_URL }}"
username: "${{ env.DOCKERHUB_USERNAME }}"
password: "${{ env.DOCKERHUB_PASSWORD }}"
insecure: true
authConfigSecretName: "${{ secrets.AUTH_CONFIG_SECRET_NAME }}"
mirrorHostname: "${{ secrets.PRIVATE_REGISTRY_MIRROR_HOSTNAME }}"
mirrorEndpoint: "${{ secrets.PRIVATE_REGISTRY_MIRROR_ENDPOINT }}"
awsCredentials:
awsAccessKey: "$AWS_ACCESS_KEY"
awsSecretKey: "$AWS_SECRET_KEY"
awsConfig:
ami: "${{ secrets.AWS_AMI }}"
awsKeyName: "${{ secrets.SSH_PRIVATE_KEY_NAME }}"
awsInstanceType: "${{ vars.AWS_INSTANCE_TYPE }}"
awsVolumeType: "${{ vars.AWS_VOLUME_TYPE }}"
region: "${{ secrets.AWS_REGION }}"
awsSecurityGroups: [${{ secrets.AWS_SECURITY_GROUPS_PRIME }}]
awsSecurityGroupNames: [${{ secrets.AWS_SECURITY_GROUP_NAMES_PRIME }}]
awsSubnetID: "${{ secrets.AWS_SUBNET_ID }}"
awsVpcID: "${{ secrets.AWS_VPC_ID }}"
awsZoneLetter: "${{ vars.AWS_ZONE_LETTER }}"
awsRootSize: ${{ vars.AWS_ROOT_SIZE }}
awsRoute53Zone: "${{ secrets.AWS_ROUTE_53_ZONE }}"
awsUser: "${{ secrets.AWS_USER }}"
sshConnectionType: "${{ vars.SSH_CONNECTION_TYPE }}"
timeout: "${{ vars.TIMEOUT }}"
windowsAWSUser: "${{ secrets.AWS_WINDOWS_USER }}"
windows2019AMI: "${{ secrets.WINDOWS_2019_AMI }}"
windows2022AMI: "${{ secrets.WINDOWS_2022_AMI }}"
windows2019Password: "${{ secrets.AWS_WINDOWS_2019_PASSWORD }}"
windows2022Password: "${{ secrets.AWS_WINDOWS_2022_PASSWORD }}"
windowsInstanceType: "${{ vars.AWS_WINDOWS_INSTANCE_TYPE }}"
windowsKeyName: "${{ secrets.WINDOWS_SSH_PRIVATE_KEY_NAME }}"
ipAddressType: "${{ vars.IP_ADDRESS_TYPE }}"
loadBalancerType: "${{ vars.LOAD_BALANCER_TYPE }}"
targetType: "${{ vars.TARGET_TYPE }}"
standalone:
bootstrapPassword: "${{ secrets.RANCHER_ADMIN_PASSWORD }}"
certManagerVersion: "${{ vars.CERT_MANAGER_VERSION }}"
certType: "${{ vars.CERT_TYPE }}"
chartVersion: "${{ env.RANCHER_CHART_VERSION }}"
osUser: "${{ secrets.OS_USER }}"
osGroup: "${{ secrets.OS_GROUP }}"
rancherAgentImage: "${{ secrets.RANCHER_AGENT_IMAGE }}"
rancherChartRepository: "${{ env.RANCHER_HELM_CHART_URL }}"
rancherHostname: "${{ env.HOSTNAME_PREFIX }}.${{ secrets.AWS_ROUTE_53_ZONE }}"
rancherImage: "${{ secrets.RANCHER_IMAGE }}"
rancherTagVersion: "${{ env.RANCHER_VERSION }}"
registryUsername: "${{ secrets.PRIVATE_REGISTRY_USERNAME }}"
registryPassword: "${{ secrets.PRIVATE_REGISTRY_PASSWORD }}"
repo: "${{ env.RANCHER_REPO }}"
rke2Version: "${{ vars.RKE2_VERSION_2_11 }}"
standaloneRegistry:
registryName: "${{ secrets.REGISTRY_NAME }}"
registryPassword: "${{ secrets.REGISTRY_PASSWORD }}"
registryUsername: "${{ secrets.REGISTRY_USERNAME }}"
terratest:
pathToRepo: "${{ secrets.PATH_TO_REPO }}"
etcdCount: ${{ vars.ETCD_COUNT }}
controlPlaneCount: ${{ vars.CP_COUNT }}
workerCount: ${{ vars.WORKER_COUNT }}
windowsNodeCount: ${{ vars.WINDOWS_NODE_COUNT }}
EOF
- name: Export CATTLE_TEST_CONFIG
run: echo "CATTLE_TEST_CONFIG=${{ github.workspace }}/config.yaml" >> $GITHUB_ENV
shell: bash
- name: Set up Go environment
uses: actions/setup-go@v5
with:
go-version-file: "./go.mod"
- name: Build Packages
run: ./.github/scripts/build-packages.sh
- name: Install gotestsum
run: go install gotest.tools/gotestsum@latest
- name: Set up Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: ${{ vars.TERRAFORM_VERSION }}
terraform_wrapper: false
- name: Setup Rancher2 Provider if RC is present
if: contains(env.RANCHER2_PROVIDER_VERSION, '-rc')
run: /home/runner/${{ secrets.PATH_TO_REPO }}/scripts/setup-provider.sh rancher2 v${{ env.RANCHER2_PROVIDER_VERSION }}
shell: bash
- name: Run Proxy Test Suite
uses: ./.github/actions/run-test-suite
with:
package: ${{ env.PACKAGE }}
path-to-repo: ${{ secrets.PATH_TO_REPO }}
test-suite: ${{ env.TEST_SUITE }}
timeout: ${{ env.TIMEOUT }}
- name: Refresh AWS credentials
if: always()
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.TFP_IAM_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Revoke Runner IP
if: always()
uses: ./.github/actions/revoke-runner-ip
with:
prefix-list-id: ${{ secrets.AWS_MANAGED_PREFIX_LIST_ID_PRIME }}
region: "${{ secrets.AWS_REGION }}"
- name: Set job status output
if: always()
run: echo "job_status=${{ job.status }}" >> $GITHUB_OUTPUT
id: set-job-status
- name: Reporting Results to Qase
if: always()
uses: ./.github/actions/report-to-qase
with:
qase-test-run-id: ${{ steps.get-qase-id.outputs.id }}
qase-automation-token: ${{ secrets.QASE_TOKEN }}
- name: Reporting Results to Slack
if: always()
uses: ./.github/actions/report-to-slack
with:
job-status: ${{ steps.set-job-status.outputs.job_status }}
slack-channel: ${{ secrets.SLACK_CHANNEL }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}