Skip to content

Commit

Permalink
Merge pull request #5764 from blackpiglet/add_restic_builder
Browse files Browse the repository at this point in the history
[cherry-pick][main] Add restic builder
  • Loading branch information
qiuming-best authored Jan 13, 2023
2 parents e8ea414 + 01c4e9b commit 46bcdb2
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 12 deletions.
43 changes: 31 additions & 12 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,48 +11,67 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
FROM --platform=$BUILDPLATFORM golang:1.18 as builder-env

# Velero binary build section
FROM --platform=$BUILDPLATFORM golang:1.18.8 as velero-builder

ARG GOPROXY
ARG BIN
ARG PKG
ARG VERSION
ARG REGISTRY
ARG GIT_SHA
ARG GIT_TREE_STATE
ARG REGISTRY
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT

ENV CGO_ENABLED=0 \
GO111MODULE=on \
GOPROXY=${GOPROXY} \
GOOS=${TARGETOS} \
GOARCH=${TARGETARCH} \
GOARM=${TARGETVARIANT} \
LDFLAGS="-X ${PKG}/pkg/buildinfo.Version=${VERSION} -X ${PKG}/pkg/buildinfo.GitSHA=${GIT_SHA} -X ${PKG}/pkg/buildinfo.GitTreeState=${GIT_TREE_STATE} -X ${PKG}/pkg/buildinfo.ImageRegistry=${REGISTRY}"

WORKDIR /go/src/github.com/vmware-tanzu/velero

COPY . /go/src/github.com/vmware-tanzu/velero

FROM --platform=$BUILDPLATFORM builder-env as builder
RUN mkdir -p /output/usr/bin && \
export GOARM=$( echo "${GOARM}" | cut -c2-) && \
go build -o /output/${BIN} \
-ldflags "${LDFLAGS}" ${PKG}/cmd/${BIN}

# Restic binary build section
FROM --platform=$BUILDPLATFORM golang:1.19.4-bullseye as restic-builder

ARG BIN
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG PKG
ARG BIN
ARG RESTIC_VERSION

ENV GOOS=${TARGETOS} \
env CGO_ENABLED=0 \
GO111MODULE=on \
GOPROXY=${GOPROXY} \
GOOS=${TARGETOS} \
GOARCH=${TARGETARCH} \
GOARM=${TARGETVARIANT}

COPY . /go/src/github.com/vmware-tanzu/velero

RUN mkdir -p /output/usr/bin && \
export GOARM=$( echo "${GOARM}" | cut -c2-) && \
bash ./hack/build-restic.sh && \
go build -o /output/${BIN} \
-ldflags "${LDFLAGS}" ${PKG}/cmd/${BIN}
bash /go/src/github.com/vmware-tanzu/velero/hack/build-restic.sh

FROM gcr.io/distroless/base-debian11:nonroot
# Velero image packing section
FROM gcr.io/distroless/base-debian11@sha256:99133cb0878bb1f84d1753957c6fd4b84f006f2798535de22ebf7ba170bbf434

LABEL maintainer="Nolan Brubaker <[email protected]>"

COPY --from=builder /output /
COPY --from=velero-builder /output /

COPY --from=restic-builder /output /

USER nonroot:nonroot

1 change: 1 addition & 0 deletions changelogs/unreleased/5764-blackpiglet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add Restic builder in Dockerfile, and keep the used built Golang image version in accordance with upstream Restic.
1 change: 1 addition & 0 deletions hack/build-restic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ fi
mkdir ${build_path}/restic
git clone -b v${RESTIC_VERSION} https://github.com/restic/restic.git ${build_path}/restic
pushd ${build_path}/restic
git apply /go/src/github.com/vmware-tanzu/velero/hack/modify_acces_denied_code.txt
go run build.go --goos "${GOOS}" --goarch "${GOARCH}" --goarm "${GOARM}" -o ${restic_bin}
chmod +x ${restic_bin}
popd
13 changes: 13 additions & 0 deletions hack/modify_acces_denied_code.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/internal/backend/s3/s3.go b/internal/backend/s3/s3.go
index 0b3816c06..eec10f9c7 100644
--- a/internal/backend/s3/s3.go
+++ b/internal/backend/s3/s3.go
@@ -164,7 +164,7 @@ func isAccessDenied(err error) bool {
debug.Log("isAccessDenied(%T, %#v)", err, err)

var e minio.ErrorResponse
- return errors.As(err, &e) && e.Code == "Access Denied"
+ return errors.As(err, &e) && e.Code == "AccessDenied"
}

// IsNotExist returns true if the error is caused by a not existing file.

0 comments on commit 46bcdb2

Please sign in to comment.