Skip to content

Commit

Permalink
Merge pull request #323 from Open-Earth-Foundation/feature/code-cover…
Browse files Browse the repository at this point in the history
…age-metrics

Implement code coverage metrics
  • Loading branch information
lemilonkh authored Mar 4, 2024
2 parents 5739c82 + e95d21e commit fea9161
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 47 deletions.
110 changes: 64 additions & 46 deletions .github/workflows/web-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
- k8s/cc-web-deploy.yml
- k8s/cc-web.yml
- .github/workflows/web-actions.yml
branches: [ "develop" ]
branches: ["develop"]
pull_request:

jobs:
Expand All @@ -28,7 +28,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache: "npm"
cache-dependency-path: app/package-lock.json

- name: Install dependencies
Expand All @@ -46,12 +46,31 @@ jobs:
- name: Run NextJS build
run: npm run build

- name: Run API tests
run: npm run api:test

# - name: Run Cypress tests
# run: npm run cy:test

# ... Generate LCOV files or download it from a different job
- name: Run tests and generate coverage file
run: npm run ci:test

- name: Setup LCOV
uses: hrishikesh-kadam/setup-lcov@v1
- name: Report code coverage
uses: zgosalvez/github-actions-report-lcov@v3
with:
coverage-files: ./app/lcov*.info
minimum-coverage: 40
artifact-name: code-coverage-report
github-token: ${{ secrets.GITHUB_TOKEN }}
working-directory: ./app
update-comment: true

- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: Open-Earth-Foundation/CityCatalyst

- name: Shut down database
run: docker stop github_action_postgresql

Expand All @@ -60,25 +79,24 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/develop'
steps:
- uses: actions/checkout@v4

- uses: actions/checkout@v4

- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Pushing CC Web to GHCR
env:
VERSION: ${{ github.sha }}
IMAGE: ghcr.io/open-earth-foundation/citycatalyst
run: |
docker build -t $IMAGE:$VERSION app
docker tag $IMAGE:$VERSION $IMAGE:latest
docker push $IMAGE:$VERSION
docker push $IMAGE:latest
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Pushing CC Web to GHCR
env:
VERSION: ${{ github.sha }}
IMAGE: ghcr.io/open-earth-foundation/citycatalyst
run: |
docker build -t $IMAGE:$VERSION app
docker tag $IMAGE:$VERSION $IMAGE:latest
docker push $IMAGE:$VERSION
docker push $IMAGE:latest
deployToEKS:
needs: pushToGHCR
Expand All @@ -89,27 +107,27 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_EKS_DEV_USER }}
EKS_DEV_NAME: ${{ secrets.EKS_DEV_NAME }}
steps:
- uses: actions/checkout@v4

- name: Creating kubeconfig file
run: aws eks update-kubeconfig --name ${{secrets.EKS_DEV_NAME}} --region us-east-1

- name: Testing connection to EKS
run: kubectl get pods -n default

- name: Deploying service
run: |
kubectl create -f k8s/cc-migrate.yml -n default
kubectl create -f k8s/cc-seed.yml -n default
kubectl apply -f k8s/cc-sync-catalogue.yml -n default
# kubectl create job --from=cronjob/cc-sync-catalogue cc-sync-catalogue-manual -n default
kubectl apply -f k8s/cc-web-deploy.yml -n default
kubectl set env deployment/cc-web-deploy SMTP_USER=${{secrets.SMTP_USER}}
kubectl set env deployment/cc-web-deploy SMTP_PASSWORD=${{secrets.SMTP_PASSWORD}}
kubectl set env deployment/cc-web-deploy NEXTAUTH_SECRET=${{secrets.NEXTAUTH_SECRET}}
kubectl set env deployment/cc-web-deploy RESET_TOKEN_SECRET=${{secrets.RESET_TOKEN_SECRET}}
kubectl set env deployment/cc-web-deploy CHAT_PROVIDER=huggingface
kubectl set env deployment/cc-web-deploy OPENAI_API_KEY=${{secrets.OPENAI_API_KEY}}
kubectl set env deployment/cc-web-deploy HUGGINGFACE_API_KEY=${{secrets.HUGGINGFACE_API_KEY}}
kubectl rollout restart deployment cc-web-deploy -n default
- uses: actions/checkout@v4

- name: Creating kubeconfig file
run: aws eks update-kubeconfig --name ${{secrets.EKS_DEV_NAME}} --region us-east-1

- name: Testing connection to EKS
run: kubectl get pods -n default

- name: Deploying service
run: |
kubectl create -f k8s/cc-migrate.yml -n default
kubectl create -f k8s/cc-seed.yml -n default
kubectl apply -f k8s/cc-sync-catalogue.yml -n default
# kubectl create job --from=cronjob/cc-sync-catalogue cc-sync-catalogue-manual -n default
kubectl apply -f k8s/cc-web-deploy.yml -n default
kubectl set env deployment/cc-web-deploy SMTP_USER=${{secrets.SMTP_USER}}
kubectl set env deployment/cc-web-deploy SMTP_PASSWORD=${{secrets.SMTP_PASSWORD}}
kubectl set env deployment/cc-web-deploy NEXTAUTH_SECRET=${{secrets.NEXTAUTH_SECRET}}
kubectl set env deployment/cc-web-deploy RESET_TOKEN_SECRET=${{secrets.RESET_TOKEN_SECRET}}
kubectl set env deployment/cc-web-deploy CHAT_PROVIDER=huggingface
kubectl set env deployment/cc-web-deploy OPENAI_API_KEY=${{secrets.OPENAI_API_KEY}}
kubectl set env deployment/cc-web-deploy HUGGINGFACE_API_KEY=${{secrets.HUGGINGFACE_API_KEY}}
kubectl rollout restart deployment cc-web-deploy -n default
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -138,3 +138,7 @@ values-*.yml

# Data coverage output
global-api/data-coverage/*.csv

# Test coverage output from ci:test
lcov.info

5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# OpenClimate for Cities
# CityCatalyst
Open Source carbon accounting for cities

## Test coverage
[![codecov](https://codecov.io/github/Open-Earth-Foundation/CityCatalyst/graph/badge.svg?token=FD69J1XR6M)](https://codecov.io/github/Open-Earth-Foundation/CityCatalyst)
1 change: 1 addition & 0 deletions app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"db:gen-migration": "sequelize-cli migration:generate --name",
"db:gen-seed": "sequelize-cli seed:generate --name",
"sync-catalogue": "tsx scripts/catalogue-sync.ts",
"ci:test": "tsx --test --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info tests/**/*.test.ts",
"cy:open": "cypress open",
"cy:run": "cypress run",
"cy:test": "start-server-and-test start http://localhost:3000/en/auth/login cy:run",
Expand Down

0 comments on commit fea9161

Please sign in to comment.