Merge pull request #1 from 0hAodha/add-ci

[workflows]: Add ci.yml

Finally got it to work lol
This commit is contained in:
2025-03-10 00:16:58 +00:00
committed by GitHub
7 changed files with 85 additions and 5 deletions

69
.github/workflows/ci.yml vendored Normal file
View 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

View File

@ -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))

View File

@ -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):

View File

@ -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"

View File

@ -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))

View File

@ -1,3 +1,5 @@
boto3==1.36.23
Requests==2.32.3
xmltodict==0.14.2
boto3
Requests
xmltodict
pytest
pytest-cov

View 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__), '../../')))