Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,5 @@ fi

export VIRTUAL_ENV="${PWD}/.venv"
PATH_add "${PWD}/.venv/bin"
PATH_add "${PWD}/.devenv/bin"

32 changes: 32 additions & 0 deletions .github/actions/setup-dev/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: 'Setup Launchpad dev'
description: 'Sets up Python, uv, and dev dependencies'
inputs:
python-version:
description: 'Python version'
required: false
default: '3.12'

runs:
using: 'composite'
steps:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: false
cache-dependency-glob: pyproject.toml

- name: Set up venv
uses: getsentry/[email protected]
with:
python-version: ${{ inputs.python-version }}
cache-dependency-path: uv.lock
install-cmd: uv sync --frozen --active

- name: Install dependencies
shell: bash
run: make install-dev-for-ci
64 changes: 10 additions & 54 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,8 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: pyproject.toml

- name: Install dependencies
run: make install-dev
- name: Setup launchpad dev
uses: ./.github/actions/setup-dev

- name: Check lint
run: make check-lint
Expand All @@ -50,19 +39,8 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: pyproject.toml

- name: Install dependencies
run: make install-dev
- name: Setup launchpad dev
uses: ./.github/actions/setup-dev

- name: Build Docker image with test fixtures
run: docker build --build-arg TEST_BUILD=true -t launchpad-test .
Expand All @@ -76,7 +54,7 @@ jobs:
-e KAFKA_BOOTSTRAP_SERVERS="localhost:9092" \
-e KAFKA_GROUP_ID="launchpad-test" \
-e KAFKA_TOPICS="preprod-artifact-events" \
launchpad-test python -m pytest -n auto tests/ -v
launchpad-test uv run pytest -n auto tests/ -v

- name: Test CLI installation and basic functionality in Docker
run: |
Expand All @@ -92,19 +70,8 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: pyproject.toml

- name: Install dependencies
run: make install-dev
- name: Setup launchpad dev
uses: ./.github/actions/setup-dev

- name: Build Docker image with test fixtures
run: docker build --build-arg TEST_BUILD=true -t launchpad-test .
Expand All @@ -121,7 +88,7 @@ jobs:
-v ${{ github.workspace }}:/workspace \
-w /workspace \
--user $(id -u):$(id -g) \
launchpad-test python -m pytest -n auto tests/unit/ tests/integration/ -v --cov --cov-branch --cov-report=xml --junitxml=junit.xml
launchpad-test uv run pytest -n auto tests/ -v --cov --cov-branch --cov-report=xml --junitxml=junit.xml

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
Expand All @@ -144,19 +111,8 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: pyproject.toml

- name: Install dependencies
run: make install-dev
- name: Setup launchpad dev
uses: ./.github/actions/setup-dev

- name: Build package
run: make build
Expand Down
30 changes: 4 additions & 26 deletions .github/workflows/image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,8 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: pyproject.toml

- name: Install dependencies
run: make install-dev
- name: Setup launchpad dev
uses: ./.github/actions/setup-dev

- name: Build package
run: make build
Expand Down Expand Up @@ -108,19 +97,8 @@ jobs:
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: pyproject.toml

- name: Install dependencies
run: make install-dev
- name: Setup launchpad dev
uses: ./.github/actions/setup-dev

- name: Build package
run: make build
Expand Down
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.13.1
30 changes: 19 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Build libdispatch for the strip binary
FROM --platform=linux/amd64 debian:12-slim AS libdispatch-build

Check warning on line 2 in Dockerfile

View workflow job for this annotation

GitHub Actions / build-pr-amd64

FROM --platform flag should not use a constant value

FromPlatformFlagConstDisallowed: FROM --platform flag should not use constant value "linux/amd64" More info: https://docs.docker.com/go/dockerfile/rule/from-platform-flag-const-disallowed/

Check warning on line 2 in Dockerfile

View workflow job for this annotation

GitHub Actions / build-pr-arm64

FROM --platform flag should not use a constant value

FromPlatformFlagConstDisallowed: FROM --platform flag should not use constant value "linux/amd64" More info: https://docs.docker.com/go/dockerfile/rule/from-platform-flag-const-disallowed/

RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
Expand Down Expand Up @@ -33,10 +33,14 @@
ARG TEST_BUILD=false

# Set environment variables
ENV PYTHONUNBUFFERED=1 \
ENV PATH="/.venv/bin:$PATH" \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
PIP_DISABLE_PIP_VERSION_CHECK=1 \
UV_PROJECT_ENVIRONMENT=/.venv \
UV_COMPILE_BYTECODE=1 \
UV_NO_CACHE=1

# Create app user and group
RUN groupadd --gid 1000 app && \
Expand Down Expand Up @@ -64,18 +68,24 @@
# Set working directory
WORKDIR /app

# Copy requirements and install Python dependencies
COPY requirements.txt requirements-dev.txt ./
RUN pip install --no-cache-dir -r requirements.txt -r requirements-dev.txt
RUN python3 -m pip install \
--index-url 'https://pypi.devinfra.sentry.io/simple' 'uv==0.8.2'

RUN python3 -m venv "$UV_PROJECT_ENVIRONMENT"

# Copy source code, tests, and scripts
COPY src/ ./src/
COPY tests/ ./tests/
COPY scripts/ ./scripts/
COPY devservices/ ./devservices/
COPY pyproject.toml .
COPY README.md .
COPY LICENSE .
COPY README.md LICENSE pyproject.toml uv.lock ./

RUN : && \
if [ "$TEST_BUILD" = "true" ]; then \
uv sync --frozen; \
else \
uv sync --frozen --no-dev; \
fi

# Copy libdispatch from the build stage
COPY --from=libdispatch-build /usr/lib/x86_64-linux-gnu/libdispatch.so* /usr/lib/x86_64-linux-gnu/
Expand All @@ -96,9 +106,7 @@
rm -rf tests/_fixtures; \
fi

RUN pip install -e .

RUN python scripts/deps --install --local-architecture=x86_64 --local-system=linux
RUN python3 scripts/deps --install --local-architecture=x86_64 --local-system=linux

# Change ownership to app user
RUN chown -R app:app /app
Expand Down
Loading
Loading