mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-09-14 11:06:13 +05:00
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Build Docker image / publish multiarch tags (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Release State / release-state (push) Waiting to run
Parallel Tests / Discover test files (push) Waiting to run
Parallel Tests / ${{ matrix.test.name }} (push) Blocked by required conditions
Parallel Tests / ${{ matrix.plugin.name }} (push) Blocked by required conditions
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
Build Debian package / build (amd64) (push) Has been cancelled
Build Debian package / build (arm64) (push) Has been cancelled
Build Debian package / test (amd64, ubuntu-24.04) (push) Has been cancelled
Build Debian package / test (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Build Debian package / release (push) Has been cancelled
109 lines
3.5 KiB
YAML
Executable File
109 lines
3.5 KiB
YAML
Executable File
name: Build Pip package
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
push:
|
|
branches:
|
|
- '**'
|
|
tags:
|
|
- 'v*'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
PYTHON_VERSION: "3.13"
|
|
|
|
jobs:
|
|
build:
|
|
permissions:
|
|
id-token: write
|
|
|
|
runs-on: ubuntu-24.04
|
|
environment: pypi
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v6
|
|
with:
|
|
enable-cache: false
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
architecture: x64
|
|
|
|
- name: APT install archivebox dev + run dependencies
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: ripgrep build-essential python3-dev python3-setuptools libssl-dev libldap2-dev libsasl2-dev zlib1g-dev libatomic1 gnupg2 curl wget python3-ldap python3-msgpack python3-mutagen python3-regex python3-pycryptodome procps
|
|
version: 1.0
|
|
|
|
- name: Wait for released ArchiveBox deps on PyPI
|
|
run: |
|
|
python - <<'PY'
|
|
import json
|
|
import re
|
|
import sys
|
|
import time
|
|
import tomllib
|
|
import urllib.request
|
|
|
|
watched = {"abxbus", "abxpkg", "abx-plugins", "abx-dl"}
|
|
deps = tomllib.loads(open("pyproject.toml", "rb").read().decode())["project"]["dependencies"]
|
|
required = {}
|
|
for dep in deps:
|
|
for name in watched:
|
|
match = re.match(rf"{re.escape(name)}\s*(==|>=)\s*([^,;\s]+)", dep)
|
|
if match:
|
|
required[name] = match.group(2)
|
|
|
|
deadline = time.monotonic() + 300
|
|
missing = required.copy()
|
|
while missing and time.monotonic() < deadline:
|
|
for name, version in list(missing.items()):
|
|
with urllib.request.urlopen(f"https://pypi.org/pypi/{name}/json", timeout=20) as resp:
|
|
releases = json.load(resp)["releases"]
|
|
if version in releases:
|
|
print(f"{name} {version} is available on PyPI")
|
|
missing.pop(name)
|
|
else:
|
|
print(f"{name} {version} is not available on PyPI yet")
|
|
if missing:
|
|
time.sleep(10)
|
|
|
|
if missing:
|
|
print(f"Missing PyPI releases after wait: {missing}", file=sys.stderr)
|
|
sys.exit(1)
|
|
PY
|
|
|
|
- name: UV install archivebox dev + run sub-dependencies
|
|
run: uv sync --all-extras --no-install-project --no-install-workspace --no-sources --no-cache
|
|
|
|
- name: UV build archivebox and archivebox/pkgs/* packages
|
|
run: |
|
|
uv build --all
|
|
|
|
- name: Publish new package wheels and sdists to PyPI
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
# ignore when publish to PyPI fails due to duplicate tag
|
|
continue-on-error: true
|
|
with:
|
|
password: ${{ secrets.PYPI_PAT_SECRET }}
|
|
|
|
- name: UV install archivebox and archivebox/pkgs/* locally for tests
|
|
run: uv sync --all-extras --no-sources --no-cache
|
|
|
|
- name: UV run archivebox init + archivebox version
|
|
run: |
|
|
mkdir -p data && cd data
|
|
uv run --no-sync --no-sources archivebox init \
|
|
&& uv run --no-sync --no-sources archivebox version
|
|
# && uv run archivebox add 'https://example.com' \
|
|
# && uv run archivebox status \
|
|
# || (echo "UV Failed to run archivebox!" && exit 1)
|