Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
340aa7e
Story2_temp
srt1678 Mar 20, 2025
f41a9e0
Add ability to train/save/load three different model types
Mar 20, 2025
36445ee
fixed client service
hopeiseverywhere Mar 23, 2025
5afc84e
fixed ml model solid principle
hopeiseverywhere Mar 23, 2025
32cbfbc
fixed ml base models
hopeiseverywhere Mar 23, 2025
9e3567f
added black, isort, mypy, pylint
hopeiseverywhere Mar 23, 2025
41eb616
Merge pull request #14 from dtread4/story_1_linter
hopeiseverywhere Mar 24, 2025
fc36fa8
Start on .toml file
Mar 25, 2025
4251c68
Fixes to toml file
Mar 25, 2025
6be8255
Update to use .env file
Mar 25, 2025
e8cf6e7
Update README
Mar 25, 2025
223da65
Add .env file per requirements
Mar 25, 2025
0f82337
Merge pull request #20 from dtread4/story_1_task_4
dtread4 Mar 27, 2025
9e1bd77
Create Docker compose file
Mar 28, 2025
862d445
Bug fix with .env loading
Mar 28, 2025
5675272
Merge branch 'main' into docker_setup
Mar 28, 2025
0ab65c9
Update requirements and toml file
Mar 28, 2025
4a902b9
Add Docker compose file
Mar 28, 2025
3d75116
Update README to include Docker instructions
Mar 28, 2025
74b1e00
Better README
Mar 28, 2025
b4b9ef7
Update README to prevent possible DB error
Mar 31, 2025
06f99ee
added prediction endpoint
hopeiseverywhere Apr 3, 2025
86737de
linter and formatter
srt1678 Apr 3, 2025
3bd8d8a
linter error
srt1678 Apr 3, 2025
f676d8a
pylint adjustments
srt1678 Apr 4, 2025
a156260
more pylint adjustments
srt1678 Apr 4, 2025
635d598
update deprecated method
srt1678 Apr 4, 2025
01e8b45
docker image (syntax) in ci
srt1678 Apr 4, 2025
85a31b8
Merge pull request #28 from dtread4/docker_setup
hopeiseverywhere Apr 5, 2025
7e442c2
Merge pull request #29 from dtread4/Sprint2_Story2_1-4
hopeiseverywhere Apr 5, 2025
d3b99b7
Merge branch 'dev' into predict_endpoint
hopeiseverywhere Apr 5, 2025
2784bfd
Merge pull request #30 from dtread4/predict_endpoint
hopeiseverywhere Apr 5, 2025
276da77
test
hopeiseverywhere Apr 5, 2025
4e7c7f9
update
hopeiseverywhere Apr 5, 2025
4ba77b5
fixed bugs
hopeiseverywhere Apr 5, 2025
5670254
fixed import
hopeiseverywhere Apr 5, 2025
57dd9f0
fixed import
hopeiseverywhere Apr 5, 2025
1a25894
fixed action
hopeiseverywhere Apr 5, 2025
446c18b
test wrong dockerfile
hopeiseverywhere Apr 5, 2025
d4c4393
fixed minor bug
hopeiseverywhere Apr 5, 2025
ca1496e
refined ci yml
hopeiseverywhere Apr 5, 2025
0c0d29f
refined ci yml
hopeiseverywhere Apr 5, 2025
8fb3d5f
refined ci yml
hopeiseverywhere Apr 5, 2025
c5b1059
Merge pull request #36 from dtread4/dev
hopeiseverywhere Apr 10, 2025
5c485ac
Update docker-compose.yml
dtread4 Apr 10, 2025
5cc9b46
Initial CD setup
Apr 12, 2025
8f6603b
Update so CD pipeline separate again
Apr 12, 2025
4b8ab22
Update README with new docker compose commands
Apr 12, 2025
d717a14
Put CD steps back into ci file and rename so only use one file
Apr 12, 2025
239b6d6
Add env to docker compose
Apr 12, 2025
cce2e6b
Change where .env read from and update CI-CD pipeline
Apr 12, 2025
3235f40
Update env with secret access key field
Apr 12, 2025
4061e13
Update SVM model name to test deployment
Apr 12, 2025
dce0124
Update CI/CD pipeline name
Apr 12, 2025
e65598a
Break out CI/CD
Apr 12, 2025
cfcb929
Change names to be more clear for CI and CD pipelines
Apr 12, 2025
65f30c7
Fix syntax when grabbing from .env
Apr 12, 2025
e952ebc
Fix using syntax for variables
Apr 12, 2025
3a89411
Change syntax
Apr 12, 2025
bf8b0d7
Fix CD pipeline name
Apr 12, 2025
de0535c
Small fix
Apr 12, 2025
1bf10db
Try fix ssh
Apr 12, 2025
1ef2db1
Remove CD related vars from .env
Apr 12, 2025
a1b3607
Overhaul CD pipeline
Apr 13, 2025
15b3360
Update bitovi version
Apr 13, 2025
27e7f37
Remove testing on CD for faster testing
Apr 13, 2025
ded3a04
Add reference
Apr 13, 2025
e78f625
Try different aws region
Apr 13, 2025
22e041d
Revert to original region
Apr 13, 2025
7f34a44
Revert to east region
Apr 13, 2025
7771a66
Revert to east region
Apr 13, 2025
1fed35d
testing
Apr 13, 2025
a3471e4
Alternative CD test
Apr 13, 2025
b221aa5
Try different SSH setup
Apr 13, 2025
ed2abb2
Try different SSH version
Apr 13, 2025
2c9320c
Try different SSH version
Apr 13, 2025
f875b5d
Try different SSH version
Apr 13, 2025
ed00991
Try different SSH version
Apr 13, 2025
e0569d7
Add test if SSH key is being read
Apr 13, 2025
7241695
Add test if SSH key is being read
Apr 13, 2025
7019865
Add test if SSH key is being read
Apr 13, 2025
0b05df7
Fix run test
Apr 13, 2025
2fe157a
Fix SSH key name
Apr 13, 2025
c5f686c
Fix naming
Apr 13, 2025
7ba6972
Revert to previous CD version
Apr 13, 2025
a0adfe5
Fix issues when reverting and update webfactory ssh connection version
Apr 13, 2025
aec4cb7
Test port accessible (not in code here)
Apr 13, 2025
8a77ea8
Consolidate CI-CD pipeline so deployment only happens after tests clear
Apr 13, 2025
216fd91
Try simpler setup for CD (commented CI tests for quicker CD testing)
Apr 13, 2025
e9a6383
Try simpler setup for CD (commented CI tests for quicker CD testing)
Apr 13, 2025
bd975d5
Try simpler setup for CD (commented CI tests for quicker CD testing)
Apr 13, 2025
c1f851b
Change name to confirm deployment works
Apr 13, 2025
428e241
Revert functionality and clean up tasks for deployment
Apr 13, 2025
eb4be8b
Try old version
Apr 13, 2025
844ebba
Try old version
Apr 13, 2025
70f66da
Try old version
Apr 13, 2025
9075330
Try old version
Apr 13, 2025
2d1565d
Update formatting
Apr 13, 2025
9724967
Update formatting
Apr 13, 2025
06a49ce
Update formatting
Apr 13, 2025
4f734d6
Old version
Apr 13, 2025
7061ee6
Revert semi new test
Apr 13, 2025
69bc154
Update test
Apr 13, 2025
339e13c
Add Docker tests
Apr 13, 2025
6be74a2
Clean up formatting
Apr 13, 2025
e6e36df
Remove unnecessary dependency building
Apr 13, 2025
fca7eda
Change name of SVM to test deployment setup
Apr 13, 2025
d8296b3
Separate building Docker image from pushing to Docker Hub
Apr 13, 2025
63780a2
Change model name to test
Apr 13, 2025
d25e6c6
Fix issue with CD
Apr 13, 2025
d322766
Try removing container before run
Apr 13, 2025
fe94080
Small changes to CD pipeline deployment
Apr 13, 2025
0c49d6e
update readme
srt1678 Apr 14, 2025
1eabdd7
testing
srt1678 Apr 15, 2025
a9ab17b
test
srt1678 Apr 15, 2025
9528797
Fix merge conflict
Apr 15, 2025
b0775c9
test cd
srt1678 Apr 15, 2025
a010fd3
Change name of SVM
Apr 16, 2025
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
3 changes: 3 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SECRET_KEY = "<your-secret-key-here>"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
47 changes: 0 additions & 47 deletions .github/workflows/cd.yml

This file was deleted.

42 changes: 0 additions & 42 deletions .github/workflows/ci.yml

This file was deleted.

159 changes: 159 additions & 0 deletions .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
name: CI-CD Pipeline

on:
push:
branches: [ master, main, dev ]

pull_request:
branches: [ master, main ]

jobs:
test_code:
runs-on: ubuntu-latest # Use the latest Ubuntu runner

steps:
- name: Checkout Code
uses: actions/checkout@v4 # Checkout the repository

- name: Set up Python
uses: actions/setup-python@v5 # Set up Python environment
with:
python-version: "3.11"

- name: Install dependencies
run: |
python -m pip install --upgrade pip # Upgrade pip to the latest version
pip install setuptools wheel
pip install -r requirements.txt # Install dependencies from requirements.txt
pip install pylint pytest black isort

- name: Run Code Formatting with Black # Format the entire repo
run: |
black .

- name: Run Code Formatting with isort
run: |
isort .

- name: Run Linter
run: |
pylint ./app ./tests

- name: Run Tests
run: |
python -m pytest tests/

- name: Print Success Message
if: success()
run: |
echo "Confirmed code formatting and functionality successfully!"
echo "========================"
echo "✓ Code checked out"
echo "✓ Python environment set up"
echo "✓ Dependencies installed"
echo "✓ Code formatting checked with Black"
echo "✓ Code formatting checked with isort"
echo "✓ Linting completed"
echo "✓ Tests completed"
echo "========================"

test_docker_setup:
runs-on: ubuntu-latest # Use the latest Ubuntu runner

steps:
- name: Checkout Code
uses: actions/checkout@v4 # Checkout the repository

- name: Set up Python
uses: actions/setup-python@v5 # Set up Python environment
with:
python-version: "3.11"

- name: Hadolint Action Check Dockerfile Syntax
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: ./Dockerfile

- name: Build Docker Image
run: |
docker build -t common-assessment-tool .

- name: Run Docker container
run: |
docker run -d --name common-assessment-container -p 8000:8000 common-assessment-tool
sleep 10

- name: Test Docker container
run: |
curl --fail http://localhost:8000/docs || {
echo "Health check failed"
docker logs common-assessment-tool
exit 1
}

- name: Stop Docker container
run: docker stop common-assessment-container

- name: Print Success Message
if: success()
run: |
echo "Confirmed Docker image can be built and run successfully!"
echo "========================"
echo "✓ Code checked out"
echo "✓ Python environment set up"
echo "✓ Docker file syntax checked"
echo "✓ Docker container built"
echo "✓ Docker container run"
echo "✓ Docker container tested with good health"
echo "✓ Docker container stopped"
echo "========================"

# Source for how deployment was set up
# https://dev.to/s3cloudhub/automate-docker-deployments-push-your-images-to-ec2-with-github-actions-3a3j
deploy:
needs: [test_code, test_docker_setup] # This ensures deploy only runs if tests pass
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Login to DockerHub
run: |
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin

- name: Build Docker image
run: |
docker build -t common_assessment_tool .

- name: Push image to Docker Hub
run: |
docker tag common_assessment_tool ${{ secrets.DOCKERHUB_USERNAME }}/common_assessment_tool:latest
docker push ${{ secrets.DOCKERHUB_USERNAME }}/common_assessment_tool:latest

- name: Install SSH Key
uses: webfactory/ssh-agent@v0.9.1
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Deploy Docker image to EC2
run: |
ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_INSTANCE_IP }} << 'EOF'
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/common_assessment_tool:latest
docker stop $(docker ps -a -q) || true
docker rm $(docker ps -a -q) || true
docker run -d -p 8000:8000 ${{ secrets.DOCKERHUB_USERNAME }}/common_assessment_tool:latest
EOF

- name: Print Success Message
if: success()
run: |
echo "Deployed updates to EC2 instance successfully!"
echo "========================"
echo "✓ Code checked out"
echo "✓ Logged in to Docker Hub"
echo "✓ Docker image built"
echo "✓ Docker image pushed to Docker Hub"
echo "✓ Installed EC2 SSH key"
echo "✓ Docker image deployed successfully"
echo "========================"
Loading