ci: optimize workflows with scoped triggers, npm caching, and lint version alignment
- commit
- 4b644f1406acf50d724fc0e0b5e64cd1d01e0fe1
- author
- brice · · 2025-12-22 17:15 UTC
- parent
- 4515dbd
- signature
- unsigned
3 files · +68 -5
M .github/workflows/ci.yml +37 -4
| @@ -3,10 +3,29 @@ name: CI | |||
| 3 | 3 | on: | |
| 4 | 4 | push: | |
| 5 | 5 | branches: [dev, main] | |
| 6 | - | paths-ignore: | |
| 7 | - | - '**.md' | |
| 8 | - | - 'docs/**' | |
| 9 | - | - 'LICENSE' | |
| 6 | + | paths: | |
| 7 | + | - '**.go' | |
| 8 | + | - 'go.mod' | |
| 9 | + | - 'go.sum' | |
| 10 | + | - '.golangci.yml' | |
| 11 | + | - 'Makefile' | |
| 12 | + | - 'sqlc.yaml' | |
| 13 | + | - 'assets/**' | |
| 14 | + | - '!**.md' | |
| 15 | + | - '!docs/**' | |
| 16 | + | - '!LICENSE' | |
| 17 | + | pull_request: | |
| 18 | + | paths: | |
| 19 | + | - '**.go' | |
| 20 | + | - 'go.mod' | |
| 21 | + | - 'go.sum' | |
| 22 | + | - '.golangci.yml' | |
| 23 | + | - 'Makefile' | |
| 24 | + | - 'sqlc.yaml' | |
| 25 | + | - 'assets/**' | |
| 26 | + | - '!**.md' | |
| 27 | + | - '!docs/**' | |
| 28 | + | - '!LICENSE' | |
| 10 | 29 | ||
| 11 | 30 | jobs: | |
| 12 | 31 | lint: | |
| @@ -33,6 +52,13 @@ jobs: | |||
| 33 | 52 | key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} | |
| 34 | 53 | restore-keys: | | |
| 35 | 54 | ${{ runner.os }}-go-build- | |
| 55 | + | - name: Cache npm | |
| 56 | + | uses: actions/cache@v4 | |
| 57 | + | with: | |
| 58 | + | path: ~/.npm | |
| 59 | + | key: ${{ runner.os }}-npm-${{ hashFiles('webui/package-lock.json') }} | |
| 60 | + | restore-keys: | | |
| 61 | + | ${{ runner.os }}-npm- | |
| 36 | 62 | - name: Build frontend assets | |
| 37 | 63 | run: make build-frontend | |
| 38 | 64 | - name: Install golangci-lint | |
| @@ -65,6 +91,13 @@ jobs: | |||
| 65 | 91 | key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} | |
| 66 | 92 | restore-keys: | | |
| 67 | 93 | ${{ runner.os }}-go-build- | |
| 94 | + | - name: Cache npm | |
| 95 | + | uses: actions/cache@v4 | |
| 96 | + | with: | |
| 97 | + | path: ~/.npm | |
| 98 | + | key: ${{ runner.os }}-npm-${{ hashFiles('webui/package-lock.json') }} | |
| 99 | + | restore-keys: | | |
| 100 | + | ${{ runner.os }}-npm- | |
| 68 | 101 | - name: Build frontend assets | |
| 69 | 102 | run: make build-frontend | |
| 70 | 103 | - name: Run tests | |
| @@ -3,10 +3,29 @@ name: CI | |||||
| 3 | on: | 3 | on: | ||
| 4 | push: | 4 | push: | ||
| 5 | branches: [dev, main] | 5 | branches: [dev, main] | ||
| 6 | - | paths-ignore: | 6 | + | paths: |
| 7 | - | - '**.md' | 7 | + | - '**.go' |
| 8 | - | - 'docs/**' | 8 | + | - 'go.mod' |
| 9 | - | - 'LICENSE' | 9 | + | - 'go.sum' |
| 10 | + | - '.golangci.yml' | |||
| 11 | + | - 'Makefile' | |||
| 12 | + | - 'sqlc.yaml' | |||
| 13 | + | - 'assets/**' | |||
| 14 | + | - '!**.md' | |||
| 15 | + | - '!docs/**' | |||
| 16 | + | - '!LICENSE' | |||
| 17 | + | pull_request: | |||
| 18 | + | paths: | |||
| 19 | + | - '**.go' | |||
| 20 | + | - 'go.mod' | |||
| 21 | + | - 'go.sum' | |||
| 22 | + | - '.golangci.yml' | |||
| 23 | + | - 'Makefile' | |||
| 24 | + | - 'sqlc.yaml' | |||
| 25 | + | - 'assets/**' | |||
| 26 | + | - '!**.md' | |||
| 27 | + | - '!docs/**' | |||
| 28 | + | - '!LICENSE' | |||
| 10 | 29 | ||||
| 11 | jobs: | 30 | jobs: | ||
| 12 | lint: | 31 | lint: | ||
| @@ -33,6 +52,13 @@ jobs: | |||||
| 33 | key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} | 52 | key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} | ||
| 34 | restore-keys: | | 53 | restore-keys: | | ||
| 35 | ${{ runner.os }}-go-build- | 54 | ${{ runner.os }}-go-build- | ||
| 55 | + | - name: Cache npm | |||
| 56 | + | uses: actions/cache@v4 | |||
| 57 | + | with: | |||
| 58 | + | path: ~/.npm | |||
| 59 | + | key: ${{ runner.os }}-npm-${{ hashFiles('webui/package-lock.json') }} | |||
| 60 | + | restore-keys: | | |||
| 61 | + | ${{ runner.os }}-npm- | |||
| 36 | - name: Build frontend assets | 62 | - name: Build frontend assets | ||
| 37 | run: make build-frontend | 63 | run: make build-frontend | ||
| 38 | - name: Install golangci-lint | 64 | - name: Install golangci-lint | ||
| @@ -65,6 +91,13 @@ jobs: | |||||
| 65 | key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} | 91 | key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} | ||
| 66 | restore-keys: | | 92 | restore-keys: | | ||
| 67 | ${{ runner.os }}-go-build- | 93 | ${{ runner.os }}-go-build- | ||
| 94 | + | - name: Cache npm | |||
| 95 | + | uses: actions/cache@v4 | |||
| 96 | + | with: | |||
| 97 | + | path: ~/.npm | |||
| 98 | + | key: ${{ runner.os }}-npm-${{ hashFiles('webui/package-lock.json') }} | |||
| 99 | + | restore-keys: | | |||
| 100 | + | ${{ runner.os }}-npm- | |||
| 68 | - name: Build frontend assets | 101 | - name: Build frontend assets | ||
| 69 | run: make build-frontend | 102 | run: make build-frontend | ||
| 70 | - name: Run tests | 103 | - name: Run tests | ||
M .github/workflows/release.yml +1 -1
| @@ -56,7 +56,7 @@ jobs: | |||
| 56 | 56 | - name: Run golangci-lint | |
| 57 | 57 | uses: golangci/golangci-lint-action@v7 | |
| 58 | 58 | with: | |
| 59 | - | version: v2.4 | |
| 59 | + | version: v2.6.2 | |
| 60 | 60 | ||
| 61 | 61 | test: | |
| 62 | 62 | needs: check-changes | |
| @@ -56,7 +56,7 @@ jobs: | |||||
| 56 | - name: Run golangci-lint | 56 | - name: Run golangci-lint | ||
| 57 | uses: golangci/golangci-lint-action@v7 | 57 | uses: golangci/golangci-lint-action@v7 | ||
| 58 | with: | 58 | with: | ||
| 59 | - | version: v2.4 | 59 | + | version: v2.6.2 |
| 60 | 60 | ||||
| 61 | test: | 61 | test: | ||
| 62 | needs: check-changes | 62 | needs: check-changes | ||
A .github/workflows/webui.yml +30 -0
| @@ -0,0 +1,30 @@ | |||
| 1 | + | name: WebUI CI | |
| 2 | + | ||
| 3 | + | on: | |
| 4 | + | push: | |
| 5 | + | branches: [dev, main] | |
| 6 | + | paths: | |
| 7 | + | - 'webui/**' | |
| 8 | + | pull_request: | |
| 9 | + | paths: | |
| 10 | + | - 'webui/**' | |
| 11 | + | ||
| 12 | + | jobs: | |
| 13 | + | check: | |
| 14 | + | runs-on: ubuntu-latest | |
| 15 | + | steps: | |
| 16 | + | - uses: actions/checkout@v6 | |
| 17 | + | ||
| 18 | + | - uses: actions/setup-node@v6 | |
| 19 | + | with: | |
| 20 | + | node-version: '24' | |
| 21 | + | cache: 'npm' | |
| 22 | + | cache-dependency-path: 'webui/package-lock.json' | |
| 23 | + | ||
| 24 | + | - name: Install dependencies | |
| 25 | + | run: npm ci | |
| 26 | + | working-directory: webui | |
| 27 | + | ||
| 28 | + | - name: Run checks | |
| 29 | + | run: npm run check | |
| 30 | + | working-directory: webui | |
| @@ -0,0 +1,30 @@ | |||||
| 1 | + | name: WebUI CI | |||
| 2 | + | ||||
| 3 | + | on: | |||
| 4 | + | push: | |||
| 5 | + | branches: [dev, main] | |||
| 6 | + | paths: | |||
| 7 | + | - 'webui/**' | |||
| 8 | + | pull_request: | |||
| 9 | + | paths: | |||
| 10 | + | - 'webui/**' | |||
| 11 | + | ||||
| 12 | + | jobs: | |||
| 13 | + | check: | |||
| 14 | + | runs-on: ubuntu-latest | |||
| 15 | + | steps: | |||
| 16 | + | - uses: actions/checkout@v6 | |||
| 17 | + | ||||
| 18 | + | - uses: actions/setup-node@v6 | |||
| 19 | + | with: | |||
| 20 | + | node-version: '24' | |||
| 21 | + | cache: 'npm' | |||
| 22 | + | cache-dependency-path: 'webui/package-lock.json' | |||
| 23 | + | ||||
| 24 | + | - name: Install dependencies | |||
| 25 | + | run: npm ci | |||
| 26 | + | working-directory: webui | |||
| 27 | + | ||||
| 28 | + | - name: Run checks | |||
| 29 | + | run: npm run check | |||
| 30 | + | working-directory: webui | |||