diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 600d77a..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,38 +0,0 @@ - -name: Docker - -on: - workflow_run: - workflows: [Rust] - types: [completed] - branches: [main] - workflow_dispatch: - -jobs: - docker: - # This workflow defines how a maven package is built, tested and published. - # Visit: https://github.com/samply/github-workflows/blob/develop/.github/workflows/docker-ci.yml, for more information - uses: samply/github-workflows/.github/workflows/docker-ci.yml@main - with: - # The Docker Hub Repository you want eventually push to, e.g samply/share-client - image-name: "samply/prism" - # image-tag-suffix: ${{ matrix.features && format('-{0}', matrix.features) }} - # Define special prefixes for docker tags. They will prefix each images tag. - # image-tag-prefix: "foo" - # Define the build context of your image, typically default '.' will be enough - # build-context: '.' - # Define the Dockerfile of your image, typically default './Dockerfile' will be enough - build-file: './Dockerfile' - # NOTE: This doesn't work currently - # A list of build arguments, passed to the docker build - # build-args: | - # FEATURE=-${{ matrix.features }} - # Define the target platforms of the docker build (default "linux/amd64,linux/arm64/v8") - # build-platforms: "linux/amd64" - # If your actions generate an artifact in a previous build step, you can tell this workflow to download it - # artifact-name: '*' - push-to: dockerhub - # This passes the secrets from calling workflow to the called workflow - secrets: - DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 9b1d9a4..ec0a539 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -11,23 +11,13 @@ env: PROFILE: release jobs: - pre-check: - name: Security, License Check - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v3 - - uses: EmbarkStudios/cargo-deny-action@v1 - rust: - name: Build (Rust) - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - - run: | - cargo check --all-features - cargo test --all-features - cargo build --release + uses: samply/github-workflows/.github/workflows/rust.yml@main + with: + image-prefix: "samply/" + components: '[ "prism" ]' + test-via-script: false + push-to: ${{ (github.ref_protected == true || github.event_name == 'workflow_dispatch') && 'dockerhub' || 'none' }} + secrets: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/Dockerfile b/Dockerfile index 786c4c8..be014f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,11 @@ -FROM lukemathwalker/cargo-chef:latest-rust-bookworm AS chef -WORKDIR /app +FROM alpine AS chmodder +ARG TARGETARCH +ARG COMPONENT +ARG FEATURE +COPY /artifacts/binaries-$TARGETARCH$FEATURE/$COMPONENT /app/$COMPONENT +RUN chmod +x /app/* -FROM chef AS planner -COPY . . -RUN cargo chef prepare --recipe-path recipe.json - -FROM chef AS builder -COPY --from=planner /app/recipe.json recipe.json -# Build dependencies - this is the caching Docker layer! -RUN cargo chef cook --release --recipe-path recipe.json -# Build application -COPY . . -RUN cargo build --release --bin prism - -FROM gcr.io/distroless/cc-debian12 AS runtime -COPY --from=builder /app/target/release/prism /usr/local/bin/ -COPY ./resources ./resources -ENTRYPOINT ["/usr/local/bin/prism"] +FROM gcr.io/distroless/cc-debian12 +ARG COMPONENT +COPY --from=chmodder /app/$COMPONENT /usr/local/bin/samply +ENTRYPOINT [ "/usr/local/bin/samply" ] \ No newline at end of file