Skip to content
代码片段 群组 项目
提交 06e288a4 编辑于 作者: Andrejs Cunskis's avatar Andrejs Cunskis 提交者: Rémy Coutable
浏览文件

Build arm64 variant of qa images

上级 79761cbc
No related branches found
No related tags found
无相关合并请求
.base-image-build: .base-image-build:
extends: .use-kaniko extends: .use-kaniko
variables: variables:
GIT_LFS_SKIP_SMUDGE: 1 GIT_LFS_SKIP_SMUDGE: 1 # disable pulling objects from lfs
retry: 2
.base-image-build-buildx:
extends: .use-buildx
variables:
GIT_LFS_SKIP_SMUDGE: 1 # disable pulling objects from lfs
retry: 2 retry: 2
# This image is used by: # This image is used by:
...@@ -10,12 +16,12 @@ ...@@ -10,12 +16,12 @@
# See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#testing-code-in-merge-requests for more details. # See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#testing-code-in-merge-requests for more details.
build-qa-image: build-qa-image:
extends: extends:
- .base-image-build - .base-image-build-buildx
- .build-images:rules:build-qa-image - .build-images:rules:build-qa-image
stage: build-images stage: build-images
needs: [] needs: []
script: script:
- ./scripts/build_qa_image - run_timed_command "scripts/build_qa_image"
# This image is used by: # This image is used by:
# - The `CNG` pipelines (via the `review-build-cng` job): https://gitlab.com/gitlab-org/build/CNG/-/blob/cfc67136d711e1c8c409bf8e57427a644393da2f/.gitlab-ci.yml#L335 # - The `CNG` pipelines (via the `review-build-cng` job): https://gitlab.com/gitlab-org/build/CNG/-/blob/cfc67136d711e1c8c409bf8e57427a644393da2f/.gitlab-ci.yml#L335
......
...@@ -348,3 +348,20 @@ ...@@ -348,3 +348,20 @@
tags: tags:
# See https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/7019 for tag descriptions # See https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/7019 for tag descriptions
- gitlab-org-docker - gitlab-org-docker
.use-buildx:
extends: .use-docker-in-docker
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-slim:docker-${DOCKER_VERSION}-buildx-0.8
variables:
QEMU_IMAGE: tonistiigi/binfmt:qemu-v7.0.0
before_script:
- source scripts/utils.sh
- echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
- |
if [[ "${ARCH}" =~ arm64 ]]; then
echo -e "\033[1;33mInstalling latest qemu emulators\033[0m"
docker pull -q ${QEMU_IMAGE};
docker run --rm --privileged ${QEMU_IMAGE} --uninstall qemu-*;
docker run --rm --privileged ${QEMU_IMAGE} --install all;
fi
- docker buildx create --use # creates and set's to active buildkit builder
...@@ -688,8 +688,14 @@ ...@@ -688,8 +688,14 @@
- <<: *if-dot-com-gitlab-org-and-security-merge-request - <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *code-qa-patterns changes: *code-qa-patterns
- <<: *if-auto-deploy-branches - <<: *if-auto-deploy-branches
variables:
ARCH: amd64,arm64
- <<: *if-default-branch-or-tag - <<: *if-default-branch-or-tag
variables:
ARCH: amd64,arm64
- <<: *if-dot-com-gitlab-org-schedule - <<: *if-dot-com-gitlab-org-schedule
variables:
ARCH: amd64,arm64
- <<: *if-force-ci - <<: *if-force-ci
- <<: *if-ruby3-branch - <<: *if-ruby3-branch
......
ARG DOCKER_VERSION=20.10.14 ARG DOCKER_VERSION=20.10.14
ARG CHROME_VERSION=106 ARG CHROME_VERSION=106
ARG QA_BUILD_TARGET=qa ARG QA_BUILD_TARGET=ee
ARG RUBY_VERSION=2.7 ARG RUBY_VERSION=2.7
FROM registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.36-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 AS qa FROM registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.36-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 AS foss
LABEL maintainer="GitLab Quality Department <quality@gitlab.com>" LABEL maintainer="GitLab Quality Department <quality@gitlab.com>"
ENV DEBIAN_FRONTEND="noninteractive" ENV DEBIAN_FRONTEND="noninteractive"
...@@ -39,10 +39,6 @@ RUN bundle config set --local without development \ ...@@ -39,10 +39,6 @@ RUN bundle config set --local without development \
&& bundle install --retry=3 && bundle install --retry=3
COPY ./config/initializers/0_inject_enterprise_edition_module.rb /home/gitlab/config/initializers/ COPY ./config/initializers/0_inject_enterprise_edition_module.rb /home/gitlab/config/initializers/
# Copy VERSION to ensure the COPY succeeds to copy at least one file since ee/app/models/license.rb isn't present in FOSS
# The [b] part makes ./ee/app/models/license.r[b] a pattern that is allowed to return no files (which is the case in FOSS)
COPY VERSION ./ee/app/models/license.r[b] /home/gitlab/ee/app/models/
COPY VERSION ./ee/config/feature_flag[s] /home/gitlab/ee/config/feature_flags/
COPY ./config/feature_flags /home/gitlab/config/feature_flags COPY ./config/feature_flags /home/gitlab/config/feature_flags
COPY ./config/bundler_setup.rb /home/gitlab/config/ COPY ./config/bundler_setup.rb /home/gitlab/config/
COPY ./lib/gitlab_edition.rb /home/gitlab/lib/ COPY ./lib/gitlab_edition.rb /home/gitlab/lib/
...@@ -53,8 +49,13 @@ COPY ./qa /home/gitlab/qa ...@@ -53,8 +49,13 @@ COPY ./qa /home/gitlab/qa
ENTRYPOINT ["bin/test"] ENTRYPOINT ["bin/test"]
# Add JH files when pass the parameter: `--build-arg QA_BUILD_TARGET=jhqa` # Add ee files when passing the parameter: `--build-arg QA_BUILD_TARGET=ee`
FROM qa AS jhqa FROM foss as ee
ONBUILD COPY ./ee/app/models/license.rb /home/gitlab/ee/app/models/
ONBUILD COPY ./ee/config/feature_flags /home/gitlab/ee/config/feature_flags/
# Add JH files when passing the parameter: `--build-arg QA_BUILD_TARGET=jhqa`
FROM ee AS jhqa
ONBUILD COPY ./jh/qa /home/gitlab/jh/qa ONBUILD COPY ./jh/qa /home/gitlab/jh/qa
ONBUILD COPY ./jh/lib /home/gitlab/jh/lib ONBUILD COPY ./jh/lib /home/gitlab/jh/lib
ONBUILD COPY ./jh/config/feature_flags /home/gitlab/jh/config/feature_flags ONBUILD COPY ./jh/config/feature_flags /home/gitlab/jh/config/feature_flags
......
#!/bin/sh #!/bin/bash
QA_IMAGE_NAME="gitlab-ee-qa" QA_IMAGE_NAME="gitlab-ee-qa"
QA_BUILD_TARGET="ee"
if [ "${CI_PROJECT_NAME}" == "gitlabhq" ] || [ "${CI_PROJECT_NAME}" == "gitlab-foss" ]; then if [[ "${CI_PROJECT_NAME}" == "gitlabhq" || "${CI_PROJECT_NAME}" == "gitlab-foss" ]]; then
QA_IMAGE_NAME="gitlab-ce-qa" QA_IMAGE_NAME="gitlab-ce-qa"
QA_BUILD_TARGET="foss"
fi fi
# Tag with commit SHA by default # Tag with commit SHA by default
...@@ -15,24 +17,29 @@ IMAGE_TAG=${CI_COMMIT_TAG#v} ...@@ -15,24 +17,29 @@ IMAGE_TAG=${CI_COMMIT_TAG#v}
IMAGE_TAG=${IMAGE_TAG:-$CI_COMMIT_REF_SLUG} IMAGE_TAG=${IMAGE_TAG:-$CI_COMMIT_REF_SLUG}
QA_IMAGE_BRANCH="${CI_REGISTRY}/${CI_PROJECT_PATH}/${QA_IMAGE_NAME}:${IMAGE_TAG}" QA_IMAGE_BRANCH="${CI_REGISTRY}/${CI_PROJECT_PATH}/${QA_IMAGE_NAME}:${IMAGE_TAG}"
QA_IMAGE_MASTER="${CI_REGISTRY}/${CI_PROJECT_PATH}/${QA_IMAGE_NAME}:master"
DESTINATIONS="--destination=${QA_IMAGE} --destination=${QA_IMAGE_BRANCH}" DESTINATIONS="--tag ${QA_IMAGE} --tag ${QA_IMAGE_BRANCH}"
# Auto-deploy tag format uses first 12 letters of commit SHA. Tag with that # Auto-deploy tag format uses first 12 letters of commit SHA. Tag with that
# reference also for EE images. # reference also for EE images.
if [ "${QA_IMAGE_NAME}" == "gitlab-ee-qa" ]; then if [ "${QA_IMAGE_NAME}" == "gitlab-ee-qa" ]; then
QA_IMAGE_FOR_AUTO_DEPLOY="${CI_REGISTRY}/${CI_PROJECT_PATH}/${QA_IMAGE_NAME}:${CI_COMMIT_SHA:0:11}" QA_IMAGE_FOR_AUTO_DEPLOY="${CI_REGISTRY}/${CI_PROJECT_PATH}/${QA_IMAGE_NAME}:${CI_COMMIT_SHA:0:11}"
DESTINATIONS="${DESTINATIONS} --destination=$QA_IMAGE_FOR_AUTO_DEPLOY" DESTINATIONS="${DESTINATIONS} --tag $QA_IMAGE_FOR_AUTO_DEPLOY"
fi fi
echo "Building QA image for destinations: ${DESTINATIONS}" echo "Building QA image for destinations: ${DESTINATIONS}"
/kaniko/executor \ docker buildx build \
--context="${CI_PROJECT_DIR}" \ --cache-to=type=inline \
--dockerfile="${CI_PROJECT_DIR}/qa/Dockerfile" \ --cache-from="$QA_IMAGE_BRANCH" \
--cache-from="$QA_IMAGE_MASTER" \
--platform=${ARCH:-amd64} \
--build-arg=CHROME_VERSION="${CHROME_VERSION}" \ --build-arg=CHROME_VERSION="${CHROME_VERSION}" \
--build-arg=DOCKER_VERSION="${DOCKER_VERSION}" \ --build-arg=DOCKER_VERSION="${DOCKER_VERSION}" \
--build-arg=RUBY_VERSION="${RUBY_VERSION}" \ --build-arg=RUBY_VERSION="${RUBY_VERSION}" \
--build-arg=QA_BUILD_TARGET="${QA_BUILD_TARGET:-qa}" \ --build-arg=QA_BUILD_TARGET="${QA_BUILD_TARGET}" \
--cache=true \ --file="${CI_PROJECT_DIR}/qa/Dockerfile" \
${DESTINATIONS} --push \
${DESTINATIONS} \
${CI_PROJECT_DIR}
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册