diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index 8eeec4185..0c2b7f52d 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -9,6 +9,7 @@ on: - '.github/workflows/**' - 'Dockerfile' - 'package.json' + - 'yarn.lock' jobs: release: @@ -16,25 +17,36 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Checkout - uses: actions/checkout@v2 - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Build dockerfile (with push) - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - run: | - docker buildx build \ - --platform=linux/amd64,linux/arm/v7,linux/arm64 \ - --output "type=image,push=true" \ - --file ./Dockerfile . \ - --tag $(echo "${DOCKER_USERNAME}" | tr '[:upper:]' '[:lower:]')/rsshub:latest \ - --tag $(echo "${DOCKER_USERNAME}" | tr '[:upper:]' '[:lower:]')/rsshub:$(date +%Y)-$(date +%m)-$(date +%d) + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKER_USERNAME }}/rsshub + tags: | + type=raw,value=latest,enable=true + type=raw,value={{date 'YYYY-MM-DD'}},enable=true + flavor: latest=false + + - name: Build and push Docker image + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm/v7,linux/arm64 + cache-from: type=gha,scope=${{ github.workflow }} + cache-to: type=gha,mode=max,scope=${{ github.workflow }} diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml index 4749368ea..7ce30af77 100644 --- a/.github/workflows/docker-test.yml +++ b/.github/workflows/docker-test.yml @@ -8,6 +8,7 @@ on: - 'lib/**' - 'Dockerfile' - 'package.json' + - 'yarn.lock' # Please, always create a pull request instead of push to master. jobs: @@ -16,14 +17,31 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + - name: Set up QEMU uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - - name: Build dockerfile and Run (without push) + + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v3 + with: + images: rsshub + flavor: latest=true + + - name: Build Docker image + uses: docker/build-push-action@v2 + with: + context: . + load: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha,scope=${{ github.workflow }} + cache-to: type=gha,mode=max,scope=${{ github.workflow }} + + - name: Run dockerfile run: | - docker build \ - --tag rsshub:latest \ - --file ./Dockerfile . chmod +x scripts/docker/test-docker.sh scripts/docker/test-docker.sh diff --git a/Dockerfile b/Dockerfile index 345838667..38cb45196 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,6 @@ ARG USE_CHINA_NPM_REGISTRY=0; ARG PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1; RUN ln -sf /bin/bash /bin/sh - RUN apt-get update && apt-get install -yq libgconf-2-4 apt-transport-https git dumb-init python3 build-essential --no-install-recommends WORKDIR /app @@ -14,7 +13,6 @@ WORKDIR /app COPY ./yarn.lock /app COPY ./package.json /app - RUN if [ "$USE_CHINA_NPM_REGISTRY" = 1 ]; then \ echo 'use npm mirror'; npm config set registry https://registry.npm.taobao.org; \ fi; @@ -27,12 +25,11 @@ RUN if [ "$PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" = 0 ]; then \ export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ;\ fi; -RUN yarn --network-timeout 1000000 - +RUN yarn --frozen-lockfile --network-timeout 1000000 COPY . /app - RUN node scripts/docker/minify-docker.js + FROM node:14-slim as app ENV NODE_ENV production