mirror of
https://github.com/codex-storage/bittorrent-benchmarks.git
synced 2025-02-13 11:36:28 +00:00
add CI flow, fix broken import
This commit is contained in:
parent
55487c5a75
commit
84c02e3745
66
.github/workflows/ci.yml
vendored
Normal file
66
.github/workflows/ci.yml
vendored
Normal 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 }}
|
@ -3,7 +3,6 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
import typer
|
|
||||||
from pydantic_core import ValidationError
|
from pydantic_core import ValidationError
|
||||||
|
|
||||||
from benchmarks.core.config import ConfigParser, ExperimentBuilder
|
from benchmarks.core.config import ConfigParser, ExperimentBuilder
|
||||||
@ -13,8 +12,6 @@ from benchmarks.deluge.config import DelugeExperimentConfig
|
|||||||
config_parser = ConfigParser()
|
config_parser = ConfigParser()
|
||||||
config_parser.register(DelugeExperimentConfig)
|
config_parser.register(DelugeExperimentConfig)
|
||||||
|
|
||||||
app = typer.Typer()
|
|
||||||
|
|
||||||
|
|
||||||
def cmd_list(experiments: Dict[str, ExperimentBuilder[Experiment]], _):
|
def cmd_list(experiments: Dict[str, ExperimentBuilder[Experiment]], _):
|
||||||
"""
|
"""
|
||||||
|
@ -3,11 +3,9 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
|
|
||||||
from mypy.graph_utils import TypeVar
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from typing_extensions import Generic
|
from typing_extensions import Generic, TypeVar
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -1,15 +1,25 @@
|
|||||||
FROM python:3.12-slim
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
ARG BUILD_TYPE="test"
|
||||||
|
|
||||||
RUN pip install poetry && poetry config virtualenvs.create false
|
RUN pip install poetry && poetry config virtualenvs.create false
|
||||||
|
|
||||||
RUN mkdir /opt/bittorrent-benchmarks
|
RUN mkdir /opt/bittorrent-benchmarks
|
||||||
WORKDIR /opt/bittorrent-benchmarks
|
WORKDIR /opt/bittorrent-benchmarks
|
||||||
|
|
||||||
|
RUN echo "CU"
|
||||||
|
|
||||||
COPY pyproject.toml poetry.lock ./
|
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 . .
|
COPY . .
|
||||||
RUN poetry install
|
RUN poetry install --only main
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/bittorrent-benchmarks", "/opt/bittorrent-benchmarks/experiments.yaml"]
|
ENTRYPOINT ["/usr/local/bin/bittorrent-benchmarks", "/opt/bittorrent-benchmarks/experiments.yaml"]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user