diff --git a/.dockerignore b/.dockerignore index 41bdf12..4a59cdd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,6 @@ test images docs -node_modules package-lock.json Dockerfile yarn.lock diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8a21636..79090ef 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -22,37 +22,53 @@ env: jobs: build-and-push-image: runs-on: ubuntu-latest - strategy: - matrix: - include: - - arch: amd64 - distro: ubuntu-latest - - arch: arm32v7 - distro: ubuntu-latest - - arch: arm64v8 - distro: ubuntu-latest - + permissions: + packages: write + contents: read steps: - - uses: actions/checkout@v2 - - name: Set up Node.js - uses: actions/setup-node@v1 + - name: Setup + uses: actions/setup-node@v3 + - name: Checkout + uses: actions/checkout@v3 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn config get cacheFolder)" + - uses: actions/cache@v3 + id: yarn-cache with: - node-version: 16.17.1 - - name: Install dependencies - run: yarn install - - name: Build project - run: yarn build - - name: Build Docker image - run: | # .${platform} - docker build -t ghcr.io/${{ github.repository_owner }}/jellyfin-discord-music-bot:${GITHUB_SHA}-${{ matrix.arch }} -f Dockerfile . - docker tag ghcr.io/${{ github.repository_owner }}/jellyfin-discord-music-bot:${GITHUB_SHA}-${{ matrix.arch }} ghcr.io/${{ github.repository_owner }}/jellyfin-discord-music-bot:latest - - name: Log in to GHCR - uses: docker/login-action@v1 + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - run: yarn install --immutable + - run: yarn build + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + # list of Docker images to use as base name for tags + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # generate Docker tags based on the following events/attributes + tags: | + type=raw,value=latest + type=pep440,pattern={{version}} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to GHCR + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Push Docker image - run: | - docker push ghcr.io/${{ github.repository_owner }}/jellyfin-discord-music-bot:${GITHUB_SHA}-${{ matrix.arch }} - docker push ghcr.io/${{ github.repository_owner }}/jellyfin-discord-music-bot:latest + - name: Build and push + uses: docker/build-push-action@v3 + with: + platforms: linux/amd64,linux/arm64,linux/arm/v7 + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/Dockerfile b/Dockerfile index d7f0d4f..6b7bc29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ -FROM node:16.17.1-alpine +FROM node:16.13.1-alpine3.12 RUN apk add ffmpeg COPY . /app WORKDIR /app -RUN yarn install --immutable -RUN yarn build + +EXPOSE 3000 RUN ls -lha RUN ls dist -lha