barsa 75dc6ec15d Refactor Linting Configuration and Update GitHub Workflows
- Updated linting configuration to use 'eslint --fix' for automatic code formatting on staged files.
- Removed explicit version specification for pnpm in GitHub workflows to allow for flexibility in version management.
- Enhanced opportunity resolution service with locking mechanism to prevent race conditions during opportunity creation.
- Simplified Salesforce account service by querying the auto-generated account number instead of generating it manually.
- Improved cancellation date handling in internet cancellation service to avoid timezone issues.
2025-12-25 16:01:02 +09:00

106 lines
3.8 KiB
YAML

name: Build & Push Images
on:
workflow_dispatch: # Only allow manual triggers
# push:
# branches: [main] # Commented out - no auto-trigger
env:
REGISTRY: ghcr.io
IMAGE_NAME_PREFIX: ntumurbars/customer-portal
jobs:
build-and-push:
name: Build & Push Docker Images
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for frontend
id: meta-frontend
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_PREFIX }}-frontend
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=sha,prefix=main-
- name: Extract metadata for backend
id: meta-backend
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_PREFIX }}-backend
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=sha,prefix=main-
- name: Build and push frontend image
uses: docker/build-push-action@v5
with:
context: .
file: ./apps/portal/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.meta-frontend.outputs.tags }}
labels: ${{ steps.meta-frontend.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build and push backend image
uses: docker/build-push-action@v5
with:
context: .
file: ./apps/bff/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.meta-backend.outputs.tags }}
labels: ${{ steps.meta-backend.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build Summary
run: |
echo "## 🚀 Build Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Frontend Image:** \`${{ steps.meta-frontend.outputs.tags }}\`" >> $GITHUB_STEP_SUMMARY
echo "**Backend Image:** \`${{ steps.meta-backend.outputs.tags }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📦 Images Built:" >> $GITHUB_STEP_SUMMARY
echo "- **Frontend**: [ghcr.io/${{ env.IMAGE_NAME_PREFIX }}-frontend](https://github.com/NTumurbars/customer-portal/pkgs/container/customer-portal-frontend)" >> $GITHUB_STEP_SUMMARY
echo "- **Backend**: [ghcr.io/${{ env.IMAGE_NAME_PREFIX }}-backend](https://github.com/NTumurbars/customer-portal/pkgs/container/customer-portal-backend)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🚀 Next Steps:" >> $GITHUB_STEP_SUMMARY
echo "1. **SSH to Plesk server** and run:" >> $GITHUB_STEP_SUMMARY
echo " \`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo " docker compose -f compose-plesk.yaml pull" >> $GITHUB_STEP_SUMMARY
echo " docker compose -f compose-plesk.yaml up -d" >> $GITHUB_STEP_SUMMARY
echo " \`\`\`" >> $GITHUB_STEP_SUMMARY
echo "2. **Or update via Plesk UI**: Docker → Stacks → customer-portal → Pull → Up" >> $GITHUB_STEP_SUMMARY