diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7d2313e..4c9fa15 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,11 +11,72 @@ permissions: id-token: write jobs: - release: - name: Release + lint: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "24" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint + + frontend-test: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[skip ci]')" + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "24" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm run test:run + + backend-test: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[skip ci]')" + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20.x" + + - name: Install backend dependencies + working-directory: ./backend + run: npm ci + + - name: Run backend tests + working-directory: ./backend + run: npm test + + build: + runs-on: ubuntu-latest + needs: [lint, frontend-test, backend-test] + if: "!contains(github.event.head_commit.message, '[skip ci]')" + steps: - name: Checkout uses: actions/checkout@v4 @@ -32,23 +93,38 @@ jobs: - name: Install dependencies run: npm ci - - name: Install backend dependencies - working-directory: ./backend - run: npm ci - - - name: Lint - run: npm run lint - - - name: Run tests - run: npm run test:run - - - name: Run backend tests - working-directory: ./backend - run: npm test - - name: Build run: npm run build + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ + retention-days: 1 + + release: + name: Release + runs-on: ubuntu-latest + needs: build + if: "!contains(github.event.head_commit.message, '[skip ci]')" + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "24" + cache: "npm" + + - name: Install dependencies + run: npm ci + - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}