Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
03acdb5
fix: check if update is due based on UPDATE_INTERVAL daily
aaronspruit Apr 3, 2026
ba871cf
refactor: poll index age on a fixed tick with retry backoff
rtuszik Aug 8, 2026
0f48203
chore(deps): update uv
koalabot-rt[bot] Aug 14, 2026
9ad0a73
chore(deps): update dependency prek to v0.4.13
koalabot-rt[bot] Aug 14, 2026
e128b82
chore(deps): update actions/checkout digest to d23441a
koalabot-rt[bot] Aug 14, 2026
6d6ddd0
chore: group BetterLeaks and Docker action updates
rtuszik Aug 15, 2026
6ccadd9
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks to v44
koalabot-rt[bot] Aug 15, 2026
44d104a
chore(deps): update actions/checkout action to v7
koalabot-rt[bot] Aug 14, 2026
8837b67
chore(deps): update actions/setup-python action to v7
koalabot-rt[bot] Aug 14, 2026
58e2ece
chore(deps): update astral-sh/setup-uv action to v9
koalabot-rt[bot] Aug 14, 2026
91325ce
chore(deps): update dependency uv_build to >=0.12.3,<0.13.0
koalabot-rt[bot] Aug 14, 2026
8d44fa9
chore(deps): update pre-commit hook betterleaks/betterleaks to v1.7.4
koalabot-rt[bot] Aug 14, 2026
ae7bebc
chore(deps): update dependency betterleaks to v1.7.4
koalabot-rt[bot] Aug 14, 2026
3136dc5
ci: trigger workflows on GitHub Actions changes
rtuszik Aug 15, 2026
625923e
chore(deps): update dependency zizmor to v1.29.0
koalabot-rt[bot] Aug 15, 2026
38772cb
chore(deps): update dependency python to v3.14.7
koalabot-rt[bot] Aug 15, 2026
ccc2c63
chore(deps): update release-drafter/release-drafter digest to 34d8067
koalabot-rt[bot] Aug 15, 2026
e5dcc8a
chore(deps): update mishakav/pytest-coverage-comment digest to 09c28b6
koalabot-rt[bot] Aug 15, 2026
7539f81
chore(deps): update ubuntu:noble docker digest to 561618e
koalabot-rt[bot] Aug 15, 2026
165626b
support non-root execution in entrypoint.sh
rtuszik Aug 16, 2026
204754a
ci: run workflows when entrypoint changes
rtuszik Aug 16, 2026
079bd21
update photon version to 1.3.0
rtuszik Aug 16, 2026
7d52d11
dev: migrate task runner from Task to mise
rtuszik Aug 16, 2026
682d392
docs: clarify update interval behavior
rtuszik Aug 17, 2026
0c2db44
ci: update Docker actions and workflow summaries
rtuszik Aug 17, 2026
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
24 changes: 13 additions & 11 deletions .github/workflows/build-and-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
ref: ${{ github.ref }}
persist-credentials: false

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Login to DockerHub
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Login to GitHub Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -139,7 +139,7 @@ jobs:
echo "Generated tags: $TAGS"

- name: Build and push Docker image
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
build-args: |
PHOTON_VERSION=${{ env.PHOTON_VERSION }}
Expand All @@ -151,9 +151,11 @@ jobs:

- name: Output summary
run: |
echo "## Docker Build Summary" >> $GITHUB_STEP_SUMMARY
echo "- **Event:** ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
echo "- **Container Version:** ${CONTAINER_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "- **Photon Version:** ${PHOTON_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "- **Is Prerelease:** ${IS_PRERELEASE}" >> $GITHUB_STEP_SUMMARY
echo "- **Tags:** ${DOCKER_TAGS}" >> $GITHUB_STEP_SUMMARY
{
echo "## Docker Build Summary"
echo "- **Event:** ${{ github.event_name }}"
echo "- **Container Version:** ${CONTAINER_VERSION}"
echo "- **Photon Version:** ${PHOTON_VERSION}"
echo "- **Is Prerelease:** ${IS_PRERELEASE}"
echo "- **Tags:** ${DOCKER_TAGS}"
} >> "$GITHUB_STEP_SUMMARY"
2 changes: 1 addition & 1 deletion .github/workflows/check-releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- name: Check for new Photon release
Expand Down
113 changes: 59 additions & 54 deletions .github/workflows/full-test-jsonl.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
name: Container Test

on:
Expand All @@ -12,6 +13,8 @@ on:
- ".last_release"
- "pyproject.toml"
- "uv.lock"
- ".github/**"
- "entrypoint.sh"

permissions:
contents: read
Expand All @@ -21,90 +24,92 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Read Photon version from .last_release
id: photon_version
run: |
PHOTON_VERSION=$(cat .last_release | tr -d '[:space:]')
if [[ -z "$PHOTON_VERSION" || ! "$PHOTON_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: .last_release is missing, empty, or contains an invalid version: '$PHOTON_VERSION'"
exit 1
fi
echo "PHOTON_VERSION=$PHOTON_VERSION" >> "$GITHUB_ENV"
echo "Photon Version: $PHOTON_VERSION"
PHOTON_VERSION=$(cat .last_release | tr -d '[:space:]')
if [[ -z "$PHOTON_VERSION" || ! "$PHOTON_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: .last_release is missing, empty, or contains an invalid version: '$PHOTON_VERSION'"
exit 1
fi
echo "PHOTON_VERSION=$PHOTON_VERSION" >> "$GITHUB_ENV"
echo "Photon Version: $PHOTON_VERSION"

- name: Build test image
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: ./Dockerfile
build-args: |
PHOTON_VERSION=${{ env.PHOTON_VERSION }}
push: false
load: true
tags: photon-test:pr-${{ github.event.pull_request.number }}
platforms: linux/amd64
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
file: ./Dockerfile
build-args: |
PHOTON_VERSION=${{ env.PHOTON_VERSION }}
push: false
load: true
tags: photon-test:pr-${{ github.event.pull_request.number }}
platforms: linux/amd64
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Start container
run: |
docker run -d \
--name photon-test-pr-${{ github.event.pull_request.number }} \
-e REGION=andorra \
-e IMPORT_MODE=jsonl \
-e UPDATE_STRATEGY=DISABLED \
photon-test:pr-${{ github.event.pull_request.number }}
docker run -d \
--name photon-test-pr-${{ github.event.pull_request.number }} \
-e REGION=andorra \
-e IMPORT_MODE=jsonl \
-e UPDATE_STRATEGY=DISABLED \
photon-test:pr-${{ github.event.pull_request.number }}

- name: Wait for container to be healthy
run: |
echo "Waiting for container to become healthy (timeout: 6 minutes)..."
CONTAINER_NAME=photon-test-pr-${{ github.event.pull_request.number }}
echo "Waiting for container to become healthy (timeout: 6 minutes)..."
CONTAINER_NAME=photon-test-pr-${{ github.event.pull_request.number }}

docker logs -f $CONTAINER_NAME &
LOGS_PID=$!
docker logs -f $CONTAINER_NAME &
LOGS_PID=$!

ELAPSED=0
TIMEOUT=360
ELAPSED=0
TIMEOUT=360

while [ "$ELAPSED" -lt "$TIMEOUT" ]; do
HEALTH_STATUS=$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER_NAME 2>/dev/null || echo "unknown")
while [ "$ELAPSED" -lt "$TIMEOUT" ]; do
HEALTH_STATUS=$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER_NAME 2>/dev/null || echo "unknown")

if [ "$HEALTH_STATUS" = "healthy" ]; then
echo "Container is healthy after ${ELAPSED} seconds"
kill $LOGS_PID 2>/dev/null || true
exit 0
fi
if [ "$HEALTH_STATUS" = "healthy" ]; then
echo "Container is healthy after ${ELAPSED} seconds"
kill $LOGS_PID 2>/dev/null || true
exit 0
fi

echo "Health status: $HEALTH_STATUS (elapsed: ${ELAPSED}s)"
sleep 10
ELAPSED=$((ELAPSED + 10))
done
echo "Health status: $HEALTH_STATUS (elapsed: ${ELAPSED}s)"
sleep 10
ELAPSED=$((ELAPSED + 10))
done

kill $LOGS_PID 2>/dev/null || true
echo "Container failed to become healthy within $TIMEOUT seconds"
docker logs $CONTAINER_NAME
exit 1
kill $LOGS_PID 2>/dev/null || true
echo "Container failed to become healthy within $TIMEOUT seconds"
docker logs $CONTAINER_NAME
exit 1

- name: Cleanup
if: always()
run: |
docker stop photon-test-pr-${{ github.event.pull_request.number }} || true
docker rm photon-test-pr-${{ github.event.pull_request.number }} || true
docker rmi photon-test:pr-${{ github.event.pull_request.number }} || true
docker stop photon-test-pr-${{ github.event.pull_request.number }} || true
docker rm photon-test-pr-${{ github.event.pull_request.number }} || true
docker rmi photon-test:pr-${{ github.event.pull_request.number }} || true

- name: Output summary
if: always()
run: |
echo "## Container Test Summary" >> $GITHUB_STEP_SUMMARY
echo "- **PR Number:** ${{ github.event.pull_request.number }}" >> $GITHUB_STEP_SUMMARY
echo "- **Photon Version:** ${PHOTON_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "- **Status:** ${JOB_STATUS}" >> $GITHUB_STEP_SUMMARY
{
echo "## Container Test Summary"
echo "- **PR Number:** ${{ github.event.pull_request.number }}"
echo "- **Photon Version:** ${PHOTON_VERSION}"
echo "- **Status:** ${JOB_STATUS}"
} >> "$GITHUB_STEP_SUMMARY"
env:
JOB_STATUS: ${{ job.status }}
18 changes: 11 additions & 7 deletions .github/workflows/full-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ on:
- ".last_release"
- "pyproject.toml"
- "uv.lock"
- ".github/**"
- "entrypoint.sh"

permissions:
contents: read
Expand All @@ -22,12 +24,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Read Photon version from .last_release
id: photon_version
Expand All @@ -41,7 +43,7 @@ jobs:
echo "Photon Version: $PHOTON_VERSION"

- name: Build test image
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: ./Dockerfile
Expand Down Expand Up @@ -102,9 +104,11 @@ jobs:
- name: Output summary
if: always()
run: |
echo "## Container Test Summary" >> $GITHUB_STEP_SUMMARY
echo "- **PR Number:** ${{ github.event.pull_request.number }}" >> $GITHUB_STEP_SUMMARY
echo "- **Photon Version:** ${PHOTON_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "- **Status:** ${JOB_STATUS}" >> $GITHUB_STEP_SUMMARY
{
echo "## Container Test Summary"
echo "- **PR Number:** ${{ github.event.pull_request.number }}"
echo "- **Photon Version:** ${PHOTON_VERSION}"
echo "- **Status:** ${JOB_STATUS}"
} >> "$GITHUB_STEP_SUMMARY"
env:
JOB_STATUS: ${{ job.status }}
27 changes: 15 additions & 12 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ on:
- "pyproject.toml"
- "uv.lock"
- ".python-version"
- ".github/**"
- "entrypoint.sh"

workflow_dispatch:

permissions:
Expand All @@ -17,17 +20,17 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
with:
python-version-file: ".python-version"

- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true
version: 0.11.28
version: 0.12.3
Comment thread
coderabbitai[bot] marked this conversation as resolved.

- run: uv sync --locked
- run: |
Expand All @@ -37,35 +40,35 @@ jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
with:
python-version-file: ".python-version"

- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true
version: 0.11.28
version: 0.12.3

- run: uv sync --locked
- run: uv run ty check

vulture:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
with:
python-version-file: ".python-version"

- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true
version: 0.11.28
version: 0.12.3

- run: uv sync --locked
- run: uv run vulture --min-confidence 100 --exclude ".venv" .
12 changes: 7 additions & 5 deletions .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ on:
- "pyproject.toml"
- "uv.lock"
- "Dockerfile"
- ".github/**"
- "entrypoint.sh"

permissions:
contents: write
Expand All @@ -18,20 +20,20 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
with:
python-version-file: "pyproject.toml"

- name: Install uv
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true
version: 0.11.28
version: 0.12.3

- name: Install dependencies
run: uv sync --locked
Expand All @@ -45,7 +47,7 @@ jobs:
| tee pytest-coverage.txt

- name: Pytest coverage comment
uses: MishaKav/pytest-coverage-comment@a01708271d42c5703d489b13eb503ba47c01e82a # main
uses: MishaKav/pytest-coverage-comment@09c28b6767e12a048e0b23e821ed03133ee48a1a # main
with:
pytest-coverage-path: ./pytest-coverage.txt
junitxml-path: ./pytest.xml
Loading