This repository has been archived by the owner on Oct 10, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 192
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
use build tooling for building capabilities component
- Loading branch information
1 parent
e815dca
commit 5abfcaa
Showing
19 changed files
with
442 additions
and
24 deletions.
There are no files selected for viewing
38 changes: 38 additions & 0 deletions
38
.github/workflows/experimental-build-using-buildtooling.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
name: Build using build tooling[Experimental] | ||
|
||
on: [pull_request] | ||
jobs: | ||
build: | ||
name: build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Free some disk space on runner | ||
run: | | ||
echo "free space before cleanup:" | ||
df -h | ||
sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/share/boost /usr/lib/jvm /usr/lib/firefox /opt/microsoft/powershell /opt/hostedtoolcache | ||
echo "free space after cleanup:" | ||
df -h | ||
- name: Set up Go 1.x | ||
uses: actions/setup-go@v3 | ||
with: | ||
go-version: 1.18 | ||
id: go | ||
|
||
- name: Check out code into the Go module directory | ||
uses: actions/checkout@v1 | ||
|
||
- name: go cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.cache/go-build | ||
~/go/pkg/mod | ||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | ||
restore-keys: | | ||
${{ runner.os }}-go- | ||
- name: run make docker-build-all | ||
run: | | ||
make docker-build-all -f build-tooling.mk |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# Copyright 2023 VMware, Inc. All Rights Reserved. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# This Dockerfile is currently consumed by build tooling https://github.com/vmware-tanzu/build-tooling-for-integrations | ||
# to build components in tanzu-framework, check out build-tooling.mk to understand how this is being consumed. | ||
|
||
ARG BUILDER_BASE_IMAGE=golang:1.18 | ||
|
||
FROM --platform=${BUILDPLATFORM} $BUILDER_BASE_IMAGE as base | ||
ARG COMPONENT | ||
ARG GOPROXY_ARG | ||
ENV GOPROXY=${GOPROXY_ARG} | ||
WORKDIR /workspace | ||
COPY "$COMPONENT"/go.* ./ | ||
RUN --mount=type=cache,target=/go/pkg/mod \ | ||
go mod download | ||
|
||
# Linting | ||
FROM harbor-repo.vmware.com/dockerhub-proxy-cache/golangci/golangci-lint:v1.50 AS lint-base | ||
FROM base AS lint | ||
RUN --mount=target=. \ | ||
--mount=from=lint-base,src=/usr/bin/golangci-lint,target=/usr/bin/golangci-lint \ | ||
--mount=type=cache,target=/go/pkg/mod \ | ||
--mount=type=cache,target=/root/.cache/go-build \ | ||
--mount=type=cache,target=/root/.cache/golangci-lint \ | ||
cd $COMPONENT && golangci-lint run --config /workspace/.golangci.yaml --timeout 10m0s ./... | ||
|
||
FROM base AS fmt | ||
RUN --mount=target=. \ | ||
--mount=type=cache,target=/go/pkg/mod \ | ||
--mount=type=cache,target=/root/.cache/go-build \ | ||
cd $COMPONENT && go fmt ./... | ||
|
||
FROM base AS vet | ||
RUN --mount=target=. \ | ||
--mount=type=cache,target=/go/pkg/mod \ | ||
--mount=type=cache,target=/root/.cache/go-build \ | ||
cd $COMPONENT && go vet ./... | ||
|
||
# Testing | ||
FROM base AS test | ||
RUN --mount=target=. \ | ||
--mount=type=cache,target=/go/pkg/mod \ | ||
--mount=type=cache,target=/root/.cache/go-build \ | ||
cd $COMPONENT && mkdir /out && go test -v -coverprofile=/out/cover.out ./... | ||
|
||
# Build the manager binary | ||
FROM base as builder | ||
ARG TARGETOS | ||
ARG TARGETARCH | ||
ARG LD_FLAGS | ||
ENV LD_FLAGS="$LD_FLAGS "'-extldflags "-static"' | ||
RUN --mount=target=. \ | ||
--mount=type=cache,target=/go/pkg/mod \ | ||
cd $COMPONENT && CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GO111MODULE=on go build -o /out/manager ./main.go | ||
|
||
# Use distroless as minimal base image to package the manager binary | ||
# Refer to https://github.com/GoogleContainerTools/distroless for more details | ||
FROM gcr.io/distroless/static:nonroot as image | ||
WORKDIR / | ||
COPY --from=builder /out/manager . | ||
USER nonroot:nonroot | ||
|
||
ENTRYPOINT ["/manager"] | ||
|
||
FROM scratch AS unit-test-coverage | ||
COPY --from=test /out/cover.out /cover.out | ||
|
||
FROM scratch AS bin-unix | ||
COPY --from=builder /out/manager / | ||
|
||
FROM bin-unix AS bin-linux | ||
FROM bin-unix AS bin-darwin | ||
|
||
FROM scratch AS bin-windows | ||
COPY --from=builder /out/manager /manager.exe | ||
|
||
FROM bin-${TARGETOS} as bin |
Oops, something went wrong.