diff --git a/.travis.yml b/.travis.yml index c03d348..88570a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,15 +12,6 @@ script: - make test before_deploy: - go install github.com/golang/mock/mockgen - - curl -fsSL https://get.docker.com | sh - - echo '{"experimental":"enabled"}' | sudo tee /etc/docker/daemon.json - - mkdir -p $HOME/.docker - - echo '{"experimental":"enabled"}' | sudo tee $HOME/.docker/config.json - - sudo service docker start - - docker run --rm --privileged multiarch/qemu-user-static:register --reset -p yes - - docker buildx create --name xbuilder --use - - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD - - make release-docker - openssl aes-256-cbc -K $encrypted_442f41e226a3_key -iv $encrypted_442f41e226a3_iv -in .ci/sign.gpg.enc -out .ci/sign.gpg -d - gpg --batch --import .ci/sign.gpg - rm .ci/sign.gpg @@ -34,3 +25,13 @@ deploy: file: "bin/*" on: tags: true +after_deploy: + - curl -fsSL https://get.docker.com | sh + - echo '{"experimental":"enabled"}' | sudo tee /etc/docker/daemon.json + - mkdir -p $HOME/.docker + - echo '{"experimental":"enabled"}' | sudo tee $HOME/.docker/config.json + - sudo service docker start + - docker run --rm --privileged multiarch/qemu-user-static:register --reset -p yes + - docker buildx create --name xbuilder --use + - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD + - make release-docker diff --git a/Dockerfile b/Dockerfile index 6ee05d0..2368ec4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,58 +1,28 @@ -# syntax = docker/dockerfile:experimental -# Build Frontend Start - -# NOTE: Yarn has problems executing on ARM, so build on x86. -FROM --platform=linux/amd64 node:15.11.0-alpine as NODE_BUILD - -ARG BUILDPLATFORM -ARG TARGETPLATFORM -ARG tag - -RUN apk update && \ - apk add git yarn make && \ - git clone -b $tag --depth 1 https://github.com/hr3lxphr6j/bililive-go.git /bililive-go && \ - cd /bililive-go && \ - make build-web - -# Build Frontend End - -# Build Backend Start - -FROM golang:1.16.4-alpine AS GO_BUILD - -COPY --from=NODE_BUILD /bililive-go/ /go/src/github.com/hr3lxphr6j/bililive-go/ - -RUN --mount=type=cache,target=/go/pkg apk update && \ - apk add git make && \ - go get github.com/golang/mock/mockgen && \ - cd /go/src/github.com/hr3lxphr6j/bililive-go && \ - make generate bililive && \ - mv bin/bililive-linux-* bin/bililive-go - -# Build Backend End - -# Build Runtime Image Start - FROM alpine +ARG tag ENV OUTPUT_DIR="/srv/bililive" \ CONF_DIR="/etc/bililive-go" \ PORT=8080 -EXPOSE $PORT - RUN mkdir -p $OUTPUT_DIR && \ mkdir -p $CONF_DIR && \ apk update && \ apk --no-cache add ffmpeg libc6-compat curl tzdata && \ cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN sh -c "case $(arch) in aarch64) go_arch=arm64 ;; arm*) go_arch=arm ;; i386|i686) go_arch=386 ;; x86_64) go_arch=amd64;; esac && \ + cd /tmp && curl -sSLO https://github.com/hr3lxphr6j/bililive-go/releases/download/$tag/bililive-linux-\${go_arch}.tar.gz && \ + tar zxvf bililive-linux-\${go_arch}.tar.gz && \ + chmod +x bililive-linux-\${go_arch} && \ + mv ./bililive-linux-\${go_arch} /usr/bin/bililive-go && \ + mv ./config.yml $CONF_DIR/config.yml && \ + rm ./bililive-linux-\${go_arch}.tar.gz" && \ + sh -c "if [ $tag != $(/usr/bin/bililive-go --version | tr -d '\n') ]; then return 1; fi" + VOLUME $OUTPUT_DIR -COPY --from=GO_BUILD /go/src/github.com/hr3lxphr6j/bililive-go/bin/bililive-go /usr/bin/bililive-go -ADD config.docker.yml $CONF_DIR/config.yml +EXPOSE $PORT ENTRYPOINT ["/usr/bin/bililive-go"] -CMD ["-c", "/etc/bililive-go/config.yml"] - -# Build Runtime Image End +CMD ["-c", "$CONF_DIR/config.yml"]