Merge pull request #1 from 0hAodha/add-ci
[workflows]: Add ci.yml Finally got it to work lol
This commit is contained in:
69
.github/workflows/ci.yml
vendored
Normal file
69
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
name: Continuous Integration
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.13]
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Set up Python
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
# Install dependencies
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r server/src/requirements.txt
|
||||
|
||||
# Set AWS region and mock credentials
|
||||
- name: Configure AWS Credentials for Tests
|
||||
run: |
|
||||
echo "Setting AWS region and mock credentials..."
|
||||
export AWS_REGION=us-east-1
|
||||
export AWS_ACCESS_KEY_ID=fake_access_key
|
||||
export AWS_SECRET_ACCESS_KEY=fake_secret_key
|
||||
export AWS_DEFAULT_REGION=us-east-1
|
||||
|
||||
# Run tests and generate coverage report
|
||||
- name: Run tests with coverage
|
||||
run: |
|
||||
export PYTHONPATH=$(pwd)/server/src
|
||||
pytest --cov=src/functions --cov=server/src --cov-report=term-missing --cov-report=xml --cov-report=html
|
||||
|
||||
# Upload coverage report as an artifact
|
||||
- name: Upload coverage report (HTML)
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: coverage-report-html
|
||||
path: htmlcov/
|
||||
|
||||
# Upload XML coverage report for CI tools
|
||||
- name: Upload coverage report (XML)
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: coverage-report-xml
|
||||
path: coverage.xml
|
||||
|
||||
# Show coverage summary in logs
|
||||
- name: Show coverage summary
|
||||
run: cat coverage.xml
|
@ -12,6 +12,7 @@ from concurrent.futures import ThreadPoolExecutor
|
||||
session = requests.Session()
|
||||
|
||||
# Setup DynamoDB client for Lambda
|
||||
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||
dynamodb = boto3.resource("dynamodb")
|
||||
table_name = os.environ.get("DYNAMODB_TABLE", "permanent_data")
|
||||
table = dynamodb.Table(table_name)
|
||||
@ -208,4 +209,4 @@ if __name__ == "__main__":
|
||||
for future in futures:
|
||||
data.extend(future.result())
|
||||
|
||||
print(json.dumps(data))
|
||||
print(json.dumps(data))
|
||||
|
@ -3,6 +3,7 @@ import os
|
||||
import boto3
|
||||
from boto3.dynamodb.conditions import Key, Attr
|
||||
|
||||
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||
dynamodb = boto3.resource('dynamodb')
|
||||
|
||||
def lambda_handler(event, context):
|
||||
|
@ -3,6 +3,7 @@ import json
|
||||
import os
|
||||
from boto3.dynamodb.conditions import Key, Attr
|
||||
|
||||
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||
dynamodb = boto3.resource('dynamodb')
|
||||
gsi_name = "objectType-index"
|
||||
|
||||
|
@ -11,6 +11,7 @@ from concurrent.futures import ThreadPoolExecutor
|
||||
session = requests.Session()
|
||||
|
||||
# Setup DynamoDB client
|
||||
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||
dynamodb = boto3.resource("dynamodb")
|
||||
table_name = os.environ.get("DYNAMODB_TABLE", "transient_data")
|
||||
table = dynamodb.Table(table_name)
|
||||
@ -224,4 +225,4 @@ if __name__ == "__main__":
|
||||
for future in futures:
|
||||
data.extend(future.result())
|
||||
|
||||
print(json.dumps(data))
|
||||
print(json.dumps(data))
|
||||
|
@ -1,3 +1,5 @@
|
||||
boto3==1.36.23
|
||||
Requests==2.32.3
|
||||
xmltodict==0.14.2
|
||||
boto3
|
||||
Requests
|
||||
xmltodict
|
||||
pytest
|
||||
pytest-cov
|
||||
|
5
server/src/test/conftest.py
Normal file
5
server/src/test/conftest.py
Normal file
@ -0,0 +1,5 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Ensure the /server path is in PYTHONPATH
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../')))
|
Reference in New Issue
Block a user