Skip to content

chore(deps): bump docker/build-push-action from 4 to 6 #1132

chore(deps): bump docker/build-push-action from 4 to 6

chore(deps): bump docker/build-push-action from 4 to 6 #1132

Workflow file for this run

name: πŸš€ Deploy
on:
push:
branches:
- main
- dev
pull_request: {}
merge_group:
branches:
- main
permissions:
actions: write
contents: read
jobs:
lint:
name: ⬣ ESLint
runs-on: ubuntu-latest
strategy:
matrix:
package: ["letterpress", "newspaper", "newsroom", "prismatic"]
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: βŽ” Setup node
uses: actions/setup-node@v3
with:
node-version: 16
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: πŸ”¬ Lint
run: npm run lint:${{ matrix.package }}
typecheck:
name: Κ¦ TypeScript
runs-on: ubuntu-latest
strategy:
matrix:
package: ["letterpress", "newspaper", "newsroom", "prismatic"]
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: βŽ” Setup node
uses: actions/setup-node@v3
with:
node-version: 16
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: πŸ”Ž Type check
run: npm run typecheck:${{ matrix.package }}
test:
name: ⚑ Test
runs-on: ubuntu-latest
strategy:
matrix:
package: ["letterpress", "newspaper", "newsroom", "prismatic"]
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: βŽ” Setup node
uses: actions/setup-node@v3
with:
node-version: 16
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: ⚑ Run test
# TODO: run: npm run test -- --coverage
run: npm run test:${{ matrix.package }}
newsroom-playwright:
name: πŸ§ͺ Test newsroom with 🎭
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: πŸ„ Copy test env vars
run: npm run setup:env
- name: 🐳 Docker compose
# the sleep is just there to give time for postgres to get started
# run: docker-compose up -d && sleep 3
run: docker-compose up -d postgres && sleep 3
env:
DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/postgres"
- name: πŸ›  Setup Database
run: npm run prismatic:reset
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npm run test:e2e:newsroom
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
newspaper-playwright:
name: πŸ§ͺ Test newspaper with 🎭
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: πŸ„ Copy test env vars
run: npm run setup:env
- name: 🐳 Docker compose
# the sleep is just there to give time for postgres to get started
run: docker-compose up -d postgres && sleep 3
env:
DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/postgres"
- name: πŸ›  Setup Database
run: npm run prismatic:reset
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npm run test:e2e:newspaper
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
newsroom-build:
needs: [lint, typecheck, test, newsroom-playwright, letterpress-playwright]
name: 🐳 Build newsroom
# only build/deploy main branch on pushes
if: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: πŸ‘€ Read app name
uses: SebRollen/[email protected]
id: app_name
with:
file: "./packages/newsroom/fly.toml"
field: "app"
- name: 🐳 Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# TODO: Remove v0.9.1 after this gets resolved: https://community.fly.io/t/deploying-to-fly-via-github-action-failing/10171/19?u=jsierles
with:
version: v0.9.1
# Setup cache
- name: ⚑️ Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: πŸ”‘ Fly Registry Auth
uses: docker/login-action@v2
with:
registry: registry.fly.io
username: x
password: ${{ secrets.FLY_API_TOKEN }}
- name: 🐳 Docker build
uses: docker/build-push-action@v6
with:
context: .
file: ./packages/newsroom/Dockerfile
push: true
tags: registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}
build-args: |
COMMIT_SHA=${{ github.sha }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new
# This ugly bit is necessary if you don't want your cache to grow forever
# till it hits GitHub's limit of 5GB.
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: 🚚 Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
newsroom-deploy:
name: πŸš€ Deploy newsroom
runs-on: ubuntu-latest
needs: [newsroom-build, newspaper-build]
# only build/deploy main branch on pushes
if: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }}
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: πŸ‘€ Read app name
uses: SebRollen/[email protected]
id: app_name
with:
file: "./packages/newsroom/fly.toml"
field: "app"
- name: πŸš€ Deploy Staging
if: ${{ github.ref == 'refs/heads/dev' }}
uses: superfly/[email protected]
with:
args: "deploy --app ${{ steps.app_name.outputs.value }}-staging --image registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}"
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
- name: πŸš€ Deploy Production
if: ${{ github.ref == 'refs/heads/main' }}
uses: superfly/[email protected]
with:
args: "deploy --image registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}"
env:
FLY_REGION: "fra"
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
FLY_PROJECT_PATH: packages/newsroom
newspaper-build:
needs: [lint, typecheck, test, newspaper-playwright, letterpress-playwright]
name: 🐳 Build newspaper
# only build/deploy main branch on pushes
if: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: πŸ‘€ Read app name
uses: SebRollen/[email protected]
id: app_name
with:
file: "./packages/newspaper/fly.toml"
field: "app"
- name: 🐳 Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# TODO: Remove v0.9.1 after this gets resolved: https://community.fly.io/t/deploying-to-fly-via-github-action-failing/10171/19?u=jsierles
with:
version: v0.9.1
# Setup cache
- name: ⚑️ Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: πŸ”‘ Fly Registry Auth
uses: docker/login-action@v2
with:
registry: registry.fly.io
username: x
password: ${{ secrets.FLY_API_TOKEN }}
- name: 🐳 Docker build
uses: docker/build-push-action@v6
with:
context: .
file: ./packages/newspaper/Dockerfile
push: true
tags: registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}
build-args: |
COMMIT_SHA=${{ github.sha }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new
# This ugly bit is necessary if you don't want your cache to grow forever
# till it hits GitHub's limit of 5GB.
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: 🚚 Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
newspaper-deploy:
name: πŸš€ Deploy newspaper
runs-on: ubuntu-latest
needs: [newspaper-build, newsroom-build]
# only build/deploy main branch on pushes
if: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }}
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: πŸ‘€ Read app name
uses: SebRollen/[email protected]
id: app_name
with:
file: "./packages/newspaper/fly.toml"
field: "app"
- name: πŸš€ Deploy Staging
if: ${{ github.ref == 'refs/heads/dev' }}
uses: superfly/[email protected]
with:
args: "deploy --app ${{ steps.app_name.outputs.value }}-staging --image registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}"
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
- name: πŸš€ Deploy Production
if: ${{ github.ref == 'refs/heads/main' }}
uses: superfly/[email protected]
with:
args: "deploy --image registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}"
env:
FLY_REGION: "fra"
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
FLY_PROJECT_PATH: packages/newspaper
letterpress-build:
name: πŸ— Build βœ‰οΈπŸ—œ
runs-on: ubuntu-20.04
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: βŽ” Setup node
uses: actions/setup-node@v3
with:
node-version: 16
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: πŸ— Build βœ‰οΈπŸ—œ
run: npm run build:letterpress
- name: ♻️ Upload βœ‰οΈπŸ—œdist folder
if: always()
uses: actions/upload-artifact@v3
with:
name: dist
path: ./packages/letterpress/dist
letterpress-playwright:
name: πŸ§ͺ Test βœ‰οΈπŸ—œ with 🎭
needs: letterpress-build
runs-on: ubuntu-22.04
container:
image: mcr.microsoft.com/playwright:v1.35.1
strategy:
fail-fast: false
matrix:
project: [chromium, firefox, webkit]
steps:
- name: πŸ›‘ Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: βŽ” Setup node
uses: actions/setup-node@v3
with:
node-version: 16
- name: πŸ›¬ Download dist artifact
uses: actions/download-artifact@v3
with:
name: dist
path: ./packages/letterpress/dist
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
with:
install-command: npm i --ignore-scripts
- name: πŸ“² Install esbuild (binary workaround)
working-directory: ./packages/letterpress
run: npm i -D esbuild-linux-64
- name: πŸ‘©β€πŸ”¬ Test with Playwright 🎭
working-directory: ./packages/letterpress
run: HOME=/root npx playwright test --project=${{ matrix.project }}
- name: πŸ†™ Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-report
path: ./packages/letterpress/playwright-report
retention-days: 30