From 1d708b94d852ed7b5652d105e2d4beee7cdb160e Mon Sep 17 00:00:00 2001 From: Nikolay Arhipov Date: Sat, 14 Oct 2023 15:18:59 +0300 Subject: [PATCH] Improved github action - Use cargo-binstall for cargo-make and cargo-vita - Added workflow_dispatch to action - Added a parameter to override rust toolchain --- .github/workflows/build.yml | 10 ++++++++-- Dockerfile | 20 +++++--------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index db4691a..8b41006 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,3 @@ - name: Publish Docker image on: @@ -6,7 +5,13 @@ on: branches: [main] schedule: # Every Monday at 02:00 UTC - - cron: '0 2 * * 1' + - cron: "0 2 * * 1" + workflow_dispatch: + inputs: + rust_toolchain: + description: "Rust toolchain" + required: true + default: "nightly" jobs: push_to_registry: @@ -38,3 +43,4 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + build-args: "RUST_TOOLCHAIN=${{ github.event.inputs.rust_toolchain || 'nightly' }}" diff --git a/Dockerfile b/Dockerfile index 8bba499..d27841d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,15 @@ FROM vitasdk/vitasdk -ARG CARGO_MAKE_VERSION=0.37.0 - ENV RUSTUP_HOME=/usr/local/rustup \ CARGO_HOME=/usr/local/cargo \ PATH=/usr/local/cargo/bin:$PATH # Install rust nightly with all the components required to build std # build-base (mainly cc and ld) is required to build std. -RUN apk add --no-cache rustup build-base jq perl clang llvm && \ - rustup-init -y --default-toolchain nightly -c rustfmt -c rustc-dev -c rust-src +RUN apk add --no-cache rustup build-base jq perl clang llvm -RUN curl https://api.github.com/repos/vita-rust/cargo-vita/releases/latest | \ - jq -r '.assets[] | select(.name|contains("x86_64-unknown-linux-musl.tar.gz")) | .browser_download_url' | \ - xargs -n1 curl -LsSf -o /tmp/cargo-vita.tar.gz && \ - tar -zxvf /tmp/cargo-vita.tar.gz -C /tmp && \ - mv /tmp/cargo-vita-*linux-musl/cargo-vita "${CARGO_HOME}/bin" && \ - rm -rf /tmp/cargo-vita* +ARG RUST_TOOLCHAIN=nightly +RUN rustup-init -y --default-toolchain ${RUST_TOOLCHAIN} -c rust-src -# Install cargo make. Use a pre-build binary instead of compiling it -RUN curl -LsSf -o /tmp/cargo-make.zip https://github.com/sagiegurari/cargo-make/releases/download/${CARGO_MAKE_VERSION}/cargo-make-v${CARGO_MAKE_VERSION}-x86_64-unknown-linux-musl.zip && \ - unzip -j /tmp/cargo-make.zip -d /tmp/cargo-make && \ - mv /tmp/cargo-make/cargo-make "${CARGO_HOME}/bin" && \ - rm -rf /tmp/cargo-make* +RUN curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | ash && \ + cargo binstall --no-confirm --no-symlinks cargo-make cargo-vita