Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix workflows #46

Merged
merged 45 commits into from
Nov 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
6c2f539
move workflows out of their own folders
juancwu Nov 22, 2024
d42fdb9
combine test workflows
juancwu Nov 22, 2024
34e301a
redefined working directory
juancwu Nov 22, 2024
32172a5
remove shell from test workflow
juancwu Nov 22, 2024
371df73
fix working directory
juancwu Nov 22, 2024
eb900a5
echo pwd
juancwu Nov 22, 2024
e25e71d
update
juancwu Nov 22, 2024
5abd7aa
update
juancwu Nov 22, 2024
ebcd92d
add working-directory to all steps
juancwu Nov 22, 2024
8e6f20e
update
juancwu Nov 22, 2024
07bf171
update
juancwu Nov 22, 2024
83f8014
update
juancwu Nov 22, 2024
171c3b7
update
juancwu Nov 22, 2024
c229d35
update
juancwu Nov 22, 2024
7f8c775
update
juancwu Nov 22, 2024
bdfbc4a
update
aidantrabs Nov 22, 2024
33a5f45
update
aidantrabs Nov 22, 2024
73bdddc
update
aidantrabs Nov 22, 2024
9778fb0
update
aidantrabs Nov 22, 2024
422a60e
update
aidantrabs Nov 22, 2024
a670763
revert
aidantrabs Nov 22, 2024
b81bc2a
separate test workflows
juancwu Nov 25, 2024
09842b1
update frontend page title
juancwu Nov 25, 2024
23c994e
remove cache
juancwu Nov 25, 2024
d1b9cff
ls
juancwu Nov 25, 2024
80d0966
change directory
juancwu Nov 25, 2024
d009716
cd before running cmd
juancwu Nov 25, 2024
70a5aed
update backend test with cd
juancwu Nov 25, 2024
a289367
update backend readme with specific version for tooling
juancwu Nov 25, 2024
02cbf0e
update backend test flow
juancwu Nov 25, 2024
c741c4b
update backend test actions version
juancwu Nov 25, 2024
0aa4686
update backend test flow
juancwu Nov 25, 2024
8ce2858
remove cache
juancwu Nov 25, 2024
e167518
update deploy flows
juancwu Nov 26, 2024
2292291
set pipeline code
juancwu Nov 26, 2024
71de4d7
remove pr commenting after backend test
juancwu Nov 26, 2024
bbf402f
add back setting exit code
juancwu Nov 26, 2024
f336f7a
remove coverage report upload
juancwu Nov 26, 2024
d8e6972
check for exit code
juancwu Nov 26, 2024
9c2fecf
remove continue on error
juancwu Nov 26, 2024
043e3f5
generate backend html coverage
juancwu Nov 26, 2024
1252ba6
move the coverage to html to test step
juancwu Nov 26, 2024
4f859bf
separete coverage html
juancwu Nov 26, 2024
468cc57
remove comment pr
juancwu Nov 26, 2024
1e772b5
output test coverage
juancwu Nov 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 0 additions & 73 deletions .github/workflows/backend/test-backend.yml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ jobs:
rm -rf repo
git clone [email protected]:${{ github.repository }}.git repo
cd repo
cd backend
echo "Copy deploy preview script"
cp .github/scripts/deploy-preview.sh .
cp ../.github/scripts/deploy-preview.sh .
echo "Running deploy-preview.sh"
chmod +x deploy-preview.sh
./deploy-preview.sh
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,16 @@ jobs:
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
run: cd frontend && pnpm install --frozen-lockfile
- name: Build
run: pnpm build
run: cd frontend && pnpm build
- name: Deploy to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.PREVIEW_SERVER_IP }}
username: ${{ secrets.PREVIEW_USER }}
key: ${{ secrets.PREVIEW_SERVER_SSH_KEY }}
source: "dist/"
source: "frontend/dist/"
target: "${{ secrets.TARGET_DIR }}"
strip_components: 1

59 changes: 59 additions & 0 deletions .github/workflows/test-backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
on:
push:
branches: ['main', 'staging', 'prod']
paths:
- 'backend/**'
pull_request:
branches: ['main', 'staging', 'prod']
paths:
- 'backend/**'
jobs:
test-backend:
name: Test Backend
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_PORT: 5432
POSTGRES_DB: postgres
options: >-
--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
ports:
- 5432:5432
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.23'
cache: true
- name: Install dependencies
run: cd backend && go mod download
- name: Install Goose
run: cd backend && go install github.com/pressly/goose/v3/cmd/[email protected]
- name: Run migrations
run: cd backend && goose -dir .sqlc/migrations postgres "postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable" up
- name: Run tests
run: |
# run tests and capture output
cd backend
go test -v -coverprofile=coverage.out ./...
- name: Generate coverage report
if: ${{ !env.ACT && github.event_name == 'pull_request' && always() }}
run: cd backend && go tool cover -html=coverage.out -o coverage.html
- name: Upload coverage report
if: ${{ !env.ACT && github.event_name == 'pull_request' && always() }}
uses: actions/upload-artifact@v4
with:
name: coverage-report-backend
path: backend/coverage.html
# - name: Comment PR
# if: ${{ !env.ACT && github.event_name == 'pull_request' && always() }}
# uses: actions/github-script@v7
# with:
# github-token: ${{ secrets.GITHUB_TOKEN }}
# script: "const fs = require('fs');\n\n// Read test output\nconst testOutput = fs.readFileSync('backend/test_output.txt', 'utf8');\n\n// Get coverage - look for the last coverage number in the output\nlet coverage = 'N/A';\nconst coverageMatches = testOutput.match(/coverage: (\\d+\\.\\d+)% of statements/g) || [];\nif (coverageMatches.length > 0) {\n const lastMatch = coverageMatches[coverageMatches.length - 1];\n coverage = lastMatch.match(/(\\d+\\.\\d+)%/)[1] + '%';\n}\n\n// Check if any tests failed\nconst hasFailed = testOutput.includes('FAIL') && !testOutput.includes('FAIL\\t[build failed]');\nconst testStatus = hasFailed ? 'failure' : 'success';\nconst color = testStatus === 'success' ? '✅' : '❌';\n\n// Parse test failures\nlet failureDetails = '';\nif (hasFailed) {\n const errorTraces = testOutput.match(/\\s+.*?_test\\.go:\\d+:[\\s\\S]*?Test:\\s+.*$/gm) || [];\n const failures = testOutput.match(/--- FAIL: .*?(?=(?:---|\\z))/gs) || [];\n \n failureDetails = `\n <details>\n <summary>❌ Test Failures</summary>\n \n \\`\\`\\`\n ${failures.join('\\n')}\n \n Error Details:\n ${errorTraces.map(trace => trace.trim()).join('\\n')}\n \\`\\`\\`\n </details>\n `;\n}\n\nconst output = `### Test Results ${color}\n\n**Status**: ${testStatus}\n**Coverage**: ${coverage}\n**OS**: \\`${{ runner.os }}\\`\n\n${failureDetails}\n\n<details>\n<summary>Test Details</summary>\n\n* Triggered by: @${{ github.actor }}\n* Commit: ${{ github.sha }}\n* Branch: ${{ github.ref }}\n* Workflow: ${{ github.workflow }}\n</details>`;\n\n// Find existing comment\nconst { data: comments } = await github.rest.issues.listComments({\n owner: context.repo.owner,\n repo: context.repo.repo,\n issue_number: context.issue.number,\n});\n\nconst botComment = comments.find(comment => \n comment.user.type === 'Bot' && \n comment.body.includes('### Test Results')\n);\n\nif (botComment) {\n // Update existing comment\n await github.rest.issues.updateComment({\n owner: context.repo.owner,\n repo: context.repo.repo,\n comment_id: botComment.id,\n body: output\n });\n} else {\n // Create new comment\n await github.rest.issues.createComment({\n owner: context.repo.owner,\n repo: context.repo.repo,\n issue_number: context.issue.number,\n body: output\n });\n}\n"
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
name: Test Frontend
on:
push:
branches: ['main', 'staging', 'prod']
Expand All @@ -10,13 +9,11 @@ on:
- 'frontend/**'
jobs:
test-frontend:
name: Test Frontend
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: frontend
steps:
- uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
Expand All @@ -26,16 +23,14 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
run: cd frontend && pnpm install --frozen-lockfile
- name: Run tests
run: pnpm test:ci
run: cd frontend && pnpm test:ci
- name: Generate coverage report
run: pnpm coverage
run: cd frontend && pnpm coverage
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/
retention-days: 7
name: coverage-report-frontend
path: frontend/coverage/
5 changes: 4 additions & 1 deletion backend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ tmp

*.pem

static
static

# ignore test coverage
coverage.out
2 changes: 1 addition & 1 deletion backend/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ start-testdb:
@goose -dir .sqlc/migrations postgres "$(TEST_DB_URL)" up

run-tests:
@go test -v ./...
@go test -v -coverprofile=coverage.out ./...

stop-testdb:
@echo "Stopping test db..."
Expand Down
10 changes: 5 additions & 5 deletions backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ Make sure to download **VERSION 1.23** for best compatibility.

### Install Pre-requisite tools

- Air (auto-reload backend): go install github.com/air-verse/air@latest
- SQLc (generate type-safe code from SQL queries): go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
- Goose (SQL migration management tool): go install github.com/pressly/goose/v3/cmd/goose@latest
- Air (auto-reload backend): go install github.com/air-verse/air@1.61.1
- SQLc (generate type-safe code from SQL queries): go install github.com/sqlc-dev/sqlc/cmd/sqlc@1.27.0
- Goose (SQL migration management tool): go install github.com/pressly/goose/v3/cmd/goose@3.22.1
- Make
- Docker

Expand All @@ -22,8 +22,8 @@ Make sure to download **VERSION 1.23** for best compatibility.
1. Create a new PostgreSQL instance using docker with `make init-dev-db`
2. Start PostgreSQL for development `make start-dev-db`
- Check health of DB `make health-dev-db`
4. Run migrations when ready `make up`
5. Start development server `make dev`
3. Run migrations when ready `make up`
4. Start development server `make dev`

> Use `make query "SELECT ... FROM ..."` for quick query on the terminal.
> You should also checkout the other available commands in the Makefile.
2 changes: 1 addition & 1 deletion frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
<title>SPUR</title>
</head>
<body>
<div id="root"></div>
Expand Down
Loading