- name: Login to DockerHub
uses: docker/login-action@v2
with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
+ username: ${{ github.repository_owner }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
+ file: Dockerfile-release
build-args: |
REPO=${{ github.repository }}
VER=${{ github.ref_name }}
-FROM alpine as builder
-ARG REPO VER TARGETPLATFORM
-RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
- TARGET="x86_64-unknown-linux-musl"; \
- elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
- TARGET="aarch64-unknown-linux-musl"; \
- elif [ "$TARGETPLATFORM" = "linux/386" ]; then \
- TARGET="i686-unknown-linux-musl"; \
- elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \
- TARGET="armv7-unknown-linux-musleabihf"; \
- fi && \
- wget https://github.com/${REPO}/releases/download/${VER}/dufs-${VER}-${TARGET}.tar.gz && \
- tar -xf dufs-${VER}-${TARGET}.tar.gz && \
- mv dufs /bin/
+FROM --platform=linux/amd64 messense/rust-musl-cross:x86_64-musl AS amd64
+COPY . .
+RUN cargo install --path . --root /
+
+FROM --platform=linux/amd64 messense/rust-musl-cross:aarch64-musl AS arm64
+COPY . .
+RUN cargo install --path . --root /
+
+FROM ${TARGETARCH} AS builder
FROM scratch
COPY --from=builder /bin/dufs /bin/dufs
--- /dev/null
+FROM alpine as builder
+ARG REPO VER TARGETPLATFORM
+RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
+ TARGET="x86_64-unknown-linux-musl"; \
+ elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
+ TARGET="aarch64-unknown-linux-musl"; \
+ elif [ "$TARGETPLATFORM" = "linux/386" ]; then \
+ TARGET="i686-unknown-linux-musl"; \
+ elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \
+ TARGET="armv7-unknown-linux-musleabihf"; \
+ fi && \
+ wget https://github.com/${REPO}/releases/download/${VER}/dufs-${VER}-${TARGET}.tar.gz && \
+ tar -xf dufs-${VER}-${TARGET}.tar.gz && \
+ mv dufs /bin/
+
+FROM scratch
+COPY --from=builder /bin/dufs /bin/dufs
+STOPSIGNAL SIGINT
+ENTRYPOINT ["/bin/dufs"]