-
Notifications
You must be signed in to change notification settings - Fork 9
137 lines (115 loc) · 3.73 KB
/
preview-deploy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: Deploy PR Preview
on:
pull_request:
types: [opened, synchronize, reopened]
branches: ['main']
permissions:
contents: read
pages: write
id-token: write
pull-requests: write
concurrency:
group: "preview-${{ github.ref }}"
cancel-in-progress: true
jobs:
quality:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
continue-on-error: true
- name: Run tests
run: npm test
continue-on-error: true
deploy-preview:
needs: quality
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
env:
VITE_APP_ENV: preview
GITHUB_PAGES: true
BASE_URL: /copy-trading/
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: dist
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v3
with:
preview: true
- name: Comment PR
if: success()
uses: actions/github-script@v7
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 deployed to: ${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@v7
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
});