This avoids manual intervention when upstream ovn-kubernetes changes its dependency versions.
Signed-off-by: Patryk Diak <[email protected]> Co-authored-by: Patryk Diak <[email protected]> Signed-off-by: Dumitru Ceara <[email protected]> --- .ci/ovn-kubernetes/Dockerfile | 16 +++++++------- .ci/ovn-kubernetes/prepare.sh | 11 ++++++++++ .github/workflows/ovn-kubernetes.yml | 31 +++++++++++++++++----------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/.ci/ovn-kubernetes/Dockerfile b/.ci/ovn-kubernetes/Dockerfile index 01be205429..12f8190172 100644 --- a/.ci/ovn-kubernetes/Dockerfile +++ b/.ci/ovn-kubernetes/Dockerfile @@ -1,5 +1,5 @@ ARG OVNKUBE_COMMIT=master -ARG LIBOVSDB_COMMIT=a6a173993830 +ARG GO_VERSION FROM fedora:37 AS ovnbuilder @@ -34,12 +34,9 @@ RUN rm rpm/rpmbuild/RPMS/x86_64/*debug* RUN rm rpm/rpmbuild/RPMS/x86_64/*docker* # Build ovn-kubernetes -FROM golang:1.18 as ovnkubebuilder +ARG GO_VERSION +FROM golang:$GO_VERSION as ovnkubebuilder ARG OVNKUBE_COMMIT -ARG LIBOVSDB_COMMIT - -# Get a working version of libovsdb (for modelgen). -RUN GO111MODULE=on go install github.com/ovn-org/libovsdb/cmd/modelgen@${LIBOVSDB_COMMIT} # Clone OVN Kubernetes and build the binary based on the commit passed as argument WORKDIR /root @@ -52,9 +49,14 @@ RUN git checkout ${OVNKUBE_COMMIT} && git log -n 1 RUN mkdir -p /tmp/ovn/.ci/ovn-kubernetes COPY .ci/ovn-kubernetes /tmp/ovn/.ci/ovn-kubernetes WORKDIR /tmp/ovn -RUN .ci/ovn-kubernetes/prepare.sh /root/ovn-kubernetes +RUN .ci/ovn-kubernetes/prepare.sh /root/ovn-kubernetes /dev/null WORKDIR /root/ovn-kubernetes/go-controller +# Get a working version of libovsdb (for modelgen). +RUN GO111MODULE=on go install github.com/ovn-org/libovsdb/cmd/modelgen@$( \ + go list -mod=mod -m -f '{{ .Version }}' github.com/ovn-org/libovsdb \ +) + # Make sure we use the OVN NB/SB schema from the local code. COPY --from=ovnbuilder /tmp/ovn/ovn-nb.ovsschema pkg/nbdb/ovn-nb.ovsschema COPY --from=ovnbuilder /tmp/ovn/ovn-sb.ovsschema pkg/sbdb/ovn-sb.ovsschema diff --git a/.ci/ovn-kubernetes/prepare.sh b/.ci/ovn-kubernetes/prepare.sh index 8fc9652afd..e0cc722ede 100755 --- a/.ci/ovn-kubernetes/prepare.sh +++ b/.ci/ovn-kubernetes/prepare.sh @@ -3,13 +3,24 @@ set -ev ovnk8s_path=$1 +env_path=$2 topdir=$PWD +function extract_ci_var() { + local name=$1 + + grep "$name:" .github/workflows/test.yml | awk '{print $2}' | tr -d '"' +} + pushd ${ovnk8s_path} # Add here any custom operations that need to performed on the # ovn-kubernetes cloned repo, e.g., custom patches. +# Set up the right GO_VERSION and K8S_VERSION. +echo "GO_VERSION=$(extract_ci_var GO_VERSION)" >> $env_path +echo "K8S_VERSION=$(extract_ci_var K8S_VERSION)" >> $env_path + # git apply --allow-empty is too new so not all git versions from major # distros support it, just check if the custom patch file is not empty # before applying it. diff --git a/.github/workflows/ovn-kubernetes.yml b/.github/workflows/ovn-kubernetes.yml index b8cacf873e..36d2db8492 100644 --- a/.github/workflows/ovn-kubernetes.yml +++ b/.github/workflows/ovn-kubernetes.yml @@ -13,10 +13,7 @@ concurrency: cancel-in-progress: true env: - GO_VERSION: "1.18.4" - K8S_VERSION: v1.24.0 OVNKUBE_COMMIT: "master" - LIBOVSDB_COMMIT: "a6a173993830" KIND_CLUSTER_NAME: ovn KIND_INSTALL_INGRESS: true KIND_ALLOW_SYSTEM_WRITES: true @@ -39,10 +36,20 @@ jobs: with: submodules: recursive + - name: Check out ovn-kubernetes + uses: actions/checkout@v3 + with: + path: src/github.com/ovn-org/ovn-kubernetes + repository: ovn-org/ovn-kubernetes + + - name: Prepare + run: | + .ci/ovn-kubernetes/prepare.sh src/github.com/ovn-org/ovn-kubernetes $GITHUB_ENV + - name: Build ovn-kubernetes container run: | docker build --build-arg OVNKUBE_COMMIT=${{ env.OVNKUBE_COMMIT }} \ - --build-arg LIBOVSDB_COMMIT=${{ env.LIBOVSDB_COMMIT }} \ + --build-arg GO_VERSION=${{ env.GO_VERSION }} \ --squash -t ovn-daemonset-f:dev -f .ci/ovn-kubernetes/Dockerfile . mkdir /tmp/_output docker save ovn-daemonset-f:dev > /tmp/_output/image.tar @@ -91,12 +98,6 @@ jobs: - name: Free up disk space run: sudo eatmydata apt-get remove --auto-remove -y aspnetcore-* dotnet-* libmono-* mono-* msbuild php-* php7* ghc-* zulu-* - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} - id: go - - name: Check out ovn uses: actions/checkout@v3 @@ -108,9 +109,15 @@ jobs: - name: Prepare run: | - .ci/ovn-kubernetes/prepare.sh src/github.com/ovn-org/ovn-kubernetes + .ci/ovn-kubernetes/prepare.sh src/github.com/ovn-org/ovn-kubernetes $GITHUB_ENV + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + id: go - - name: Set up environment + - name: Set up GOPATH run: | export GOPATH=$(go env GOPATH) echo "GOPATH=$GOPATH" >> $GITHUB_ENV -- 2.31.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
