Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dockerfile: smoke tests for binaries #4357

Merged
merged 2 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
50 changes: 26 additions & 24 deletions .github/workflows/buildkit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,6 @@ env:
DESTDIR: "./bin"

jobs:
test:
uses: ./.github/workflows/.test.yml
with:
cache_scope: build-integration-tests
pkgs: ./client ./cmd/buildctl ./worker/containerd ./solver ./frontend
kinds: integration
codecov_flags: core
includes: |
- pkg: ./...
skip-integration-tests: 1
typ: integration gateway
- pkg: ./client
worker: containerd
tags: nydus
typ: integration
- pkg: ./client
worker: oci
tags: nydus
typ: integration
- pkg: ./...
tags: nydus
skip-integration-tests: 1
typ: integration

prepare:
runs-on: ubuntu-22.04
outputs:
Expand Down Expand Up @@ -135,6 +111,32 @@ jobs:
path: ${{ env.DESTDIR }}/*
if-no-files-found: error

test:
uses: ./.github/workflows/.test.yml
needs:
- binaries
with:
cache_scope: build-integration-tests
pkgs: ./client ./cmd/buildctl ./worker/containerd ./solver ./frontend
kinds: integration
codecov_flags: core
includes: |
- pkg: ./...
skip-integration-tests: 1
typ: integration gateway
- pkg: ./client
worker: containerd
tags: nydus
typ: integration
- pkg: ./client
worker: oci
tags: nydus
typ: integration
- pkg: ./...
tags: nydus
skip-integration-tests: 1
typ: integration

image:
runs-on: ubuntu-22.04
needs:
Expand Down
22 changes: 16 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,13 @@ ARG TARGETPLATFORM
# lld has issues building static binaries for ppc so prefer ld for it
RUN set -e; xx-apk add musl-dev gcc libseccomp-dev libseccomp-static; \
[ "$(xx-info arch)" != "ppc64le" ] || XX_CC_PREFER_LINKER=ld xx-clang --setup-target-triple
RUN --mount=from=runc-src,src=/usr/src/runc,target=. --mount=target=/root/.cache,type=cache \
CGO_ENABLED=1 xx-go build -mod=vendor -ldflags '-extldflags -static' -tags 'apparmor seccomp netgo cgo static_build osusergo' -o /usr/bin/runc ./ && \
RUN --mount=from=runc-src,src=/usr/src/runc,target=. \
--mount=target=/root/.cache,type=cache <<EOT
set -ex
CGO_ENABLED=1 xx-go build -mod=vendor -ldflags '-extldflags -static' -tags 'apparmor seccomp netgo cgo static_build osusergo' -o /usr/bin/runc ./
xx-verify --static /usr/bin/runc
if [ "$(xx-info os)" = "linux" ]; then /usr/bin/runc --version; fi
EOT

FROM gobuild-base AS buildkit-base
WORKDIR /src
Expand All @@ -95,9 +99,12 @@ ENV CGO_ENABLED=0
ARG TARGETPLATFORM
RUN --mount=target=. --mount=target=/root/.cache,type=cache \
--mount=target=/go/pkg/mod,type=cache \
--mount=source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildkit-version \
xx-go build -ldflags "$(cat /tmp/.ldflags)" -o /usr/bin/buildctl ./cmd/buildctl && \
--mount=source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildkit-version <<EOT
set -ex
xx-go build -ldflags "$(cat /tmp/.ldflags)" -o /usr/bin/buildctl ./cmd/buildctl
xx-verify --static /usr/bin/buildctl
if [ "$(xx-info os)" = "linux" ]; then /usr/bin/buildctl --version; fi
EOT

# build buildkitd binary
FROM buildkit-base AS buildkitd
Expand All @@ -111,9 +118,12 @@ ARG BUILDKIT_DEBUG
ARG GOGCFLAGS=${BUILDKIT_DEBUG:+"all=-N -l"}
RUN --mount=target=. --mount=target=/root/.cache,type=cache \
--mount=target=/go/pkg/mod,type=cache \
--mount=source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildkit-version \
xx-go build ${GOBUILDFLAGS} -gcflags="${GOGCFLAGS}" -ldflags "$(cat /tmp/.ldflags) -extldflags '-static'" -tags "osusergo netgo static_build seccomp ${BUILDKITD_TAGS}" -o /usr/bin/buildkitd ./cmd/buildkitd && \
--mount=source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildkit-version <<EOT
set -ex
xx-go build ${GOBUILDFLAGS} -gcflags="${GOGCFLAGS}" -ldflags "$(cat /tmp/.ldflags) -extldflags '-static'" -tags "osusergo netgo static_build seccomp ${BUILDKITD_TAGS}" -o /usr/bin/buildkitd ./cmd/buildkitd
xx-verify ${VERIFYFLAGS} /usr/bin/buildkitd
if [ "$(xx-info os)" = "linux" ]; then /usr/bin/buildkitd --version; fi
EOT

FROM scratch AS binaries-linux
COPY --link --from=runc /usr/bin/runc /buildkit-runc
Expand Down