diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index 24015d6338696..76a48ac7d5df0 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -2,14 +2,16 @@ name: Integration tests on: push: branches: - - 'master' - - 'release-*' - - '!release-1.4' - - '!release-1.5' + - 'sync-*' + # - 'master' + # - 'release-*' + # - '!release-1.4' + # - '!release-1.5' pull_request: branches: - - 'master' - - 'release-*' + - 'sync-*' + # - 'master' + # - 'release-*' env: # Golang version to use across CI steps @@ -31,8 +33,8 @@ jobs: frontend: ${{ steps.filter.outputs.frontend_any_changed }} docs: ${{ steps.filter.outputs.docs_any_changed }} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 # v47.0.1 + - uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 + - uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 id: filter with: # Any file which is not under docs/, ui/ or is not a markdown file is counted as a backend file @@ -55,9 +57,9 @@ jobs: - changes steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Download all Go modules @@ -67,6 +69,7 @@ jobs: run: | go mod tidy git diff --exit-code -- . + build-go: name: Build & cache Go code if: ${{ needs.changes.outputs.backend == 'true' }} @@ -75,13 +78,13 @@ jobs: - changes steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Restore go build cache - uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ~/.cache/go-build key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} @@ -102,16 +105,16 @@ jobs: - changes steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Run golangci-lint uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0 with: - # renovate: datasource=go packageName=github.com/golangci/golangci-lint versioning=regex:^v(?\d+)\.(?\d+)\.(?\d+)?$ - version: v2.5.0 + # renovate: datasource=go packageName=github.com/golangci/golangci-lint/v2 versioning=regex:^v(?\d+)\.(?\d+)\.(?\d+)?$ + version: v2.7.2 args: --verbose test-go: @@ -128,11 +131,11 @@ jobs: - name: Create checkout directory run: mkdir -p ~/go/src/github.com/argoproj - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Create symlink in GOPATH run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Install required packages @@ -152,7 +155,7 @@ jobs: run: | echo "/usr/local/bin" >> $GITHUB_PATH - name: Restore go build cache - uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ~/.cache/go-build key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} @@ -173,7 +176,7 @@ jobs: - name: Run all unit tests run: make test-local - name: Generate test results artifacts - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: test-results path: test-results @@ -192,11 +195,11 @@ jobs: - name: Create checkout directory run: mkdir -p ~/go/src/github.com/argoproj - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Create symlink in GOPATH run: ln -s $(pwd) ~/go/src/github.com/argoproj/argo-cd - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Install required packages @@ -216,7 +219,7 @@ jobs: run: | echo "/usr/local/bin" >> $GITHUB_PATH - name: Restore go build cache - uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ~/.cache/go-build key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} @@ -237,7 +240,7 @@ jobs: - name: Run all unit tests run: make test-race-local - name: Generate test results artifacts - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: race-results path: test-results/ @@ -250,16 +253,15 @@ jobs: - changes steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GOLANG_VERSION }} - name: Create symlink in GOPATH - # generalizing repo name for forks: ${{ github.event.repository.name }} run: | mkdir -p ~/go/src/github.com/argoproj - cp -a ../${{ github.event.repository.name }} ~/go/src/github.com/argoproj + cp -a ../argo-cd ~/go/src/github.com/argoproj - name: Add ~/go/bin to PATH run: | echo "/home/runner/go/bin" >> $GITHUB_PATH @@ -271,14 +273,12 @@ jobs: # We need to vendor go modules for codegen yet go mod download go mod vendor -v - # generalizing repo name for forks: ${{ github.event.repository.name }} - working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} + working-directory: /home/runner/go/src/github.com/argoproj/argo-cd - name: Install toolchain for codegen run: | make install-codegen-tools-local make install-go-tools-local - # generalizing repo name for forks: ${{ github.event.repository.name }} - working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} + working-directory: /home/runner/go/src/github.com/argoproj/argo-cd # We install kustomize in the dist directory - name: Add dist to PATH run: | @@ -289,14 +289,12 @@ jobs: export GOPATH=$(go env GOPATH) git checkout -- go.mod go.sum make codegen-local - # generalizing repo name for forks: ${{ github.event.repository.name }} - working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} + working-directory: /home/runner/go/src/github.com/argoproj/argo-cd - name: Check nothing has changed run: | set -xo pipefail git diff --exit-code -- . ':!go.sum' ':!go.mod' ':!assets/swagger.json' | tee codegen.patch - # generalizing repo name for forks: ${{ github.event.repository.name }} - working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} + working-directory: /home/runner/go/src/github.com/argoproj/argo-cd build-ui: name: Build, test & lint UI code @@ -307,15 +305,15 @@ jobs: - changes steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Setup NodeJS - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # renovate: datasource=node-version packageName=node versioning=node node-version: '22.9.0' - name: Restore node dependency cache id: cache-dependencies - uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ui/node_modules key: ${{ runner.os }}-node-dep-v2-${{ hashFiles('**/yarn.lock') }} @@ -340,10 +338,10 @@ jobs: shellcheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - run: | sudo apt-get install shellcheck - shellcheck -e SC2059 -e SC2154 -e SC2034 -e SC2016 -e SC1091 $(find . -type f -name '*.sh' | grep -v './ui/node_modules') | tee sc.log + shellcheck -e SC2086 -e SC2046 -e SC2068 -e SC2206 -e SC2048 -e SC2059 -e SC2154 -e SC2034 -e SC2016 -e SC2128 -e SC1091 -e SC2207 $(find . -type f -name '*.sh') | tee sc.log test ! -s sc.log analyze: @@ -359,12 +357,12 @@ jobs: sonar_secret: ${{ secrets.SONAR_TOKEN }} steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 with: fetch-depth: 0 - name: Restore node dependency cache id: cache-dependencies - uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ui/node_modules key: ${{ runner.os }}-node-dep-v2-${{ hashFiles('**/yarn.lock') }} @@ -372,12 +370,12 @@ jobs: run: | rm -rf ui/node_modules/argo-ui/node_modules - name: Get e2e code coverage - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: name: e2e-code-coverage path: e2e-code-coverage - name: Get unit test code coverage - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: name: test-results path: test-results @@ -389,14 +387,14 @@ jobs: run: | go tool covdata percent -i=test-results,e2e-code-coverage/applicationset-controller,e2e-code-coverage/repo-server,e2e-code-coverage/app-controller,e2e-code-coverage/commit-server -o test-results/full-coverage.out - name: Upload code coverage information to codecov.io - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 with: files: test-results/full-coverage.out fail_ci_if_error: true env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Upload test results to Codecov - if: github.ref == 'refs/heads/master' && github.event_name == 'push' && github.repository == 'argoproj/argo-cd' + if: startsWith(github.ref, 'refs/heads/sync-') && github.event_name == 'push' && github.repository == 'codefresh-io/argo-cd' uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1 with: file: test-results/junit.xml @@ -406,31 +404,35 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - uses: SonarSource/sonarqube-scan-action@a31c9398be7ace6bbfaf30c0bd5d415f843d45e9 # v7.0.0 - if: env.sonar_secret != '' + uses: SonarSource/sonarqube-scan-action@2500896589ef8f7247069a56136f8dc177c27ccf # v5.2.0 + if: false && env.sonar_secret != '' test-e2e: name: Run end-to-end tests if: ${{ needs.changes.outputs.backend == 'true' }} - runs-on: ${{ github.repository == 'argoproj/argo-cd' && 'oracle-vm-16cpu-64gb-x86-64' || 'ubuntu-22.04' }} + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: # latest: true means that this version mush upload the coverage report to codecov.io # We designate the latest version because we only collect code coverage for that version. k3s: - - version: v1.34.2 - latest: true - version: v1.33.1 - latest: false + latest: true - version: v1.32.1 latest: false - version: v1.31.0 latest: false + - version: v1.30.4 + latest: false needs: - build-go - changes env: + GOPATH: /home/runner/go ARGOCD_FAKE_IN_CLUSTER: 'true' + ARGOCD_SSH_DATA_PATH: '/tmp/argo-e2e/app/config/ssh' + ARGOCD_TLS_DATA_PATH: '/tmp/argo-e2e/app/config/tls' + ARGOCD_E2E_SSH_KNOWN_HOSTS: '../fixture/certs/ssh_known_hosts' ARGOCD_E2E_K3S: 'true' ARGOCD_IN_CI: 'true' ARGOCD_E2E_APISERVER_PORT: '8088' @@ -447,14 +449,11 @@ jobs: swap-storage: false tool-cache: false - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0 - name: Setup Golang - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GOLANG_VERSION }} - - name: Set GOPATH - run: | - echo "GOPATH=$HOME/go" >> $GITHUB_ENV - name: GH actions workaround - Kill XSP4 process run: | sudo pkill mono || true @@ -465,19 +464,19 @@ jobs: set -x curl -sfL https://get.k3s.io | sh - sudo chmod -R a+rw /etc/rancher/k3s - sudo mkdir -p $HOME/.kube && sudo chown -R $(whoami) $HOME/.kube + sudo mkdir -p $HOME/.kube && sudo chown -R runner $HOME/.kube sudo k3s kubectl config view --raw > $HOME/.kube/config - sudo chown $(whoami) $HOME/.kube/config + sudo chown runner $HOME/.kube/config sudo chmod go-r $HOME/.kube/config kubectl version - name: Restore go build cache - uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ~/.cache/go-build key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} - name: Add ~/go/bin to PATH run: | - echo "$HOME/go/bin" >> $GITHUB_PATH + echo "/home/runner/go/bin" >> $GITHUB_PATH - name: Add /usr/local/bin to PATH run: | echo "/usr/local/bin" >> $GITHUB_PATH @@ -499,11 +498,11 @@ jobs: run: | docker pull ghcr.io/dexidp/dex:v2.43.0 docker pull argoproj/argo-cd-ci-builder:v1.0.0 - docker pull redis:8.2.3-alpine + docker pull redis:8.2.2-alpine - name: Create target directory for binaries in the build-process run: | mkdir -p dist - chown $(whoami) dist + chown runner dist - name: Run E2E server and wait for it being available timeout-minutes: 30 run: | @@ -529,13 +528,13 @@ jobs: goreman run stop-all || echo "goreman trouble" sleep 30 - name: Upload e2e coverage report - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: e2e-code-coverage path: /tmp/coverage if: ${{ matrix.k3s.latest }} - name: Upload e2e-server logs - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: e2e-server-k8s${{ matrix.k3s.version }}.log path: /tmp/e2e-server.log diff --git a/Dockerfile b/Dockerfile index fc3eeb64020b6..80cd9e3911ae8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,6 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ unzip \ fcgiwrap \ git \ - git-lfs \ make \ wget \ gcc \ @@ -29,7 +28,8 @@ COPY hack/install.sh hack/tool-versions.sh ./ COPY hack/installers installers RUN ./install.sh helm && \ - INSTALL_PATH=/usr/local/bin ./install.sh kustomize + INSTALL_PATH=/usr/local/bin ./install.sh kustomize && \ + ./install.sh git-lfs #################################################################################################### # Argo CD Base - used as the base for both the release and dev argocd images @@ -51,7 +51,7 @@ RUN groupadd -g $ARGOCD_USER_ID argocd && \ apt-get update && \ apt-get dist-upgrade -y && \ apt-get install -y \ - git git-lfs tini gpg tzdata connect-proxy && \ + git tini gpg tzdata connect-proxy && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* @@ -61,6 +61,7 @@ COPY hack/gpg-wrapper.sh \ /usr/local/bin/ COPY --from=builder /usr/local/bin/helm /usr/local/bin/helm COPY --from=builder /usr/local/bin/kustomize /usr/local/bin/kustomize +COPY --from=builder /usr/local/bin/git-lfs /usr/local/bin/git-lfs # keep uid_entrypoint.sh for backward compatibility RUN ln -s /usr/local/bin/entrypoint.sh /usr/local/bin/uid_entrypoint.sh diff --git a/Dockerfile.tilt b/Dockerfile.tilt index e98057f33cfab..46d7bb05cb413 100644 --- a/Dockerfile.tilt +++ b/Dockerfile.tilt @@ -28,7 +28,8 @@ COPY hack/install.sh hack/tool-versions.sh ./ COPY hack/installers installers RUN ./install.sh helm && \ - INSTALL_PATH=/usr/local/bin ./install.sh kustomize + INSTALL_PATH=/usr/local/bin ./install.sh kustomize && \ + ./install.sh git-lfs COPY hack/gpg-wrapper.sh \ hack/git-verify-wrapper.sh \ diff --git a/hack/installers/checksums/git-lfs-linux-amd64-v3.7.1.tar.gz.sha256 b/hack/installers/checksums/git-lfs-linux-amd64-v3.7.1.tar.gz.sha256 new file mode 100644 index 0000000000000..96c21820b6dbd --- /dev/null +++ b/hack/installers/checksums/git-lfs-linux-amd64-v3.7.1.tar.gz.sha256 @@ -0,0 +1 @@ +1c0b6ee5200ca708c5cebebb18fdeb0e1c98f1af5c1a9cba205a4c0ab5a5ec08 git-lfs-linux-amd64-v3.7.1.tar.gz diff --git a/hack/installers/checksums/git-lfs-linux-arm64-v3.7.1.tar.gz.sha256 b/hack/installers/checksums/git-lfs-linux-arm64-v3.7.1.tar.gz.sha256 new file mode 100644 index 0000000000000..327275ee29bba --- /dev/null +++ b/hack/installers/checksums/git-lfs-linux-arm64-v3.7.1.tar.gz.sha256 @@ -0,0 +1 @@ +73a9c90eeb4312133a63c3eaee0c38c019ea7bfa0953d174809d25b18588dd8d git-lfs-linux-arm64-v3.7.1.tar.gz diff --git a/hack/installers/install-git-lfs.sh b/hack/installers/install-git-lfs.sh new file mode 100755 index 0000000000000..90bbce22a19b2 --- /dev/null +++ b/hack/installers/install-git-lfs.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -eux -o pipefail + +. "$(dirname "$0")"/../tool-versions.sh + +export TARGET_FILE=git-lfs-${INSTALL_OS}-${ARCHITECTURE}-v${git_lfs_version}.tar.gz + +[ -e "$DOWNLOADS/${TARGET_FILE}" ] || curl -sLf --retry 3 -o "$DOWNLOADS/${TARGET_FILE}" "https://github.com/git-lfs/git-lfs/releases/download/v${git_lfs_version}/${TARGET_FILE}" +"$(dirname "$0")"/compare-chksum.sh +mkdir -p /tmp/git-lfs && tar -C /tmp/git-lfs --strip-components=1 -xzf "$DOWNLOADS/${TARGET_FILE}" +sudo install -m 0755 "/tmp/git-lfs/git-lfs" "$BIN/git-lfs" +git-lfs version diff --git a/hack/tool-versions.sh b/hack/tool-versions.sh index 4f1c67b864460..84bec7b77cb55 100644 --- a/hack/tool-versions.sh +++ b/hack/tool-versions.sh @@ -15,3 +15,4 @@ helm3_version=3.19.4 kustomize5_version=5.8.1 protoc_version=29.3 oras_version=1.2.0 +git_lfs_version=3.7.1 diff --git a/test/container/Dockerfile b/test/container/Dockerfile index d23fd4b8e5c1a..17bf09034ea82 100644 --- a/test/container/Dockerfile +++ b/test/container/Dockerfile @@ -63,6 +63,7 @@ RUN ./install.sh helm && \ ./install.sh codegen-go-tools && \ ./install.sh lint-tools && \ ./install.sh gotestsum && \ + ./install.sh git-lfs && \ go install github.com/mattn/goreman@latest && \ go install github.com/kisielk/godepgraph@latest && \ go install github.com/jstemmer/go-junit-report@latest && \