Skip to content

Commit

Permalink
Merge pull request #142 from wizelineacademy/app/ci/release
Browse files Browse the repository at this point in the history
ci: 🎡 Prepare to release
  • Loading branch information
william-monroy authored Nov 27, 2023
2 parents 81b2fb0 + e19e385 commit f14b059
Show file tree
Hide file tree
Showing 11 changed files with 374 additions and 106 deletions.
213 changes: 213 additions & 0 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
name: CICD

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

jobs:
Build:
name: Build
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"

- name: Install dependencies
run: |
npm install -g pnpm && pnpm install --no-frozen-lockfile
- name: Setup environment variables
run: echo "${{ secrets.APPS_WEB_ENV }}" >> apps/web/.env

- name: Check environment variables
run: |
cat apps/web/.env
- name: Build
run: |
pnpm build
- name: Check build
run: |
ls
# - name: Test
# run: |
# pnpm test:ci --if-present

Release:
name: Release
needs: [Build, DeployStagingWeb, DeployStagingDocs]
permissions:
contents: write
issues: write
pull-requests: write
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: ./.github/workflows/release.yml

Check:
name: Check PR
permissions:
contents: write
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"

- name: Install dependencies
run: |
npm install -g pnpm && pnpm install --no-frozen-lockfile
- name: Setup environment variables
run: echo "${{ secrets.APPS_WEB_ENV }}" >> apps/web/.env

- name: Check environment variables
run: |
cat apps/web/.env
# - name: Test
# run: |
# pnpm test --if-present

DeployStagingWeb:
name: Deploy to Staging Web
permissions:
contents: write
if: github.event.ref == 'refs/heads/main'
needs: [Build]
runs-on: ubuntu-latest
environment:
name: Production Web
url: "http://52.54.237.87:3000"
steps:
- uses: actions/checkout@v2

- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"

- name: Move to docs directory
run: cd apps/web

- name: Check current directory
run: |
pwd
- name: Install dependencies
run: |
npm install -g pnpm
cd apps/web && pnpm install --no-frozen-lockfile
- name: Setup environment variables
run: echo "${{ secrets.APPS_WEB_ENV }}" >> apps/web/.env

- name: Check environment variables
run: |
cat apps/web/.env
- name: Build
run: |
cd apps/web && pnpm build
- name: Stop server
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && pm2 stop all"
- name: Clean LightSail directory
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "rm -rf apps/web"
- name: Deploy to Lightsail using scp
run: |
sudo apt-get install -y sshpass
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" scp -o StrictHostKeyChecking=no -r apps/web [email protected]:/home/ubuntu/apps --exclude node_modules
- name: Set custom package.json
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && echo ${{secrets.APPS_WEB_PACKAGE}} > package.json"
- name: Start server
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && pnpm install && pm2 start pnpm --name "web" -- start"
- name: Create output artifact
uses: actions/upload-artifact@v2
with:
name: web
path: apps/web

DeployStagingDocs:
name: Deploy to Staging Docs
permissions:
contents: write
if: github.event.ref == 'refs/heads/main'
needs: [Build]
runs-on: ubuntu-latest
environment:
name: Production Docs
url: "http://52.54.237.87:3001"
steps:
- uses: actions/checkout@v2

- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"

- name: Move to docs directory
run: cd apps/docs

- name: Check current directory
run: |
pwd
- name: Install dependencies
run: |
npm install -g pnpm
cd apps/web && pnpm install --no-frozen-lockfile
- name: Build
run: |
cd apps/docs && pnpm build
- name: Stop server
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/docs && pm2 stop all"
- name: Clean LightSail directory
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "rm -rf apps/docs"
- name: Deploy to Lightsail using scp excluding node_modules
run: |
sudo apt-get install -y sshpass
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" scp -o StrictHostKeyChecking=no -r apps/docs [email protected]:/home/ubuntu/apps --exclude node_modules
- name: Set custom package.json
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/docs && echo ${{secrets.APPS_DOCS_PACKAGE}} > package.json"
- name: Start server
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/docs && pnpm install && pm2 start pnpm --name "docs" -- start"
- name: Create output artifact
uses: actions/upload-artifact@v2
with:
name: docs
path: apps/docs
20 changes: 7 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,24 @@
name: Release

on:
workflow_dispatch:
workflow_call:

jobs:
release:
name: Release
permissions:
contents: write
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: SpicyPizza/[email protected]
with:
envkey_DEBUG: false
envkey_PORT: 3000
envkey_DATABASE_URL: ${{ secrets.DATABASE_URL }}
directory: ./apps/web
file_name: .env
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 18
- run: npm i -g pnpm
- run: pnpm install --no-frozen-lockfile
- run: pnpm build
node-version: "18.x"
- run: npm -g install @semantic-release/git semantic-release && semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12 changes: 10 additions & 2 deletions apps/web/components/admin/groupBody/molecules/group-table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,11 @@ export default function GroupTable({
console.log("Selected keys: ", selectedKeys);
console.log("Selected keys2: ", Array.from(selectedKeys));
const response = await fetch(
`http://localhost:3000/api/groups/add-users/${idGroup}`,
`http://${
process.env.ENVIROMENT === "production"
? process.env.PROD_DOMAIN
: "localhost"
}:3000/api/groups/add-users/${idGroup}`,
{
method: "PATCH",
headers: {
Expand Down Expand Up @@ -123,7 +127,11 @@ export default function GroupTable({
const updateUserRole = async (userId: number, role: Role): Promise<void> => {
try {
const response = await fetch(
`http://localhost:3000/api/users/${userId}`,
`http://${
process.env.ENVIROMENT === "production"
? process.env.PROD_DOMAIN
: "localhost"
}:3000/api/users/${userId}`,
{
method: "PATCH",
headers: {
Expand Down
11 changes: 9 additions & 2 deletions apps/web/components/admin/groupBody/organisms/group-body.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ import { Spinner } from "@nextui-org/react";
import { toast } from "sonner";
import type { GroupsContextShape } from "@/context/groups-context";
import { GroupsContext } from "@/context/groups-context";
import { GroupsActionType, placeHolderGroupData } from "@/helpers/group-helpers";
import {
GroupsActionType,
placeHolderGroupData,
} from "@/helpers/group-helpers";
import type { GroupData } from "@/types/group-types";
import { GroupHeader } from "../molecules/group-header";
import EditGroupMenuModal from "../../editGroup/molcules/edit-group-menu-modal";
Expand Down Expand Up @@ -63,7 +66,11 @@ export default function GroupBody(): JSX.Element {
async function getGroupData(): Promise<void> {
try {
const response = await fetch(
`http://localhost:3000/api/groups/${idGroup}`,
`http://${
process.env.ENVIROMENT === "production"
? process.env.PROD_DOMAIN
: "localhost"
}:3000/api/groups/${idGroup}`,
{
method: "GET",
headers: {
Expand Down
12 changes: 10 additions & 2 deletions apps/web/components/admin/modals/add-user-modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ function AddUserModal({
async function getUsers(): Promise<void> {
try {
// Modify the URL to include the groupId
const url = `http://localhost:3000/api/users/group/${idGroup}`;
const url = `http://${
process.env.ENVIROMENT === "production"
? process.env.PROD_DOMAIN
: "localhost"
}:3000/api/users/group/${idGroup}`;

const response = await fetch(url, {
method: "GET",
Expand Down Expand Up @@ -99,7 +103,11 @@ function AddUserModal({

// Send the POST request to your API endpoint
const response = await fetch(
`http://localhost:3000/api/groups/add-users/${idGroup}`,
`http://${
process.env.ENVIROMENT === "production"
? process.env.PROD_DOMAIN
: "localhost"
}:3000/api/groups/add-users/${idGroup}`,
{
method: "POST",
headers: {
Expand Down
Loading

0 comments on commit f14b059

Please sign in to comment.