VERSION 0.6 docs-build: FROM ruby:latest WORKDIR /app RUN gem install coderay RUN gem install rouge RUN gem install asciidoctor # These dependencies are required for asciidoctor-mathematical RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get -qq -y install bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev fonts-lyx cmake RUN gem install asciidoctor-mathematical COPY ./README.adoc docs/index.adoc COPY --dir ./docs . RUN asciidoctor -r asciidoctor-mathematical --embedded -- ./docs/*.adoc RUN \ find docs -type f -not -iname '*.html' -not -iname '*.png' -not -iname '*.svg' -delete && \ : SAVE ARTIFACT ./docs docs: FROM golang:latest WORKDIR /app GIT CLONE https://github.com/tdewolff/minify/ minify/ RUN cd minify && go install ./cmd/minify COPY +docs-build/docs/ ./docs/ RUN minify --version RUN minify --sync --recursive --output output/ ./docs/ SAVE ARTIFACT output/* AS LOCAL build/docs/ # rust-deps: # FROM rust:latest # ENV CARGO_HOME=/deps # WORKDIR /work # COPY ./web/Cargo.toml . # # This is a binary program, expose a main.rs file # RUN mkdir src && touch src/main.rs # RUN cargo fetch # SAVE ARTIFACT /deps # rust-builder: # FROM rust:latest # ENV CARGO_HOME=/deps # WORKDIR /work # # Linux # RUN rustup target add x86_64-unknown-linux-musl # SAVE IMAGE docker-wg:5000/rust-builder # rust-build: # FROM +rust-builder # COPY +rust-deps/deps /deps # ARG TOOLCHAIN # # Cache whatever dependency builds you can # COPY ./web/Cargo.toml . # RUN \ # mkdir src && touch src/lib.rs && \ # cargo build --offline --release --target "$TOOLCHAIN" --jobs 1 && \ # rm src/lib.rs && rmdir src && \ # : # # Actually build the program # COPY ./web . # RUN cargo build --offline --release --target "$TOOLCHAIN" --jobs 1 # ARG EXT # ARG STRIP_CMD=x86_64-linux-gnu-strip # ARG APP_NAME=web # RUN if [ "$STRIP_CMD" ]; then "$STRIP_CMD" "target/$TOOLCHAIN/release/$APP_NAME$EXT"; fi # # --force for windows since multiple hardlinks # RUN xz --force --keep "target/$TOOLCHAIN/release/$APP_NAME$EXT" # # SAVE ARTIFACT target/$TOOLCHAIN/release/$APP_NAME$EXT AS LOCAL dist/ # SAVE ARTIFACT target/$TOOLCHAIN/release/$APP_NAME$EXT.xz AS LOCAL dist/$APP_NAME-$TOOLCHAIN$EXT.xz rust-image: FROM scratch # ARG TOOLCHAIN=x86_64-unknown-linux-musl # COPY --build-arg TOOLCHAIN=$TOOLCHAIN +rust-build/work/target/$TOOLCHAIN/release/$APP_NAME / COPY ./target/x86_64-unknown-linux-musl/release/web /xpin-web ENV ROCKET_ADDRESS=0.0.0.0 ENV ROCKET_PORT=8000 ENV ROCKET_LOG_LEVEL=normal EXPOSE 8000 ENTRYPOINT ["/xpin-web"] SAVE IMAGE gitea.austen-wares.com/public/xpin-server all: BUILD +docs BUILD +rust-image