Skip to content

chore: update Node.js version requirement to v16 #11

chore: update Node.js version requirement to v16

chore: update Node.js version requirement to v16 #11

name: Deploy PR Preview
on:
pull_request:
types: [opened, synchronize, reopened]
branches: ['main']
permissions:
contents: read
pages: write
id-token: write
pull-requests: write
security-events: write
# Cancel in-progress runs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
quality:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history for all branches and tags
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
continue-on-error: true
- name: Type check
run: |
npm run typecheck || echo "Type check failed but continuing"
continue-on-error: true
- name: Run unit tests
run: npm test
preview_and_test:
name: Preview Deploy & E2E
needs: quality
runs-on: ubuntu-latest
environment:
name: pr-preview
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
env:
VITE_APP_ENV: preview
- name: Cache build output
uses: actions/cache@v3
with:
path: dist
key: ${{ runner.os }}-build-${{ github.sha }}
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: './dist'
- name: Deploy PR Preview
id: deployment
uses: actions/deploy-pages@v2
with:
preview: true
- name: Comment PR
uses: actions/github-script@v6
with:
script: |
const url = `${{ steps.deployment.outputs.page_url }}`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `🚀 Preview URL: ${url}`
});
- name: Check required secrets
run: |
if [ -z "${{ secrets.AUTOMAGICALLY_TOKEN }}" ]; then
echo "::error::Missing required secret: AUTOMAGICALLY_TOKEN"
exit 1
fi
if [ -z "${{ secrets.AUTOMAGICALLY_TEST_TARGET_ID }}" ]; then
echo "::error::Missing required secret: AUTOMAGICALLY_TEST_TARGET_ID"
exit 1
fi
- name: Run E2E tests
id: e2e
uses: OctoMind-dev/automagically-action-execute@v2
continue-on-error: true
with:
url: ${{ steps.deployment.outputs.page_url }}
token: ${{ secrets.AUTOMAGICALLY_TOKEN }}
testTargetId: ${{ secrets.AUTOMAGICALLY_TEST_TARGET_ID }}
blocking: true
- name: Report Workflow Status
if: always()
uses: actions/github-script@v6
with:
script: |
const { owner, repo } = context.repo;
const run_id = context.runId;
const run_url = `https://github.com/${owner}/${repo}/actions/runs/${run_id}`;
const status = '${{ steps.e2e.conclusion || steps.e2e.outcome || '' }}' === 'failure'
? '❌ E2E tests failed'
: '✅ All checks completed';
const body = `### Workflow Status\n${status}\n\nFor detailed test results, check the OctoMind report in the PR.\n\n🔍 [View Workflow Details](${run_url})`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: owner,
repo: repo,
body: body
});