Skip to content

Continuous Delivery #422

Continuous Delivery

Continuous Delivery #422

Workflow file for this run

name: Continuous Delivery
on:
schedule:
- cron: '0 12 * * *'
push:
branches:
- main
workflow_dispatch:
jobs:
release:
name: Release
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
outputs:
release_created: ${{ steps.release.outputs.release_created }}
steps:
- name: Code Checkout
uses: actions/checkout@v4
- name: Release
id: release
uses: google-github-actions/release-please-action@v4
with:
manifest-file: .release-please-manifest.json
config-file: release-please-config.json
dependencies:
name: Install Dependencies
needs: release
if: ${{ needs.release.outputs.release_created || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest
steps:
- name: Code Checkout
uses: actions/checkout@v4
- name: Install NodeJS
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Cache Dependencies
id: cache
uses: actions/cache@v3
with:
path: |
**/node_modules
packages/**/build
key: cd-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
cd-
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm install
build:
name: Build
needs: dependencies
runs-on: ubuntu-latest
strategy:
matrix:
project:
- careers-whatislove-dev
- certifications-whatislove-dev
- whatislove-dev
env:
PACKAGE_DIR: apps/${{ matrix.project }}
steps:
- name: Code Checkout
uses: actions/checkout@v4
- name: Install NodeJS
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Restore Dependencies
uses: actions/cache@v3
with:
path: |
**/node_modules
packages/**/build
key: cd-${{ hashFiles('**/package-lock.json') }}
- name: Code Building
working-directory: ${{ env.PACKAGE_DIR }}
run: npm run build
env:
VITE_DB_API_KEY: ${{ secrets.DB_API_KEY }}
DEVTO_API_KEY: ${{ secrets.DEVTO_API_KEY }}
WEBMENTION_API_KEY: ${{ secrets.WEBMENTION_API_KEY }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.project }}
path: ${{ env.PACKAGE_DIR }}/build
deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
project:
- careers-whatislove-dev
- certifications-whatislove-dev
- whatislove-dev
env:
PACKAGE_DIR: apps/${{ matrix.project }}
environment:
name: ${{ matrix.project }}
# url: ${{ fromJson(steps.deployment.outputs.NETLIFY_OUTPUT).url }}
steps:
- name: Code Checkout
uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ matrix.project }}
path: ${{ env.PACKAGE_DIR }}/build
- name: Deploy
id: deployment
uses: South-Paw/action-netlify-cli@v2
with:
args: 'deploy --json --prod --site ${{ matrix.project }} --filter ${{ env.PACKAGE_DIR }} --dir ${{ env.PACKAGE_DIR }}/build'
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}