add latest docker image #48
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI Pipeline | |
on: push | |
jobs: | |
project-testing: | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout code | |
uses: actions/checkout@v3 | |
- name: setup python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- name: Cache pip dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: install dependencies | |
run: | | |
pip install -r requirements.txt | |
- name: run pipeline | |
env: | |
DAGSHUB_PAT: ${{ secrets.DAGSHUB_PAT }} | |
run: | | |
dvc repro | |
- name: Run model tests | |
env: | |
DAGSHUB_PAT: ${{ secrets.DAGSHUB_PAT }} | |
run: | | |
python -m unittest tests/test_model.py | |
- name: Promote model to production | |
if: success() | |
env: | |
DAGSHUB_PAT: ${{ secrets.DAGSHUB_PAT }} | |
run: python scripts/promote_model.py | |
- name: Run Flask app tests | |
if: success() | |
env: | |
DAGSHUB_PAT: ${{ secrets.DAGSHUB_PAT }} | |
run: python -m unittest tests/test_flask_app.py | |
- name: Login to AWS ECR | |
run: | | |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws ecr get-login-password --region ap-southeast-2 | docker login --username AWS --password-stdin 992382647488.dkr.ecr.ap-southeast-2.amazonaws.com | |
- name: Build Docker image | |
run: | | |
docker build -t campusx_ecr . | |
- name: Tag Docker image | |
run: | | |
docker tag campusx_ecr:latest 992382647488.dkr.ecr.ap-southeast-2.amazonaws.com/campusx_ecr:latest | |
- name: Push Docker image to AWS ECR | |
run: | | |
docker push 992382647488.dkr.ecr.ap-southeast-2.amazonaws.com/campusx_ecr:latest | |
- name: Deploy to EC2 | |
if: success() | |
uses: appleboy/ssh-action@v0.1.5 | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ${{ secrets.EC2_USER }} | |
key: ${{ secrets.EC2_SSH_KEY }} | |
script: | | |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws configure set default.region ap-southeast-2 | |
aws ecr get-login-password --region ap-southeast-2 | docker login --username AWS --password-stdin 992382647488.dkr.ecr.ap-southeast-2.amazonaws.com | |
docker pull 992382647488.dkr.ecr.ap-southeast-2.amazonaws.com/campusx_ecr:latest | |
docker stop my-app || true | |
docker rm my-app || true | |
docker run -d -p 80:5000 -e DAGSHUB_PAT=${{ secrets.DAGSHUB_PAT }} --name campusx-app 992382647488.dkr.ecr.ap-southeast-2.amazonaws.com/campusx_ecr:latest | |