Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/backend_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Backend build

on:
push:
branches: ['main']
pull_request:
branches: ['main']

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use NodeJS 24.x
uses: actions/setup-node@v4
with:
node-version: 24.x
cache: 'yarn'

- name: Create .env file
run: |

echo "AWS_SECRET_ACCESS_KEY=dummy" >> .env
echo "AWS_ACCESS_KEY_ID=dummy" >> .env
echo "AWS_REGION=us-east-2" >> .env

- name: Install Dependencies
run: yarn install

- name: Build backend
run: npx nx build backend
231 changes: 118 additions & 113 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
@@ -1,113 +1,118 @@
name: CI/CD

# First runs linter and tests all affected projects
# Then, for each project that requires deployment, deploy-<project>-<service-type> is added
# Environment variables are labelled <project-name>_SHORT_DESCRIPTION

on:
push:
branches: ['main']
pull_request:
branches: ['main']
workflow_dispatch:
inputs:
manual-deploy:
description: 'App to Deploy'
required: false
default: ''

concurrency:
# Never have two deployments happening at the same time (potential race condition)
group: '{{ github.head_ref || github.ref }}'

jobs:
pre-deploy:
runs-on: ubuntu-latest
outputs:
affected: ${{ steps.should-deploy.outputs.affected }}
steps:
- uses: actions/checkout@v3
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- name: Use Node.js 20
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: 'yarn'

- name: Install Dependencies
run: yarn install

# In any subsequent steps within this job (myjob) we can reference the resolved SHAs
# using either the step outputs or environment variables:
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v3

- run: |
echo "BASE: ${{ env.NX_BASE }}"
echo "HEAD: ${{ env.NX_HEAD }}"

- name: Nx Affected Lint
run: npx nx affected -t lint

# - name: Nx Affected Test
# run: npx nx affected -t test

- name: Nx Affected Build
run: npx nx affected -t build

- name: Determine who needs to be deployed
id: should-deploy
run: |
echo "The following projects have been affected: [$(npx nx print-affected -t build --select=tasks.target.project)]";
echo "affected=$(npx nx print-affected -t build --select=tasks.target.project)" >> "$GITHUB_OUTPUT"

deploy-debug:
needs: pre-deploy
runs-on: ubuntu-latest
steps:
- name: Debug logs
run: |
echo "Manual Deploy: ${{github.event.inputs.manual-deploy}}";
echo "Affected Names: ${{needs.pre-deploy.outputs.affected}}";
echo "Event: ${{github.event_name}}";
echo "Ref: ${{github.ref}}";
echo "Will deploy?: ${{(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'}}";

deploy-frontend:
needs: pre-deploy
if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-frontend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-frontend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
# For "simplicity", deployment settings are configured in the AWS Amplify Console
# This just posts to a webhook telling Amplify to redeploy the main branch
steps:
- name: Tell Amplify to rebuild
run: curl -X POST -d {} ${C4C_OPS_WEBHOOK_DEPLOY} -H "Content-Type:application/json"
env:
C4C_OPS_WEBHOOK_DEPLOY: ${{ secrets.C4C_OPS_WEBHOOK_DEPLOY }}

deploy-backend:
needs: pre-deploy
if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-backend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-backend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16.x
cache: 'yarn'

- name: Install Dependencies
run: yarn install

- run: npx nx build c4c-ops-backend --configuration production
- name: default deploy
uses: appleboy/lambda-action@master
with:
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_REGION }}
function_name: c4c-ops-monolith-lambda
source: dist/apps/c4c-ops/c4c-ops-backend/main.js
# Note:
# This CICD requires AWS Amplify to be setup which tends to not be the case until the app is close to being deployed
# Therefore this is not useful for a the beginning chunk of development where everything is tested locally
# Therefore other pipelines have been made to test things locally, but once AWS Amplify is setup this can be used.

# name: Legacy CI/CD

# # First runs linter and tests all affected projects
# # Then, for each project that requires deployment, deploy-<project>-<service-type> is added
# # Environment variables are labelled <project-name>_SHORT_DESCRIPTION

# on:
# push:
# branches: ['main']
# pull_request:
# branches: ['main']
# workflow_dispatch:
# inputs:
# manual-deploy:
# description: 'App to Deploy'
# required: false
# default: ''

# concurrency:
# # Never have two deployments happening at the same time (potential race condition)
# group: '{{ github.head_ref || github.ref }}'

# jobs:
# pre-deploy:
# runs-on: ubuntu-latest
# outputs:
# affected: ${{ steps.should-deploy.outputs.affected }}
# steps:
# - uses: actions/checkout@v3
# with:
# # We need to fetch all branches and commits so that Nx affected has a base to compare against.
# fetch-depth: 0
# - name: Use Node.js 20
# uses: actions/setup-node@v3
# with:
# node-version: 20.x
# cache: 'yarn'

# - name: Install Dependencies
# run: yarn install

# # In any subsequent steps within this job (myjob) we can reference the resolved SHAs
# # using either the step outputs or environment variables:
# - name: Derive appropriate SHAs for base and head for `nx affected` commands
# uses: nrwl/nx-set-shas@v3

# - run: |
# echo "BASE: ${{ env.NX_BASE }}"
# echo "HEAD: ${{ env.NX_HEAD }}"

# - name: Nx Affected Lint
# run: npx nx affected -t lint

# # - name: Nx Affected Test
# # run: npx nx affected -t test

# - name: Nx Affected Build
# run: npx nx affected -t build

# - name: Determine who needs to be deployed
# id: should-deploy
# run: |
# echo "The following projects have been affected: [$(npx nx print-affected -t build --select=tasks.target.project)]";
# echo "affected=$(npx nx print-affected -t build --select=tasks.target.project)" >> "$GITHUB_OUTPUT"

# deploy-debug:
# needs: pre-deploy
# runs-on: ubuntu-latest
# steps:
# - name: Debug logs
# run: |
# echo "Manual Deploy: ${{github.event.inputs.manual-deploy}}";
# echo "Affected Names: ${{needs.pre-deploy.outputs.affected}}";
# echo "Event: ${{github.event_name}}";
# echo "Ref: ${{github.ref}}";
# echo "Will deploy?: ${{(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'}}";

# deploy-frontend:
# needs: pre-deploy
# if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-frontend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-frontend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
# runs-on: ubuntu-latest
# # For "simplicity", deployment settings are configured in the AWS Amplify Console
# # This just posts to a webhook telling Amplify to redeploy the main branch
# steps:
# - name: Tell Amplify to rebuild
# run: curl -X POST -d {} ${C4C_OPS_WEBHOOK_DEPLOY} -H "Content-Type:application/json"
# env:
# C4C_OPS_WEBHOOK_DEPLOY: ${{ secrets.C4C_OPS_WEBHOOK_DEPLOY }}

# deploy-backend:
# needs: pre-deploy
# if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-backend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-backend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Use Node.js 16
# uses: actions/setup-node@v3
# with:
# node-version: 16.x
# cache: 'yarn'

# - name: Install Dependencies
# run: yarn install

# - run: npx nx build c4c-ops-backend --configuration production
# - name: default deploy
# uses: appleboy/lambda-action@master
# with:
# aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws_region: ${{ secrets.AWS_REGION }}
# function_name: c4c-ops-monolith-lambda
# source: dist/apps/c4c-ops/c4c-ops-backend/main.js
33 changes: 33 additions & 0 deletions .github/workflows/frontend_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Frontend build

on:
push:
branches: ['main']
pull_request:
branches: ['main']

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use NodeJS 24.x
uses: actions/setup-node@v4
with:
node-version: 24.x
cache: 'yarn'

- name: Create .env file
run: |

echo "AWS_SECRET_ACCESS_KEY=dummy" >> .env
echo "AWS_ACCESS_KEY_ID=dummy" >> .env
echo "AWS_REGION=us-east-2" >> .env

- name: Install Dependencies
run: yarn install

- name: Build frontend
run: npx nx build frontend
36 changes: 36 additions & 0 deletions .github/workflows/jest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Jest run

on:
push:
branches: ['main']
pull_request:
branches: ['main']

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use NodeJS 24.x
uses: actions/setup-node@v4
with:
node-version: 24.x
cache: 'yarn'

- name: Create .env file
run: |

echo "AWS_BUCKET_NAME=dummy" >> .env
echo "AWS_SECRET_ACCESS_KEY=dummy" >> .env
echo "AWS_ACCESS_KEY_ID=dummy" >> .env
echo "AWS_REGION=us-east-2" >> .env

- name: Install Dependencies
run: yarn install

- name: Run Jest tests
run: yarn test

26 changes: 26 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Linter run

on:
push:
branches: ['main']
pull_request:
branches: ['main']

jobs:
lint:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use Node.js 24.x
uses: actions/setup-node@v4
with:
node-version: 24.x
cache: 'yarn'

- name: Install Dependencies
run: yarn install

- name: Run linter
run: npx nx affected -t lint
5 changes: 2 additions & 3 deletions nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
"$schema": "./node_modules/nx/schemas/nx-schema.json",
"tasksRunnerOptions": {
"default": {
"runner": "nx-cloud",
"runner": "nx/tasks-runners/default",
"options": {
"cacheableOperations": ["build", "lint", "test", "e2e"],
"accessToken": "OTc0MjgyZDgtMTYzYy00OTYwLTg5NWEtNDQ5YTg2ZjJkMDU2fHJlYWQtd3JpdGU="
"cacheableOperations": ["build", "lint", "test", "e2e"]
}
}
},
Expand Down
Loading