ci: support more platforms (#76)
This commit is contained in:
parent
fd02a53823
commit
5ee2c5504c
2 changed files with 74 additions and 26 deletions
76
.github/workflows/release.yaml
vendored
76
.github/workflows/release.yaml
vendored
|
@ -7,33 +7,71 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
name: Publish to Github Reelases
|
name: Publish to Github Relases
|
||||||
outputs:
|
outputs:
|
||||||
rc: ${{ steps.check-tag.outputs.rc }}
|
rc: ${{ steps.check-tag.outputs.rc }}
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
target:
|
|
||||||
- aarch64-unknown-linux-musl
|
|
||||||
- aarch64-apple-darwin
|
|
||||||
- x86_64-apple-darwin
|
|
||||||
- x86_64-pc-windows-msvc
|
|
||||||
- x86_64-unknown-linux-musl
|
|
||||||
include:
|
include:
|
||||||
- target: aarch64-unknown-linux-musl
|
- target: aarch64-unknown-linux-musl
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
use-cross: true
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
- target: aarch64-apple-darwin
|
- target: aarch64-apple-darwin
|
||||||
os: macos-latest
|
os: macos-latest
|
||||||
use-cross: true
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
|
- target: aarch64-pc-windows-msvc
|
||||||
|
os: windows-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: "--no-default-features"
|
||||||
|
- target: aarch64-linux-android
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
- target: x86_64-apple-darwin
|
- target: x86_64-apple-darwin
|
||||||
os: macos-latest
|
os: macos-latest
|
||||||
|
cargo-flags: ""
|
||||||
- target: x86_64-pc-windows-msvc
|
- target: x86_64-pc-windows-msvc
|
||||||
os: windows-latest
|
os: windows-latest
|
||||||
|
cargo-flags: ""
|
||||||
- target: x86_64-unknown-linux-musl
|
- target: x86_64-unknown-linux-musl
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
use-cross: true
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
|
- target: i686-unknown-linux-musl
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
|
- target: i686-pc-windows-msvc
|
||||||
|
os: windows-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
|
- target: armv7-unknown-linux-musleabihf
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
|
- target: arm-unknown-linux-musleabihf
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: ""
|
||||||
|
- target: mips-unknown-linux-musl
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: "--no-default-features"
|
||||||
|
- target: mipsel-unknown-linux-musl
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: "--no-default-features"
|
||||||
|
- target: mips64-unknown-linux-gnuabi64
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: "--no-default-features"
|
||||||
|
- target: mips64el-unknown-linux-gnuabi64
|
||||||
|
os: ubuntu-latest
|
||||||
|
use-cross: true
|
||||||
|
cargo-flags: "--no-default-features"
|
||||||
runs-on: ${{matrix.os}}
|
runs-on: ${{matrix.os}}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -59,14 +97,7 @@ jobs:
|
||||||
target: ${{ matrix.target }}
|
target: ${{ matrix.target }}
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
profile: minimal # minimal component installation (ie, no documentation)
|
profile: minimal # minimal component installation (ie, no documentation)
|
||||||
|
|
||||||
- name: Install prerequisites
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
case ${{ matrix.target }} in
|
|
||||||
aarch64-unknown-linux-musl) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
- name: Show Version Information (Rust, cargo, GCC)
|
- name: Show Version Information (Rust, cargo, GCC)
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
@ -82,7 +113,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
use-cross: ${{ matrix.use-cross }}
|
use-cross: ${{ matrix.use-cross }}
|
||||||
command: build
|
command: build
|
||||||
args: --locked --release --target=${{ matrix.target }}
|
args: --locked --release --target=${{ matrix.target }} ${{ matrix.cargo-flags }}
|
||||||
|
|
||||||
- name: Build Archive
|
- name: Build Archive
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -133,6 +164,8 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: release
|
needs: release
|
||||||
steps:
|
steps:
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v1
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
|
@ -141,9 +174,16 @@ jobs:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
id: docker_build
|
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v2
|
||||||
with:
|
with:
|
||||||
|
build-args: |
|
||||||
|
REPO=${{ github.repository }}
|
||||||
|
VER=${{ github.ref_name }}
|
||||||
|
platforms: |
|
||||||
|
linux/amd64
|
||||||
|
linux/arm64
|
||||||
|
linux/386
|
||||||
|
linux/arm/v7
|
||||||
push: ${{ needs.release.outputs.rc == 'false' }}
|
push: ${{ needs.release.outputs.rc == 'false' }}
|
||||||
tags: ${{ github.repository }}:latest, ${{ github.repository }}:${{ github.ref_name }}
|
tags: ${{ github.repository }}:latest, ${{ github.repository }}:${{ github.ref_name }}
|
||||||
|
|
||||||
|
|
24
Dockerfile
24
Dockerfile
|
@ -1,10 +1,18 @@
|
||||||
FROM rust:1.61 as builder
|
FROM alpine as builder
|
||||||
RUN rustup target add x86_64-unknown-linux-musl
|
ARG REPO VER TARGETPLATFORM
|
||||||
RUN apt-get update && apt-get install --no-install-recommends -y musl-tools
|
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
||||||
WORKDIR /app
|
TARGET="x86_64-unknown-linux-musl"; \
|
||||||
COPY . .
|
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
||||||
RUN cargo build --target x86_64-unknown-linux-musl --release
|
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
|
FROM scratch
|
||||||
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/dufs /bin/
|
COPY --from=builder /bin/dufs /bin/dufs
|
||||||
ENTRYPOINT ["/bin/dufs"]
|
ENTRYPOINT ["/bin/dufs"]
|
||||||
|
|
Loading…
Reference in a new issue