docker/windows: build two version of the rust image

Build 2 images with different rust toolchains so we can test
both the latest release, as well as the minimum supported
compiler version and catch regressions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-ci/-/merge_requests/405>
This commit is contained in:
Jordan Petridis 2021-05-14 11:51:35 +03:00 committed by Jordan Petridіs
parent 5c536f2601
commit 3d9ddab209
2 changed files with 27 additions and 11 deletions

View file

@ -6,7 +6,7 @@ ARG BASE_IMAGE="inavlid.gstreamer.freedesktop.org/invalid"
FROM $BASE_IMAGE FROM $BASE_IMAGE
ARG DEFAULT_BRANCH="master" ARG DEFAULT_BRANCH="master"
ARG RUST_VERSION="1.52.1" ARG RUST_VERSION="invalid"
COPY install_gst.ps1 C:\ COPY install_gst.ps1 C:\
RUN C:\install_gst.ps1 RUN C:\install_gst.ps1

View file

@ -28,7 +28,7 @@ variables:
MANIFEST_TAG: '2020-10-22.0' MANIFEST_TAG: '2020-10-22.0'
TEST_MANIFEST_TAG: '2020-10-22.0' TEST_MANIFEST_TAG: '2020-10-22.0'
INDENT_TAG: '2020-10-22.0' INDENT_TAG: '2020-10-22.0'
WINDOWS_TAG: "2021-07-12.0" WINDOWS_TAG: "2021-08-24.0"
GST_UPSTREAM_REPO: 'gstreamer/gst-ci' GST_UPSTREAM_REPO: 'gstreamer/gst-ci'
@ -50,8 +50,15 @@ variables:
INDENT_IMAGE: "$CI_REGISTRY_IMAGE/$INDENT_AMD64_SUFFIX:$INDENT_TAG-$GST_UPSTREAM_BRANCH" INDENT_IMAGE: "$CI_REGISTRY_IMAGE/$INDENT_AMD64_SUFFIX:$INDENT_TAG-$GST_UPSTREAM_BRANCH"
WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH" WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$GST_UPSTREAM_REPO/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH" WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$GST_UPSTREAM_REPO/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
WINDOWS_RUST_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_RUST_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
WINDOWS_RUST_UPSTREAM_IMAGE: "$CI_REGISTRY/$GST_UPSTREAM_REPO/$WINDOWS_RUST_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH" RUST_MINIMUM_VERSION: '1.54.0'
RUST_LATEST_VERSION: '1.54.0'
WINDOWS_RUST_MINIMUM_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_RUST_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH-rust-$RUST_MINIMUM_VERSION"
WINDOWS_RUST_MINIMUM_UPSTREAM_IMAGE: "$CI_REGISTRY/$GST_UPSTREAM_REPO/$WINDOWS_RUST_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH-rust-$RUST_MINIMUM_VERSION"
WINDOWS_RUST_LATEST_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_RUST_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH-rust-$RUST_LATEST_VERSION"
WINDOWS_RUST_LATEST_UPSTREAM_IMAGE: "$CI_REGISTRY/$GST_UPSTREAM_REPO/$WINDOWS_RUST_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH-rust-$RUST_LATEST_VERSION"
# Current windows image doesn't seem to be able to spawn procceses for reason, # Current windows image doesn't seem to be able to spawn procceses for reason,
# use a different image until this is debuged # use a different image until this is debuged
@ -346,8 +353,6 @@ windows amd64 docker:
stage: "build docker" stage: "build docker"
variables: variables:
GIT_STRATEGY: fetch GIT_STRATEGY: fetch
REPO_SUFFIX: "$WINDOWS_AMD64_SUFFIX"
TAG: "$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
# Unlike the buildah/linux jobs, this file # Unlike the buildah/linux jobs, this file
# needs to be relative to docker/windows/ subdir # needs to be relative to docker/windows/ subdir
@ -375,15 +380,13 @@ windows amd64 docker:
Exit 1 Exit 1
} }
windows rust amd64 docker: .windows rust docker build:
stage: 'build docker stage 2' stage: 'build docker stage 2'
needs: needs:
- job: 'windows amd64 docker' - job: 'windows amd64 docker'
artifacts: false artifacts: false
variables: variables:
GIT_STRATEGY: 'fetch' GIT_STRATEGY: 'fetch'
REPO_SUFFIX: "$WINDOWS_RUST_AMD64_SUFFIX"
TAG: "$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
# Unlike the buildah/linux jobs, this file # Unlike the buildah/linux jobs, this file
# needs to be relative to docker/windows/ subdir # needs to be relative to docker/windows/ subdir
@ -398,19 +401,32 @@ windows rust amd64 docker:
- '1809' - '1809'
script: script:
# We need to pass an array and to resolve the env vars, so we can't use a variable: # We need to pass an array and to resolve the env vars, so we can't use a variable:
- $DOCKER_BUILD_ARGS = @("--build-arg", "DEFAULT_BRANCH=$GST_UPSTREAM_BRANCH", "--build-arg", "BASE_IMAGE=$WINDOWS_IMAGE") - $DOCKER_BUILD_ARGS = @("--build-arg", "DEFAULT_BRANCH=$GST_UPSTREAM_BRANCH", "--build-arg", "BASE_IMAGE=$WINDOWS_IMAGE", "--build-arg", "RUST_VERSION=$RUST_VERSION")
- $env:WINDOWS_CONTAINER_SCRIPT_PATH = "$env:CI_PROJECT_DIR\container.ps1" - $env:WINDOWS_CONTAINER_SCRIPT_PATH = "$env:CI_PROJECT_DIR\container.ps1"
- echo "Fetching $env:WINDOWS_CONTAINER_SCRIPT_URL" - echo "Fetching $env:WINDOWS_CONTAINER_SCRIPT_URL"
- Invoke-WebRequest -Uri $env:WINDOWS_CONTAINER_SCRIPT_URL -OutFile $env:WINDOWS_CONTAINER_SCRIPT_PATH - Invoke-WebRequest -Uri $env:WINDOWS_CONTAINER_SCRIPT_URL -OutFile $env:WINDOWS_CONTAINER_SCRIPT_PATH
- "& $env:WINDOWS_CONTAINER_SCRIPT_PATH $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_RUST_IMAGE $WINDOWS_RUST_UPSTREAM_IMAGE $DOCKERFILE" - "& $env:WINDOWS_CONTAINER_SCRIPT_PATH $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $RUST_IMAGE $RUST_UPSTREAM_IMAGE $DOCKERFILE"
- | - |
if (!($?)) { if (!($?)) {
echo "Failed to build the image" echo "Failed to build the image"
Exit 1 Exit 1
} }
windows rust amd64 docker latest stable:
extends: '.windows rust docker build'
variables:
RUST_IMAGE: !reference [variables, "WINDOWS_RUST_LATEST_IMAGE"]
RUST_UPSTREAM_IMAGE: !reference [variables, "WINDOWS_RUST_LATEST_UPSTREAM_IMAGE"]
RUST_VERSION: !reference [variables, "RUST_LATEST_VERSION"]
windows rust amd64 docker minimum supported version:
extends: '.windows rust docker build'
variables:
RUST_IMAGE: !reference [variables, "WINDOWS_RUST_MINIMUM_IMAGE"]
RUST_UPSTREAM_IMAGE: !reference [variables, "WINDOWS_RUST_MINIMUM_UPSTREAM_IMAGE"]
RUST_VERSION: !reference [variables, "RUST_MINIMUM_VERSION"]
# #
# Job to create the manifest.xml to used for our builds # Job to create the manifest.xml to used for our builds