Etapa 1 inteira (logica com 100% de cobertura, cena 3D, toque, sons, bancada de desempenho, e2e) e a base da etapa 2 (mapa novo no Tiled, texturas, imagens dos itens, sons conferidos, golpe recortado e medido). Pagina /jogo fora do menu e do sitemap ate a medicao no celular.
109 lines
3.5 KiB
YAML
109 lines
3.5 KiB
YAML
# CI e deploy num arquivo só: o Gitea lê .gitea/workflows e ignora .github/workflows quando esta pasta existe.
|
|
# - verify: lint, tipos, testes e build. O deploy só roda se ele passar.
|
|
# - audit: alertas de segurança das dependências (fica vermelho sozinho, sem travar o deploy).
|
|
# - e2e: testes de ponta a ponta na build de produção (informativo).
|
|
# - deploy: Vercel CLI. Branch padrão -> produção; demais branches -> preview; pull requests não publicam.
|
|
# Token: secret VERCEL_TOKEN de nível de usuário no Gitea. Projeto na Vercel = nome do repo
|
|
# (ou a variável VERCEL_PROJECT do repo). O build roda na Vercel; o runner só envia o código.
|
|
name: CI
|
|
|
|
"on":
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
verify:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: pnpm/action-setup@v6
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- run: pnpm install --frozen-lockfile
|
|
- run: pnpm lint
|
|
- run: pnpm typecheck
|
|
- run: pnpm test -- --runInBand
|
|
- run: pnpm test:jogo
|
|
- run: pnpm build
|
|
|
|
audit:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: pnpm/action-setup@v6
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- run: pnpm install --frozen-lockfile
|
|
- run: pnpm audit --prod --audit-level=high
|
|
- run: pnpm audit --dev --audit-level=high
|
|
|
|
e2e:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: pnpm/action-setup@v6
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- run: pnpm install --frozen-lockfile
|
|
- run: pnpm exec playwright install --with-deps chromium
|
|
- run: pnpm build
|
|
- name: Subir o servidor de produção
|
|
run: pnpm start -p 3001 &
|
|
- name: Esperar a porta 3001
|
|
run: |
|
|
for attempt in $(seq 1 60); do
|
|
if curl --silent --fail --output /dev/null http://localhost:3001/; then
|
|
exit 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
echo "O servidor não respondeu na porta 3001 em 120 s" >&2
|
|
exit 1
|
|
- name: Testes de ponta a ponta
|
|
run: pnpm test:e2e
|
|
env:
|
|
BASE_URL: http://localhost:3001
|
|
- name: Publicar test-results/
|
|
if: ${{ !cancelled() }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: e2e-test-results
|
|
path: test-results/
|
|
if-no-files-found: ignore
|
|
retention-days: 7
|
|
|
|
deploy:
|
|
needs: verify
|
|
if: github.event_name != 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
|
|
VERCEL_SCOPE: asemlk54-1928s-projects
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22
|
|
# versão fixa do CLI: um pacote sem versão num pipeline de produção é risco de cadeia de suprimentos
|
|
- run: npm install --global [email protected]
|
|
- name: Deploy
|
|
run: |
|
|
PROJECT=$(echo "${{ vars.VERCEL_PROJECT || github.event.repository.name }}" | tr '[:upper:]' '[:lower:]')
|
|
if [ "${{ github.ref_name }}" = "${{ github.event.repository.default_branch }}" ]; then
|
|
PROD=--prod
|
|
else
|
|
PROD=
|
|
fi
|
|
vercel link --yes --project "$PROJECT" --scope "$VERCEL_SCOPE" --token "$VERCEL_TOKEN"
|
|
vercel deploy $PROD --token "$VERCEL_TOKEN"
|