Soutrik
cd updated
4f7a99d
raw
history blame
4.87 kB
name: CI Pipeline
on:
push:
branches:
- main
# - feat/pytorch-catdog-setup
pull_request:
branches:
- main
workflow_dispatch:
jobs:
python_basic_test:
name: Test current codebase and setup Python environment
runs-on: self-hosted
strategy:
matrix:
python-version: [3.10.15]
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Print branch name
run: echo "Branch name is ${{ github.ref_name }}"
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
run: |
python -m pip install --upgrade pip
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache Poetry dependencies
uses: actions/cache@v3
with:
path: |
.venv
~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- name: Install dependencies
run: poetry install --no-root --no-interaction
- name: Check Poetry environment
run: poetry env info
- name: Create .env file
run: |
echo "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" >> .env
echo "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}" >> .env
echo "AWS_REGION=${AWS_REGION}" >> .env
echo ".env file created"
- name: Run lint checks
run: poetry run flake8 . --exclude=.venv,tests,notebooks
- name: black
run: poetry run black . --exclude="(\.venv|tests|notebooks)"
pytorch_code_test:
name: Test PyTorch code
runs-on: self-hosted
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
needs: python_basic_test
strategy:
matrix:
python-version: [3.10.15]
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
run: |
python -m pip install --upgrade pip
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache Poetry dependencies
uses: actions/cache@v3
with:
path: |
.venv
~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- name: Install dependencies
run: poetry install --no-root --no-interaction
- name: Check Poetry environment
run: poetry env info
- name: Get data from DVC
run: |
poetry run dvc pull || echo "No data to pull from DVC"
- name: Run Train code
run: |
echo "Training the model"
poetry run python -m src.train_optuna_callbacks experiment=catdog_experiment ++task_name=train ++train=True ++test=False || exit 1
poetry run python -m src.create_artifacts
- name: Run Test code
run: |
echo "Testing the model"
poetry run python -m src.train_optuna_callbacks experiment=catdog_experiment ++task_name=test ++train=False ++test=True || exit 1
- name: upload model checkpoints
uses: actions/upload-artifact@v4
with:
name: model-checkpoints
path: ./checkpoints/
- name: upload logs
uses: actions/upload-artifact@v4
with:
name: logs
path: ./logs/
- name: upload configs
uses: actions/upload-artifact@v4
with:
name: configs
path: ./configs/
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts
path: ./artifacts/