Dragonfly2
150 строк · 5.2 Кб
1name: E2E Test2
3on:4push:5branches: [main, release-*]6paths-ignore: ["**.md", "**.png", "**.jpg", "**.svg", "**/docs/**"]7pull_request:8branches: [main, release-*]9paths-ignore: ["**.md", "**.png", "**.jpg", "**.svg", "**/docs/**"]10schedule:11- cron: '0 4 * * *'12
13env:14KIND_VERSION: v0.12.015CONTAINERD_VERSION: v1.5.216KIND_CONFIG_PATH: test/testdata/kind/config.yaml17DRAGONFLY_CHARTS_PATH: deploy/helm-charts/charts/dragonfly18DRAGONFLY_FILE_SERVER_PATH: test/testdata/k8s/file-server.yaml19DRAGONFLY_PROXY_SERVER_PATH: test/testdata/k8s/proxy.yaml20DRAGONFLY_MINIO_SERVER_PATH: test/testdata/k8s/minio.yaml21
22jobs:23e2e_tests:24runs-on: ubuntu-latest25timeout-minutes: 6026strategy:27matrix:28module:29- "normal"30- "concurent-back-source"31- "grpc-tls"32- "disable-seed-peer"33- "grpc-tls-ipv6"34- "ipv6"35- "split-running-tasks"36- "cache-list-metadata"37include:38- module: normal39charts-config: test/testdata/charts/config.yaml40skip: ""41- module: concurent-back-source42charts-config: test/testdata/charts/config-concurent-back-source.yaml43skip: ""44- module: grpc-tls45charts-config: test/testdata/charts/config-grpc-tls.yaml46skip: ""47- module: disable-seed-peer48charts-config: test/testdata/charts/config-disable-seed-peer.yaml49skip: preheat50- module: ipv651charts-config: test/testdata/charts/config-ipv6.yaml52skip: ""53- module: grpc-tls-ipv654charts-config: test/testdata/charts/config-grpc-tls-ipv6.yaml55skip: ""56- module: split-running-tasks57charts-config: test/testdata/charts/config-split-running-tasks.yaml58skip: ""59- module: cache-list-metadata60charts-config: test/testdata/charts/config-cache-list-metadata.yaml61skip: ""62steps:63- name: Free Disk Space (Ubuntu)64uses: jlumbroso/free-disk-space@main65with:66# this might remove tools that are actually needed,67# if set to "true" but frees about 6 GB68tool-cache: false69
70# all of these default to true, but feel free to set to71# "false" if necessary for your workflow72android: true73dotnet: true74haskell: true75large-packages: true76docker-images: true77swap-storage: true78
79- name: Checkout code80uses: actions/checkout@v481with:82submodules: recursive83
84- name: Install Go85uses: actions/setup-go@v586with:87go-version-file: go.mod88
89- name: Get dependencies90run: |91go install github.com/onsi/ginkgo/v2/ginkgo@v2.12.0
92mkdir -p /tmp/artifact
93
94- name: Setup buildx95uses: docker/setup-buildx-action@v396id: buildx97with:98install: true99
100- name: Setup Kind101uses: helm/kind-action@v1.9.0102with:103version: ${{ env.KIND_VERSION }}104config: ${{ env.KIND_CONFIG_PATH }}105cluster_name: kind106
107- name: Build images108run: |109hack/gen-buildx.sh
110make docker-build docker-build-testing-tools
111make kind-load
112
113- name: Setup dragonfly114run: |115helm install --wait --timeout 10m --dependency-update --create-namespace --namespace dragonfly-system -f ${{ matrix.charts-config }} dragonfly ${{ env.DRAGONFLY_CHARTS_PATH }}
116kubectl apply -f ${{ env.DRAGONFLY_FILE_SERVER_PATH }}
117kubectl apply -f ${{ env.DRAGONFLY_PROXY_SERVER_PATH }}
118kubectl apply -f ${{ env.DRAGONFLY_MINIO_SERVER_PATH }}
119kubectl wait po file-server-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
120kubectl wait po file-server-no-content-length-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
121kubectl wait po proxy-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
122kubectl wait po proxy-1 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
123kubectl wait po proxy-2 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
124kubectl wait po minio-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
125
126- name: Run E2E test127run: |128set -x
129make build-e2e-sha256sum
130make build-e2e-download-grpc-test
131# generate an empty file
132docker exec kind-control-plane touch /tmp/empty-file
133ginkgo -v -r --race --fail-fast --cover --trace --show-node-events --skip=${{ matrix.skip }} test/e2e -- \
134--feature-gates=dfget-range=true,dfget-open-range=true,dfget-empty-file=true,dfget-recursive=true
135cat coverprofile.out >> coverage.txt
136
137- name: Upload coverage to Codecov138uses: codecov/codecov-action@v4139with:140token: ${{ secrets.CODECOV_TOKEN }}141files: ./coverage.txt142flags: e2etests143
144- name: Upload Logs145uses: actions/upload-artifact@v4146if: always()147with:148name: ${{ matrix.module }}-e2e-tests-logs149path: |150/tmp/artifact/**/*.log
151