remotely-save/.github/workflows/ci.yml
Bruno Miiller 60bad0fcd3 Keep CI test stage focused: drop build step
The Lint → Test → Security pattern keeps each stage to a single concern.
`npm run build` belonged to test only to publish a PR-preview artifact;
release.yml already handles production builds, and developers can run
`npm run build` locally. Removing it from the test stage:

- aligns with code-standards/ci/pipeline-structure.md
- shaves ~70s off PR CI time
- removes the "dist" artifact upload (coverage upload stays)
2026-05-19 23:09:27 -03:00

84 lines
2.4 KiB
YAML

name: CI
on:
push:
branches: ["**"]
pull_request:
branches: [master]
permissions:
contents: read
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- run: npm ci
- name: Biome check
run: npx @biomejs/biome ci .
test:
name: Test
needs: lint
runs-on: ubuntu-latest
timeout-minutes: 10
environment: env-for-buildci
env:
DROPBOX_APP_KEY: ${{secrets.DROPBOX_APP_KEY}}
ONEDRIVE_CLIENT_ID: ${{secrets.ONEDRIVE_CLIENT_ID}}
ONEDRIVE_AUTHORITY: ${{secrets.ONEDRIVE_AUTHORITY}}
REMOTELYSAVE_WEBSITE: ${{secrets.REMOTELYSAVE_WEBSITE}}
REMOTELYSAVE_CLIENT_ID: ${{secrets.REMOTELYSAVE_CLIENT_ID}}
GOOGLEDRIVE_CLIENT_ID: ${{secrets.GOOGLEDRIVE_CLIENT_ID}}
GOOGLEDRIVE_CLIENT_SECRET: ${{secrets.GOOGLEDRIVE_CLIENT_SECRET}}
BOX_CLIENT_ID: ${{secrets.BOX_CLIENT_ID}}
BOX_CLIENT_SECRET: ${{secrets.BOX_CLIENT_SECRET}}
PCLOUD_CLIENT_ID: ${{secrets.PCLOUD_CLIENT_ID}}
PCLOUD_CLIENT_SECRET: ${{secrets.PCLOUD_CLIENT_SECRET}}
YANDEXDISK_CLIENT_ID: ${{secrets.YANDEXDISK_CLIENT_ID}}
YANDEXDISK_CLIENT_SECRET: ${{secrets.YANDEXDISK_CLIENT_SECRET}}
KOOFR_CLIENT_ID: ${{secrets.KOOFR_CLIENT_ID}}
KOOFR_CLIENT_SECRET: ${{secrets.KOOFR_CLIENT_SECRET}}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout LFS file list
run: git lfs ls-files --long | cut -d ' ' -f1 | sort > .lfs-assets-id
- name: LFS Cache
uses: actions/cache@v4
with:
path: .git/lfs/objects
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}
restore-keys: |
${{ runner.os }}-lfs-
- name: Git LFS Pull
run: git lfs pull
- uses: jdx/mise-action@v2
- run: npm ci
- name: Testes com cobertura
run: npm run test:coverage
- uses: actions/upload-artifact@v4
if: always()
with:
name: coverage
path: coverage/
security:
name: Security
needs: test
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- run: npm ci
- name: npm audit
run: npm audit --audit-level=high
- name: Biome lint (regras de seguranca)
run: npx @biomejs/biome lint .