Skip to content

Commit cf17dc8

Browse files
committed
Add GitHub Actions auto-deploy workflow
1 parent dfa0bdb commit cf17dc8

2 files changed

Lines changed: 118 additions & 0 deletions

File tree

.github/workflows/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# GitHub Actions Setup
2+
3+
This workflow automatically deploys to Firebase on every push to main or the development branch.
4+
5+
## Required Secrets
6+
7+
Go to: `https://github.com/AlbDev/albdev.al/settings/secrets/actions`
8+
9+
Add these secrets:
10+
11+
### Firebase Configuration (Public - from Firebase Console)
12+
- `NUXT_PUBLIC_FIREBASE_API_KEY` = `AIzaSyDSeTvW6CbgBjRUfzG734CVuC54pv9iajM`
13+
- `NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN` = `albaniandotdev.firebaseapp.com`
14+
- `NUXT_PUBLIC_FIREBASE_PROJECT_ID` = `albaniandotdev`
15+
- `NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET` = `albaniandotdev.firebasestorage.app`
16+
- `NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID` = `189842779837`
17+
- `NUXT_PUBLIC_FIREBASE_APP_ID` = `1:189842779837:web:38ac2bfc404c52a69bd1d4`
18+
19+
### Firebase Admin (Private - from service-account.json)
20+
- `FIREBASE_PRIVATE_KEY` = The private_key field (including -----BEGIN/END PRIVATE KEY-----)
21+
- `FIREBASE_CLIENT_EMAIL` = `firebase-adminsdk-oyxcx@albaniandotdev.iam.gserviceaccount.com`
22+
23+
### Firebase Service Account (Private - entire JSON)
24+
- `FIREBASE_SERVICE_ACCOUNT` = Entire contents of service-account.json file
25+
26+
### Base.al OAuth
27+
- `OAUTH_BASE_CLIENT_ID` = `albdev-DzI`
28+
- `OAUTH_BASE_CLIENT_SECRET` = `1Zeyr4zb-G-albdev-4bT`
29+
- `OAUTH_BASE_REDIRECT_URI` = `https://albanian.dev/auth/callback`
30+
31+
## How to Add Secrets
32+
33+
1. Go to your repository on GitHub
34+
2. Click Settings → Secrets and variables → Actions
35+
3. Click "New repository secret"
36+
4. Add each secret from the list above
37+
38+
## Manual Deployment
39+
40+
You can also trigger deployment manually:
41+
1. Go to Actions tab
42+
2. Select "Deploy to Firebase" workflow
43+
3. Click "Run workflow"
44+
45+
## After Setup
46+
47+
Once secrets are added, every push to the branch will automatically:
48+
1. Build the Nuxt app
49+
2. Deploy to Firebase Hosting
50+
3. Deploy Firestore rules and indexes
51+
4. Your app goes live!

.github/workflows/deploy.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Deploy to Firebase
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- claude/nuxt4-ui-firebase-setup-011CUqZEZEx1ZMKWjMwKBmSu
8+
workflow_dispatch:
9+
10+
jobs:
11+
deploy:
12+
name: Build and Deploy
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v4
18+
19+
- name: Setup Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: '20'
23+
cache: 'npm'
24+
25+
- name: Install dependencies
26+
run: npm ci
27+
28+
- name: Create .env file
29+
run: |
30+
cat > .env << 'EOF'
31+
# Firebase Client Config (Public)
32+
NUXT_PUBLIC_FIREBASE_API_KEY=${{ secrets.NUXT_PUBLIC_FIREBASE_API_KEY }}
33+
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN=${{ secrets.NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN }}
34+
NUXT_PUBLIC_FIREBASE_PROJECT_ID=${{ secrets.NUXT_PUBLIC_FIREBASE_PROJECT_ID }}
35+
NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET=${{ secrets.NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET }}
36+
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }}
37+
NUXT_PUBLIC_FIREBASE_APP_ID=${{ secrets.NUXT_PUBLIC_FIREBASE_APP_ID }}
38+
39+
# Firebase Admin (Server-side)
40+
FIREBASE_PRIVATE_KEY="${{ secrets.FIREBASE_PRIVATE_KEY }}"
41+
FIREBASE_CLIENT_EMAIL="${{ secrets.FIREBASE_CLIENT_EMAIL }}"
42+
43+
# Base.al OAuth
44+
OAUTH_BASE_CLIENT_ID=${{ secrets.OAUTH_BASE_CLIENT_ID }}
45+
OAUTH_BASE_CLIENT_SECRET=${{ secrets.OAUTH_BASE_CLIENT_SECRET }}
46+
OAUTH_BASE_REDIRECT_URI=${{ secrets.OAUTH_BASE_REDIRECT_URI }}
47+
NUXT_PUBLIC_OAUTH_BASE_AUTHORIZE_URL=https://accounts.base.al/oauth/authorize
48+
NUXT_PUBLIC_OAUTH_BASE_TOKEN_URL=https://accounts.base.al/oauth/token
49+
NUXT_PUBLIC_OAUTH_BASE_USERINFO_URL=https://accounts.base.al/oauth/userinfo
50+
EOF
51+
52+
- name: Build application
53+
run: npm run build
54+
55+
- name: Deploy to Firebase
56+
uses: FirebaseExtended/action-hosting-deploy@v0
57+
with:
58+
repoToken: ${{ secrets.GITHUB_TOKEN }}
59+
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT }}
60+
projectId: albaniandotdev
61+
channelId: live
62+
63+
- name: Deploy Firestore rules
64+
run: |
65+
echo '${{ secrets.FIREBASE_SERVICE_ACCOUNT }}' > service-account.json
66+
export GOOGLE_APPLICATION_CREDENTIALS=service-account.json
67+
npx firebase-tools deploy --only firestore:rules,firestore:indexes --project albaniandotdev --non-interactive --force

0 commit comments

Comments
 (0)