add CI flow, fix broken import

This commit is contained in:
gmega 2024-12-02 17:10:18 -03:00
parent 55487c5a75
commit 84c02e3745
No known key found for this signature in database
GPG Key ID: 6290D34EAD824B18
4 changed files with 79 additions and 8 deletions

66
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,66 @@
name: Test and Build
on:
push:
branches:
- master
workflow_dispatch:
env:
DOCKER_FILE: bittorrent-benchmarks.Dockerfile
DOCKER_REPO: codexstorage/bittorrent-benchmarks
jobs:
test-and-build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Setup Docker Metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKER_REPO }}
flavor: |
latest=true
tags: |
type=sha
- name: Build Test Image
uses: docker/build-push-action@v6
with:
context: .
file: ${{ env.DOCKER_FILE }}
push: false
load: true
tags: bittorrent-benchmarks:test
build-args: |
BUILD_TYPE=test
- name: Type Check
run: |
docker run --rm --entrypoint mypy bittorrent-benchmarks:test .
- name: Run Unit Tests
run: |
docker run --rm --entrypoint pytest bittorrent-benchmarks:test -m "not integration"
- name: Build and Push Prod. Image
uses: docker/build-push-action@v6
with:
context: .
file: ${{ env.DOCKER_FILE }}
push: ${{ github.event_name != 'pull_request' }}
tags: bittorrent-benchmarks:latest
labels: ${{ steps.meta.outputs.labels }}

View File

@ -3,7 +3,6 @@ import sys
from pathlib import Path
from typing import Dict
import typer
from pydantic_core import ValidationError
from benchmarks.core.config import ConfigParser, ExperimentBuilder
@ -13,8 +12,6 @@ from benchmarks.deluge.config import DelugeExperimentConfig
config_parser = ConfigParser()
config_parser.register(DelugeExperimentConfig)
app = typer.Typer()
def cmd_list(experiments: Dict[str, ExperimentBuilder[Experiment]], _):
"""

View File

@ -3,11 +3,9 @@
from abc import ABC, abstractmethod
from collections.abc import Iterable
from mypy.graph_utils import TypeVar
import logging
from typing_extensions import Generic
from typing_extensions import Generic, TypeVar
logger = logging.getLogger(__name__)

View File

@ -1,15 +1,25 @@
FROM python:3.12-slim
ARG BUILD_TYPE="test"
RUN pip install poetry && poetry config virtualenvs.create false
RUN mkdir /opt/bittorrent-benchmarks
WORKDIR /opt/bittorrent-benchmarks
RUN echo "CU"
COPY pyproject.toml poetry.lock ./
RUN poetry install --no-root
RUN if [ "$BUILD_TYPE" = "production" ]; then \
echo "Image is a production build"; \
poetry install --only main --no-root; \
else \
echo "Image is a test build"; \
poetry install --no-root; \
fi
COPY . .
RUN poetry install
RUN poetry install --only main
ENTRYPOINT ["/usr/local/bin/bittorrent-benchmarks", "/opt/bittorrent-benchmarks/experiments.yaml"]