Run sig-network test with Antrea v2.0.0 and K8s v1.29.0 #45
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: Manually run upstream conformance test on Linux | |
run-name: Run ${{ inputs.test-suite }} test with Antrea ${{ inputs.antrea-version }} and K8s ${{ inputs.k8s-version }} | |
on: | |
workflow_dispatch: | |
inputs: | |
antrea-version: | |
description: The Antrea version to test. It could be a SHA-1 value, a branch, or a tag (e.g. a7b012b, release-1.12, v1.12.0). The main branch will be used if empty. | |
required: false | |
antrea-values: | |
description: The Antrea Chart values. Multiple values can be separated with commas (e.g. key1=val1,key2=val2). Default configuration will be tested if empty. | |
required: false | |
antrea-image-distro: | |
description: The Antrea image distribution to test. It could be ubuntu or ubi. | |
type: choice | |
options: | |
- ubuntu | |
- ubi | |
default: ubuntu | |
k8s-version: | |
description: The K8s version (e.g. v1.27.1) to test. Kind's default K8s version will be used if empty. | |
required: false | |
test-suite: | |
description: The test suite to run. Check run-k8s-e2e-tests.sh for which test cases these values represent. | |
type: choice | |
options: | |
- whole-conformance | |
- conformance | |
- network-policy | |
- sig-network | |
- all | |
default: whole-conformance | |
required: true | |
always-upload-logs: | |
description: Always upload logs regardless of the test result. | |
type: boolean | |
default: false | |
jobs: | |
test: | |
name: Run tests | |
runs-on: [ubuntu-latest] | |
steps: | |
- name: Free disk space | |
# https://github.com/actions/virtual-environments/issues/709 | |
run: | | |
sudo apt-get clean | |
df -h | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.antrea-version }} | |
fetch-depth: 0 | |
show-progress: false | |
- name: Check if it is a released version | |
id: check-release | |
run: | | |
if git show-ref --tags --verify --quiet refs/tags/${{ inputs.antrea-version }}; then | |
echo "released=true" >> $GITHUB_OUTPUT | |
echo "image-tag=${{ inputs.antrea-version }}" >> $GITHUB_OUTPUT | |
else | |
echo "released=false" >> $GITHUB_OUTPUT | |
echo "image-tag=latest" >> $GITHUB_OUTPUT | |
fi | |
- name: Build Antrea image if required | |
if: ${{ steps.check-release.outputs.released == 'false' }} | |
run: | | |
./hack/build-antrea-linux-all.sh --pull --distro ${{ inputs.antrea-image-distro }} | |
- name: Install Kind | |
run: | | |
KIND_VERSION=$(head -n1 ./ci/kind/version || echo v0.20.0) | |
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-$(uname)-amd64 | |
chmod +x ./kind | |
sudo mv kind /usr/local/bin | |
- name: Create K8s cluster | |
run: | | |
# If an image does not exist (unified vs split), a warning will be printed, but the script | |
# execution will not fail. | |
images=() | |
images+=(antrea/antrea-controller-${{ inputs.antrea-image-distro }}:${{ steps.check-release.outputs.image-tag }}) | |
images+=(antrea/antrea-agent-${{ inputs.antrea-image-distro }}:${{ steps.check-release.outputs.image-tag }}) | |
images+=(antrea/antrea-${{ inputs.antrea-image-distro }}:${{ steps.check-release.outputs.image-tag }}) | |
./ci/kind/kind-setup.sh create kind \ | |
--k8s-version "${{ inputs.k8s-version }}" \ | |
--images "${images[*]}" | |
- name: Install Antrea | |
run: | | |
helm_args=() | |
helm_repo="./build/charts/antrea" | |
if [ ${{ steps.check-release.outputs.released }} == 'true' ]; then | |
helm_repo="antrea/antrea" | |
helm_args+=(--version "${{ inputs.antrea-version }}") | |
helm repo add antrea https://charts.antrea.io | |
helm repo update | |
fi | |
if helm show values ${helm_repo} | grep -q '^controllerImage:'; then | |
helm_args+=(--set controllerImage.repository="antrea/antrea-controller-${{ inputs.antrea-image-distro }}") | |
helm_args+=(--set agentImage.repository="antrea/antrea-agent-${{ inputs.antrea-image-distro }}") | |
else | |
helm_args+=(--set image.repository="antrea/antrea-${{ inputs.antrea-image-distro }}") | |
fi | |
helm install --namespace kube-system antrea ${helm_repo} \ | |
--set "${{ inputs.antrea-values }}" \ | |
"${helm_args[@]}" | |
kubectl rollout status -n kube-system ds/antrea-agent --timeout=5m | |
- name: Run e2e tests | |
run: | | |
./ci/run-k8s-e2e-tests.sh "--e2e-${{ inputs.test-suite }}" | |
- name: Upload test log | |
uses: actions/upload-artifact@v4 | |
if: ${{ failure() || inputs.always-upload-logs }} | |
with: | |
name: sonobuoy.tar.gz | |
path: "*_sonobuoy_*.tar.gz" | |
retention-days: 7 |