Dragonfly2

Форк
0
150 строк · 5.2 Кб
1
name: E2E Test
2

3
on:
4
  push:
5
    branches: [main, release-*]
6
    paths-ignore: ["**.md", "**.png", "**.jpg", "**.svg", "**/docs/**"]
7
  pull_request:
8
    branches: [main, release-*]
9
    paths-ignore: ["**.md", "**.png", "**.jpg", "**.svg", "**/docs/**"]
10
  schedule:
11
    - cron: '0 4 * * *'
12

13
env:
14
  KIND_VERSION: v0.12.0
15
  CONTAINERD_VERSION: v1.5.2
16
  KIND_CONFIG_PATH: test/testdata/kind/config.yaml
17
  DRAGONFLY_CHARTS_PATH: deploy/helm-charts/charts/dragonfly
18
  DRAGONFLY_FILE_SERVER_PATH: test/testdata/k8s/file-server.yaml
19
  DRAGONFLY_PROXY_SERVER_PATH: test/testdata/k8s/proxy.yaml
20
  DRAGONFLY_MINIO_SERVER_PATH: test/testdata/k8s/minio.yaml
21

22
jobs:
23
  e2e_tests:
24
    runs-on: ubuntu-latest
25
    timeout-minutes: 60
26
    strategy:
27
      matrix:
28
        module:
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"
37
        include:
38
          - module: normal
39
            charts-config: test/testdata/charts/config.yaml
40
            skip: ""
41
          - module: concurent-back-source
42
            charts-config: test/testdata/charts/config-concurent-back-source.yaml
43
            skip: ""
44
          - module: grpc-tls
45
            charts-config: test/testdata/charts/config-grpc-tls.yaml
46
            skip: ""
47
          - module: disable-seed-peer
48
            charts-config: test/testdata/charts/config-disable-seed-peer.yaml
49
            skip: preheat
50
          - module: ipv6
51
            charts-config: test/testdata/charts/config-ipv6.yaml
52
            skip: ""
53
          - module: grpc-tls-ipv6
54
            charts-config: test/testdata/charts/config-grpc-tls-ipv6.yaml
55
            skip: ""
56
          - module: split-running-tasks
57
            charts-config: test/testdata/charts/config-split-running-tasks.yaml
58
            skip: ""
59
          - module: cache-list-metadata
60
            charts-config: test/testdata/charts/config-cache-list-metadata.yaml
61
            skip: ""
62
    steps:
63
      - name: Free Disk Space (Ubuntu)
64
        uses: jlumbroso/free-disk-space@main
65
        with:
66
          # this might remove tools that are actually needed,
67
          # if set to "true" but frees about 6 GB
68
          tool-cache: false
69

70
          # all of these default to true, but feel free to set to
71
          # "false" if necessary for your workflow
72
          android: true
73
          dotnet: true
74
          haskell: true
75
          large-packages: true
76
          docker-images: true
77
          swap-storage: true
78

79
      - name: Checkout code
80
        uses: actions/checkout@v4
81
        with:
82
          submodules: recursive
83

84
      - name: Install Go
85
        uses: actions/setup-go@v5
86
        with:
87
          go-version-file: go.mod
88

89
      - name: Get dependencies
90
        run: |
91
          go install github.com/onsi/ginkgo/v2/ginkgo@v2.12.0
92
          mkdir -p /tmp/artifact
93

94
      - name: Setup buildx
95
        uses: docker/setup-buildx-action@v3
96
        id: buildx
97
        with:
98
          install: true
99

100
      - name: Setup Kind
101
        uses: helm/kind-action@v1.9.0
102
        with:
103
          version: ${{ env.KIND_VERSION }}
104
          config: ${{ env.KIND_CONFIG_PATH }}
105
          cluster_name: kind
106

107
      - name: Build images
108
        run: |
109
          hack/gen-buildx.sh
110
          make docker-build docker-build-testing-tools
111
          make kind-load
112

113
      - name: Setup dragonfly
114
        run: |
115
          helm install --wait --timeout 10m --dependency-update --create-namespace --namespace dragonfly-system -f ${{ matrix.charts-config }} dragonfly ${{ env.DRAGONFLY_CHARTS_PATH }}
116
          kubectl apply -f ${{ env.DRAGONFLY_FILE_SERVER_PATH }}
117
          kubectl apply -f ${{ env.DRAGONFLY_PROXY_SERVER_PATH }}
118
          kubectl apply -f ${{ env.DRAGONFLY_MINIO_SERVER_PATH }}
119
          kubectl wait po file-server-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
120
          kubectl wait po file-server-no-content-length-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
121
          kubectl wait po proxy-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
122
          kubectl wait po proxy-1 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
123
          kubectl wait po proxy-2 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
124
          kubectl wait po minio-0 --namespace dragonfly-e2e --for=condition=ready --timeout=10m
125

126
      - name: Run E2E test
127
        run: |
128
          set -x
129
          make build-e2e-sha256sum
130
          make build-e2e-download-grpc-test
131
          # generate an empty file
132
          docker exec kind-control-plane touch /tmp/empty-file
133
          ginkgo -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
135
          cat coverprofile.out >> coverage.txt
136

137
      - name: Upload coverage to Codecov
138
        uses: codecov/codecov-action@v4
139
        with:
140
          token: ${{ secrets.CODECOV_TOKEN }}
141
          files: ./coverage.txt
142
          flags: e2etests
143

144
      - name: Upload Logs
145
        uses: actions/upload-artifact@v4
146
        if: always()
147
        with:
148
          name: ${{ matrix.module }}-e2e-tests-logs
149
          path: |
150
            /tmp/artifact/**/*.log
151

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.