Files
portifolio-evandrodevbr/.gitea/workflows/ci.yml
T
evandro 67b32fcab3
CI / audit (push) Successful in 10m48s
CI / verify (push) Successful in 19m2s
CI / deploy (push) Successful in 2m14s
CI / e2e (push) Failing after 36m15s
feat(jogo): expediente dos mortos, jogo de zumbis em primeira pessoa
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.
2026-11-10 19:37:10 -03:00

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"