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()
|
session = requests.Session()
|
||||||
|
|
||||||
# Setup DynamoDB client for Lambda
|
# Setup DynamoDB client for Lambda
|
||||||
|
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||||
dynamodb = boto3.resource("dynamodb")
|
dynamodb = boto3.resource("dynamodb")
|
||||||
table_name = os.environ.get("DYNAMODB_TABLE", "permanent_data")
|
table_name = os.environ.get("DYNAMODB_TABLE", "permanent_data")
|
||||||
table = dynamodb.Table(table_name)
|
table = dynamodb.Table(table_name)
|
||||||
@ -208,4 +209,4 @@ if __name__ == "__main__":
|
|||||||
for future in futures:
|
for future in futures:
|
||||||
data.extend(future.result())
|
data.extend(future.result())
|
||||||
|
|
||||||
print(json.dumps(data))
|
print(json.dumps(data))
|
||||||
|
@ -3,6 +3,7 @@ import os
|
|||||||
import boto3
|
import boto3
|
||||||
from boto3.dynamodb.conditions import Key, Attr
|
from boto3.dynamodb.conditions import Key, Attr
|
||||||
|
|
||||||
|
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||||
dynamodb = boto3.resource('dynamodb')
|
dynamodb = boto3.resource('dynamodb')
|
||||||
|
|
||||||
def lambda_handler(event, context):
|
def lambda_handler(event, context):
|
||||||
|
@ -3,6 +3,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
from boto3.dynamodb.conditions import Key, Attr
|
from boto3.dynamodb.conditions import Key, Attr
|
||||||
|
|
||||||
|
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||||
dynamodb = boto3.resource('dynamodb')
|
dynamodb = boto3.resource('dynamodb')
|
||||||
gsi_name = "objectType-index"
|
gsi_name = "objectType-index"
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ from concurrent.futures import ThreadPoolExecutor
|
|||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
|
||||||
# Setup DynamoDB client
|
# Setup DynamoDB client
|
||||||
|
os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1')
|
||||||
dynamodb = boto3.resource("dynamodb")
|
dynamodb = boto3.resource("dynamodb")
|
||||||
table_name = os.environ.get("DYNAMODB_TABLE", "transient_data")
|
table_name = os.environ.get("DYNAMODB_TABLE", "transient_data")
|
||||||
table = dynamodb.Table(table_name)
|
table = dynamodb.Table(table_name)
|
||||||
@ -224,4 +225,4 @@ if __name__ == "__main__":
|
|||||||
for future in futures:
|
for future in futures:
|
||||||
data.extend(future.result())
|
data.extend(future.result())
|
||||||
|
|
||||||
print(json.dumps(data))
|
print(json.dumps(data))
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
boto3==1.36.23
|
boto3
|
||||||
Requests==2.32.3
|
Requests
|
||||||
xmltodict==0.14.2
|
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