mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
ce7b6b8167
* Build docker image upfront in CI and use it in integration tests. Previously, the development workflow was broken because the container generated from Dockerfile.CI was used in dev environments but the binary was not pre-built as it is on buildkite. I propose to just remove that image and use the "to be published" image instead in integration tests. This will have several advantages: - Fix the dev workflow. - Remove CI arch from authelia-scripts build command - Optimize CI time in buildkite since we'll cache a way small artifact - We don't build authelia more than once for earch arch. * Fix suites and only build ARM images on master or tagged commits * Optimise pipeline dependencies and Kubernetes suite to utilise cache * Run unit tests and docker image build in parallel. * Fix suite trying to write on read only fs. Co-authored-by: Amir Zarrinkafsh <nightah@me.com>
68 lines
2.2 KiB
Docker
68 lines
2.2 KiB
Docker
# =======================================
|
|
# ===== Build image for the backend =====
|
|
# =======================================
|
|
FROM golang:1.13-alpine AS builder-backend
|
|
|
|
ARG BUILD_TAG
|
|
ARG BUILD_COMMIT
|
|
ARG CC_VERSION="v14"
|
|
|
|
# gcc cross-compiler is required for building go-sqlite3
|
|
RUN apk --no-cache add curl && \
|
|
curl -Lfs -o /tmp/gcc-7.3.0-arm-linux-musleabihf.tar.xz "https://github.com/just-containers/musl-cross-make/releases/download/${CC_VERSION}/gcc-7.3.0-arm-linux-musleabihf.tar.xz" && \
|
|
tar xf /tmp/gcc-7.3.0-arm-linux-musleabihf.tar.xz -C /
|
|
|
|
WORKDIR /go/src/app
|
|
|
|
COPY go.mod go.sum ./
|
|
|
|
RUN go mod download
|
|
|
|
COPY cmd cmd
|
|
COPY internal internal
|
|
|
|
# Set the build version and time
|
|
RUN echo "Write tag ${BUILD_TAG} and commit ${BUILD_COMMIT} in binary." && \
|
|
sed -i "s/__BUILD_TAG__/${BUILD_TAG}/" cmd/authelia/constants.go && \
|
|
sed -i "s/__BUILD_COMMIT__/${BUILD_COMMIT}/" cmd/authelia/constants.go
|
|
|
|
# CGO_ENABLED=1 is mandatory for building go-sqlite3
|
|
RUN cd cmd/authelia && \
|
|
GOOS=linux GOARCH=arm CGO_ENABLED=1 CC=arm-linux-musleabihf-gcc go build -tags netgo -ldflags '-w -linkmode external -extldflags -static' -trimpath -o authelia && \
|
|
cd ../authelia-scripts && \
|
|
GOOS=linux GOARCH=arm CGO_ENABLED=1 CC=arm-linux-musleabihf-gcc go build -ldflags '-w -linkmode external -extldflags -static' -trimpath -o authelia-scripts
|
|
|
|
|
|
# ========================================
|
|
# ===== Build image for the frontend =====
|
|
# ========================================
|
|
FROM node:12-alpine AS builder-frontend
|
|
|
|
WORKDIR /node/src/app
|
|
COPY web .
|
|
|
|
# Install the dependencies and build
|
|
RUN yarn install --frozen-lockfile && yarn build
|
|
|
|
# ===================================
|
|
# ===== Authelia official image =====
|
|
# ===================================
|
|
FROM arm32v7/alpine:3.11.2
|
|
|
|
COPY ./qemu-arm-static /usr/bin/qemu-arm-static
|
|
|
|
RUN apk --no-cache add ca-certificates tzdata && \
|
|
rm /usr/bin/qemu-arm-static
|
|
|
|
WORKDIR /usr/app
|
|
|
|
COPY --from=builder-backend /go/src/app/cmd/authelia/authelia /go/src/app/cmd/authelia-scripts/authelia-scripts ./
|
|
COPY --from=builder-frontend /node/src/app/build public_html
|
|
|
|
EXPOSE 9091
|
|
|
|
VOLUME /etc/authelia
|
|
VOLUME /var/lib/authelia
|
|
|
|
CMD ["./authelia", "--config", "/etc/authelia/configuration.yml"]
|