-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (121 loc) · 5.38 KB
/
Copy pathci-dev.yml
File metadata and controls
136 lines (121 loc) · 5.38 KB
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
name: CI e Deploy Dev
on:
push:
branches:
- develop
workflow_dispatch:
permissions:
contents: read
concurrency:
group: layoutparser-web-development
cancel-in-progress: true
jobs:
deploy-dev:
if: github.ref == 'refs/heads/develop'
name: Desenvolvimento HTTPS (React + BFF)
runs-on: [self-hosted, windows, dev-local]
timeout-minutes: 60
environment:
name: development
env:
GIT_CONFIG_COUNT: '2'
GIT_CONFIG_KEY_0: core.autocrlf
GIT_CONFIG_VALUE_0: 'false'
GIT_CONFIG_KEY_1: core.eol
GIT_CONFIG_VALUE_1: lf
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 1
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '24.x'
cache: 'npm'
cache-dependency-path: |
package-lock.json
server/package-lock.json
- name: Instalar dependências
shell: powershell
run: |
npm ci
if ($LASTEXITCODE -ne 0) { throw 'npm ci do front falhou.' }
npm ci --prefix server
if ($LASTEXITCODE -ne 0) { throw 'npm ci do BFF falhou.' }
- name: Instalar Chromium para o gate E2E real
shell: powershell
run: |
npx playwright install chromium
if ($LASTEXITCODE -ne 0) { throw 'Instalação do Chromium para o E2E real falhou.' }
# Gate de aceitação antes de qualquer build/deploy: usa navegador, front, BFF e API reais.
# A fixture fica fora do workspace Git para impedir vazamento do documento corporativo.
- name: Gate E2E real do MQSeries
shell: powershell
env:
REAL_E2E_API_URL: ${{ vars.LAYOUTPARSER_API_URL_DEV }}
REAL_E2E_FIXTURE_DIR: ${{ vars.REAL_E2E_FIXTURE_DIR }}
REAL_E2E_LAYOUT_NAME: ${{ vars.REAL_E2E_LAYOUT_NAME }}
run: |
npm run test:e2e:real
if ($LASTEXITCODE -ne 0) {
throw 'Gate E2E real falhou; quality, build e deploy foram bloqueados.'
}
- name: Quality gates e builds same-origin
shell: powershell
env:
VITE_API_BASE_URL: ''
run: |
npm run quality
if ($LASTEXITCODE -ne 0) { throw 'Quality gates falharam.' }
- name: Garantir ARR 3 no IIS de desenvolvimento
shell: powershell
run: ./scripts/Install-IisArr.ps1
- name: Garantir HTTPS no IIS de desenvolvimento
shell: powershell
env:
IIS_SITE_NAME: ${{ vars.IIS_SITE_NAME_DEV }}
PUBLIC_HOST: ${{ vars.PUBLIC_HOST_DEV }}
run: |
if ([string]::IsNullOrWhiteSpace($env:IIS_SITE_NAME)) { throw 'Variável IIS_SITE_NAME_DEV ausente.' }
if ([string]::IsNullOrWhiteSpace($env:PUBLIC_HOST)) { throw 'Variável PUBLIC_HOST_DEV ausente.' }
./scripts/Initialize-IisDevHttps.ps1 `
-SiteName $env:IIS_SITE_NAME `
-PublicHost $env:PUBLIC_HOST
- name: Publicar ambiente de desenvolvimento
shell: powershell
env:
DEPLOY_ROOT: ${{ vars.DEPLOY_PATH_DEV }}
IIS_SITE_NAME: ${{ vars.IIS_SITE_NAME_DEV }}
PUBLIC_HOST: ${{ vars.PUBLIC_HOST_DEV }}
LAYOUTPARSER_API_URL: ${{ vars.LAYOUTPARSER_API_URL_DEV }}
BFF_ADMIN_USERS: ${{ secrets.BFF_ADMIN_USERS_DEV }}
BFF_ADMIN_ROLES: ${{ secrets.BFF_ADMIN_ROLES_DEV }}
ENTRA_TENANT_ID: ${{ vars.ENTRA_TENANT_ID }}
ENTRA_CLIENT_ID: ${{ vars.ENTRA_CLIENT_ID }}
ENTRA_CLIENT_SECRET: ${{ secrets.ENTRA_CLIENT_SECRET }}
GOOGLE_CLIENT_ID: ${{ vars.GOOGLE_CLIENT_ID }}
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }}
run: |
if ([string]::IsNullOrWhiteSpace($env:DEPLOY_ROOT)) { throw 'Variable DEPLOY_PATH_DEV ausente.' }
if ([string]::IsNullOrWhiteSpace($env:IIS_SITE_NAME)) { throw 'Variable IIS_SITE_NAME_DEV ausente.' }
if ([string]::IsNullOrWhiteSpace($env:PUBLIC_HOST)) { throw 'Variable PUBLIC_HOST_DEV ausente.' }
if ([string]::IsNullOrWhiteSpace($env:LAYOUTPARSER_API_URL)) { throw 'Variable LAYOUTPARSER_API_URL_DEV ausente.' }
if ([string]::IsNullOrWhiteSpace($env:ENTRA_TENANT_ID)) { throw 'Variable ENTRA_TENANT_ID ausente.' }
if ([string]::IsNullOrWhiteSpace($env:ENTRA_CLIENT_ID)) { throw 'Variable ENTRA_CLIENT_ID ausente.' }
if ([string]::IsNullOrWhiteSpace($env:ENTRA_CLIENT_SECRET)) { throw 'Secret ENTRA_CLIENT_SECRET ausente.' }
if ([string]::IsNullOrWhiteSpace($env:GOOGLE_CLIENT_ID)) { throw 'Variable GOOGLE_CLIENT_ID ausente.' }
if ([string]::IsNullOrWhiteSpace($env:GOOGLE_CLIENT_SECRET)) { throw 'Secret GOOGLE_CLIENT_SECRET ausente.' }
& ./scripts/Deploy-Iis.ps1 `
-DeployRoot $env:DEPLOY_ROOT `
-SiteName $env:IIS_SITE_NAME `
-PublicHost $env:PUBLIC_HOST `
-UpstreamUrl $env:LAYOUTPARSER_API_URL `
-AdminUsers $env:BFF_ADMIN_USERS `
-AdminRoles $env:BFF_ADMIN_ROLES `
-EntraTenantId $env:ENTRA_TENANT_ID `
-EntraClientId $env:ENTRA_CLIENT_ID `
-EntraClientSecret $env:ENTRA_CLIENT_SECRET `
-GoogleClientId $env:GOOGLE_CLIENT_ID `
-GoogleClientSecret $env:GOOGLE_CLIENT_SECRET