From 0bfca81c39d2d384e4a0d33c8fd2d581e45b43e5 Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Fri, 19 Jun 2020 13:00:24 +0900 Subject: [PATCH] CI: Upload static release binaries Based on https://github.com/rootless-containers/slirp4netns/blob/99e1516d2b8c9187740082a0f975a87cd6a981b4/.github/workflows/release.yaml Signed-off-by: Akihiro Suda --- .github/workflows/release.yaml | 97 ++++++++++++++++++++++++++++++++++ Dockerfile.cross | 16 ++++++ 2 files changed, 113 insertions(+) create mode 100644 .github/workflows/release.yaml create mode 100644 Dockerfile.cross diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..86596e3 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,97 @@ +name: Release +on: + push: + tags: + - 'test-cross-*' + - 'v*' + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: "Register QEMU to /proc/sys/fs/binfmt_misc" + run: docker run --rm --privileged linuxkit/binfmt:v0.8 + - name: "Fetch buildx binary" + run: | + wget -O buildx https://github.com/docker/buildx/releases/download/v0.4.1/buildx-v0.4.1.linux-amd64 + chmod +x buildx + - name: "Initialize buildx" + run: | + ./buildx create --name cross --platform=amd64,arm,arm64,s390x,ppc64le --use + ./buildx inspect --bootstrap + - name: "Build binaries from Dockerfile.cross" + run: ./buildx build -o /tmp --platform=amd64,arm64,arm,s390x,ppc64le -f Dockerfile.cross . + - name: "Create /tmp/artifact" + run: | + mkdir -p /tmp/artifact + mv /tmp/linux_amd64/fuse-overlayfs /tmp/artifact/fuse-overlayfs-x86_64 + mv /tmp/linux_arm64/fuse-overlayfs /tmp/artifact/fuse-overlayfs-aarch64 + mv /tmp/linux_arm_v7/fuse-overlayfs /tmp/artifact/fuse-overlayfs-armv7l + mv /tmp/linux_s390x/fuse-overlayfs /tmp/artifact/fuse-overlayfs-s390x + mv /tmp/linux_ppc64le/fuse-overlayfs /tmp/artifact/fuse-overlayfs-ppc64le + - name: "SHA256SUMS" + run: (cd /tmp/artifact; sha256sum *) | tee /tmp/SHA256SUMS + - name: "Create release" + uses: actions/create-release@v1 + id: create_release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: true + - name: "Upload fuse-overlayfs-x86_64" + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/artifact/fuse-overlayfs-x86_64 + asset_name: fuse-overlayfs-x86_64 + asset_content_type: application/octet-stream + - name: "Upload fuse-overlayfs-aarch64" + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/artifact/fuse-overlayfs-aarch64 + asset_name: fuse-overlayfs-aarch64 + asset_content_type: application/octet-stream + - name: "Upload fuse-overlayfs-armv7l" + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/artifact/fuse-overlayfs-armv7l + asset_name: fuse-overlayfs-armv7l + asset_content_type: application/octet-stream + - name: "Upload fuse-overlayfs-s390x" + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/artifact/fuse-overlayfs-s390x + asset_name: fuse-overlayfs-s390x + asset_content_type: application/octet-stream + - name: "Upload fuse-overlayfs-ppc64le" + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/artifact/fuse-overlayfs-ppc64le + asset_name: fuse-overlayfs-ppc64le + asset_content_type: application/octet-stream + - name: "Upload SHA256SUMS" + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/SHA256SUMS + asset_name: SHA256SUMS + asset_content_type: text/plain diff --git a/Dockerfile.cross b/Dockerfile.cross new file mode 100644 index 0000000..a52539d --- /dev/null +++ b/Dockerfile.cross @@ -0,0 +1,16 @@ +FROM --platform=$BUILDPLATFORM debian:10 AS fuse-overlayfs +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + git ca-certificates libc6-dev gcc make automake autoconf pkgconf libfuse3-dev file curl +RUN curl -o /cross.sh https://raw.githubusercontent.com/tonistiigi/binfmt/18c3d40ae2e3485e4de5b453e8460d6872b24d6b/binfmt/scripts/cross.sh && chmod +x /cross.sh +COPY . /fuse-overlayfs +WORKDIR /fuse-overlayfs +ARG TARGETPLATFORM +RUN /cross.sh install gcc pkgconf libfuse3-dev | sh +RUN ./autogen.sh && \ + CC=$(/cross.sh cross-prefix)-gcc LD=$(/cross.sh cross-prefix)-ld LIBS="-ldl" LDFLAGS="-static" ./configure && \ + make && mkdir /out && cp fuse-overlayfs /out && \ + file /out/fuse-overlayfs | grep "statically linked" + +FROM scratch +COPY --from=fuse-overlayfs /out/fuse-overlayfs /fuse-overlayfs