Skip to content

chore: add ssr logics (#98) #16

chore: add ssr logics (#98)

chore: add ssr logics (#98) #16

Workflow file for this run

on:
push:
branches:
- main
- dev
- ci
name: Build & Deploy
env:
REGISTRY: ghcr.io
CLIENT_IMAGE_NAME: ${{ github.repository }}-client
BACKEND_IMAGE_NAME: ${{ github.repository }}-backend
jobs:
changed:
runs-on: ubuntu-latest
outputs:
client: ${{ steps.client.outputs.changed }}
backend: ${{ steps.backend.outputs.changed }}
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: Get changed client files
id: client-files
uses: tj-actions/changed-files@v35
with:
since_last_remote_commit: true
files: client/**
- name: Get changed backend files
id: backend-files
uses: tj-actions/changed-files@v35
with:
since_last_remote_commit: true
files: backend/**
- name: Check if client has changed files
id: client
if: steps.client-files.outputs.any_changed == 'true'
run: echo "changed=true" >> "$GITHUB_OUTPUT"
- name: Check if backend has changed files
id: backend
if: steps.backend-files.outputs.any_changed == 'true'
run: echo "changed=true" >> "$GITHUB_OUTPUT"
client:
runs-on: ubuntu-latest
if: ${{ needs.changed.outputs.client == 'true' }}
defaults:
run:
working-directory: client
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "16"
cache: "yarn"
cache-dependency-path: client/yarn.lock
- name: Install project dependencies
run: yarn --prefer-offline
- name: "Build"
run: yarn build
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.CLIENT_IMAGE_NAME }}
tags: type=sha
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: ./client
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
needs: changed
backend:
runs-on: ubuntu-latest
if: ${{ needs.changed.outputs.backend == 'true' }}
defaults:
run:
working-directory: backend
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "16"
cache: "yarn"
cache-dependency-path: backend/yarn.lock
- name: Install project dependencies
run: yarn --prefer-offline
- name: "Build"
run: yarn build
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE_NAME }}
tags: type=sha
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: ./backend
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
needs: changed