Skip to content

feat(storybook): testing #51

feat(storybook): testing

feat(storybook): testing #51

name: CrudeCards - Pipeline - Dev - Web
on:
push:
branches: [dev]
workflow_dispatch:
jobs:
deploy-cloud-run:
runs-on: ubuntu-latest
environment: Development
env:
CI_REGISTRY: us-west1-docker.pkg.dev
# REGISTRY: us-west1-docker.pkg.dev/constructworks-dev-01/crude-cards/crude-cards-web
# GCP Project ID
PROJECT_ID: constructworks-dev-01
# Repository name within the GCP project
REPOSITORY_NAME: crude-cards
# Specific image name within the repository
SERVICE_NAME: crude-cards-web-service
# Region where the Cloud Run service is deployed
REGION: us-west1
# trunk-ignore(checkov/CKV2_GHA_1)
permissions:
contents: write # Allows the job to write back to the repository, necessary for actions like pushing commits or tags
id-token: write
steps:
# Get last updates
- name: Checkout
uses: actions/checkout@v4
# Install pnpm
- name: Install pnpm
run: npm install -g pnpm
# Set up Node.js 20
- name: Setup Node.js v20
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
check-latest: true
node-version: "20"
cache: pnpm
# Write to complete env file
- name: env file
run: |-
# Secrets
echo GH_TOKEN = "${{ secrets.GH_TOKEN }}" >> .env
echo BACKEND_DATABASE_PASS = "${{ secrets.BACKEND_DATABASE_PASS }}" >> .env
echo OCO_OPENAI_API_KEY = "${{ secrets.OCO_OPENAI_API_KEY }}" >> .env
echo OPENAI_API_KEY = "${{ secrets.OPENAI_API_KEY }}" >> .env
# Front End Visible
echo NEXT_PUBLIC_APP_ID = "${{ vars.NEXT_PUBLIC_APP_ID }}" >> .env
echo NEXT_PUBLIC_BROWSER_WINDOW_LOCATION_ORIGIN = "${{ vars.NEXT_PUBLIC_BROWSER_WINDOW_LOCATION_ORIGIN }}" >> .env
echo NEXT_PUBLIC_GOOGLE_ANALYTICS_ID = "${{ vars.NEXT_PUBLIC_GOOGLE_ANALYTICS_ID }}" >> .env
echo NEXT_PUBLIC_WEB_SOCKET_HOST_ORIGIN = "${{ vars.NEXT_PUBLIC_WEB_SOCKET_HOST_ORIGIN }}" >> .env
echo NEXT_PUBLIC_NEXT_COUNTDOWN_TIMER_DURATION_SECONDS = "${{ vars.NEXT_PUBLIC_NEXT_COUNTDOWN_TIMER_DURATION_SECONDS }}" >> .env
# Backend Database
echo BACKEND_DATABASE_HOST = "${{ vars.BACKEND_DATABASE_HOST }}" >> .env
echo BACKEND_DATABASE_USER = "${{ vars.BACKEND_DATABASE_USER }}" >> .env
echo BACKEND_DATABASE_NAME = "${{ vars.BACKEND_DATABASE_NAME }}" >> .env
echo BACKEND_DATABASE_PORT = "${{ vars.BACKEND_DATABASE_PORT }}" >> .env
echo BACKEND_PORT = "${{ vars.BACKEND_PORT }}" >> .env
# Stuff
echo WEB_SOCKET_CORS_ALLOWED_ORIGIN = "${{ vars.WEB_SOCKET_CORS_ALLOWED_ORIGIN }}" >> .env
echo GCP_LOGGER_PROJECT_ID = "${{ vars.GCP_LOGGER_PROJECT_ID }}" >> .env
echo LOGGING_LEVEL = "${{ vars.LOGGING_LEVEL }}" >> .env
echo NEXT_PUBLIC_IS_DEBUG_OVERLAY_VISIBLE = "${{ vars.NEXT_PUBLIC_IS_DEBUG_OVERLAY_VISIBLE }}" >> .env
- run: node -v
- run: pwd
- run: pnpm install
- run: pnpm --prefix src/api install
# Disable next.js spyware
- run: pnpm run job:disable-snooping
# Increment the version number of package.json
- run: pnpm run ci-semantic-release
# Authenticate on GCP using service account
- id: Auth
name: Authenticate to Google Cloud
uses: google-github-actions/auth@v1
with:
credentials_json: "${{ secrets.SERVICEACCOUNT }}"
# Get short commit hash for tagging
- uses: benjlevesque/[email protected]
id: short-sha
with:
length: 6
# Construct the REGISTRY variable
- name: Set REGISTRY variable
run: echo "REGISTRY=${{ env.CI_REGISTRY }}/${{ env.PROJECT_ID }}/${{ env.REPOSITORY_NAME }}/${{ env.SERVICE_NAME }}" >> $GITHUB_ENV
# build and tag image docker
- name: docker build
run: docker build -f DockerfileWeb -t ${{ env.REGISTRY }}:${{ env.SHA }} -t ${{ env.REGISTRY }}:latest .
# Authenticate to Artifact registry
- name: Login to GAR
uses: docker/login-action@v3
with:
registry: us-west1-docker.pkg.dev
username: _json_key
password: ${{ secrets.SERVICEACCOUNT }}
# Push image to ar
- name: docker push
run: docker push ${{ env.REGISTRY }} --all-tags
#Deploy revision to Cloud run
- id: deploy
uses: google-github-actions/deploy-cloudrun@v2
with:
project_id: constructworks-dev-01
region: us-west1
service: crude-cards-web
image: ${{ env.REGISTRY }}:${{ env.SHA }}