diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f94a943aab..c91ce5bb58 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,6 +105,28 @@ jobs: steps: - uses: actions/checkout@v3 + with: + submodules: true + + - name: Install Crystal + uses: crystal-lang/install-crystal@v1.7.0 + with: + crystal: 1.9.2 + + - name: Cache Shards + uses: actions/cache@v3 + with: + path: ./lib + key: shards-${{ hashFiles('shard.lock') }} + + - name: Install Shards + run: | + if ! shards check; then + shards install + fi + + - name: Cross compile + run: make invidious-cross-arm64 - name: Set up QEMU uses: docker/setup-qemu-action@v2 @@ -118,11 +140,9 @@ jobs: uses: docker/build-push-action@v3 with: context: . - file: docker/Dockerfile.arm64 + file: docker/Dockerfile.arm64-cross platforms: linux/arm64/v8 build-args: release=0 - name: Test Docker run: while curl -Isf http://localhost:3000; do sleep 1; done - - diff --git a/docker/Dockerfile.arm64-musl-cross b/docker/Dockerfile.arm64-musl-cross new file mode 100644 index 0000000000..5dec46db37 --- /dev/null +++ b/docker/Dockerfile.arm64-musl-cross @@ -0,0 +1,35 @@ +FROM alpine:3.18 AS builder + +RUN apk add --no-cache gcc make yaml-static libxml2-static sqlite-static zlib-static \ + xz-static openssl-libs-static openssl-dev pcre-dev gc-dev libevent-static musl-dev + +ARG release + +COPY ./Makefile . +COPY ./invidious-arm64-musl.o . + +RUN make invidious-arm64-musl STATIC=1 + + +FROM alpine:3.18 + +RUN apk add --no-cache librsvg ttf-opensans tini +WORKDIR /invidious + +RUN addgroup -g 1000 -S invidious && \ + adduser -u 1000 -S invidious -G invidious + +COPY --chown=invidious ./config/ ./config/ +RUN mv -n config/config.example.yml config/config.yml +RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: invidious-db/' config/config.yml + +COPY ./locales/ ./locales/ +COPY ./assets ./assets/ +RUN chmod o+rX -R ./assets ./config ./locales + +COPY --from=builder /invidious-arm64-musl . + +EXPOSE 3000 +USER invidious +ENTRYPOINT ["/sbin/tini", "--"] +CMD [ "/invidious/invidious-arm64-musl" ]