116 lines
4.4 KiB
Plaintext
116 lines
4.4 KiB
Plaintext
name: Test Release Pipeline
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'test-v*'
|
|
|
|
jobs:
|
|
test-release:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
- name: Extract version from tag
|
|
id: get_version
|
|
run: |
|
|
TAG_VERSION=${GITHUB_REF#refs/tags/test-v}
|
|
echo "VERSION=$TAG_VERSION" >> $GITHUB_OUTPUT
|
|
echo "Testing with version: $TAG_VERSION"
|
|
|
|
- name: Install package dependencies
|
|
run: |
|
|
pip install -e .
|
|
|
|
- name: Check version consistency
|
|
run: |
|
|
TAG_VERSION=${{ steps.get_version.outputs.VERSION }}
|
|
PACKAGE_VERSION=$(python -c "from crawl4ai.__version__ import __version__; print(__version__)")
|
|
|
|
echo "Tag version: $TAG_VERSION"
|
|
echo "Package version: $PACKAGE_VERSION"
|
|
|
|
if [ "$TAG_VERSION" != "$PACKAGE_VERSION" ]; then
|
|
echo "❌ Version mismatch! Tag: $TAG_VERSION, Package: $PACKAGE_VERSION"
|
|
echo "Please update crawl4ai/__version__.py to match the tag version"
|
|
exit 1
|
|
fi
|
|
echo "✅ Version check passed: $TAG_VERSION"
|
|
|
|
- name: Install build dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install build twine
|
|
|
|
- name: Build package
|
|
run: python -m build
|
|
|
|
- name: Check package
|
|
run: twine check dist/*
|
|
|
|
- name: Upload to Test PyPI
|
|
env:
|
|
TWINE_USERNAME: __token__
|
|
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_TOKEN }}
|
|
run: |
|
|
echo "📦 Uploading to Test PyPI..."
|
|
twine upload --repository testpypi dist/* || {
|
|
if [ $? -eq 1 ]; then
|
|
echo "⚠️ Upload failed - likely version already exists on Test PyPI"
|
|
echo "Continuing anyway for test purposes..."
|
|
else
|
|
exit 1
|
|
fi
|
|
}
|
|
echo "✅ Test PyPI step complete"
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_TOKEN }}
|
|
|
|
- name: Build and push Docker test images
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: |
|
|
unclecode/crawl4ai:test-${{ steps.get_version.outputs.VERSION }}
|
|
unclecode/crawl4ai:test-latest
|
|
platforms: linux/amd64,linux/arm64
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
- name: Summary
|
|
run: |
|
|
echo "## 🎉 Test Release Complete!" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 📦 Test PyPI Package" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Version: ${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "- URL: https://test.pypi.org/project/crawl4ai/" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Install: \`pip install -i https://test.pypi.org/simple/ crawl4ai==${{ steps.get_version.outputs.VERSION }}\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 🐳 Docker Test Images" >> $GITHUB_STEP_SUMMARY
|
|
echo "- \`unclecode/crawl4ai:test-${{ steps.get_version.outputs.VERSION }}\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "- \`unclecode/crawl4ai:test-latest\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 🧹 Cleanup Commands" >> $GITHUB_STEP_SUMMARY
|
|
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
|
|
echo "# Remove test tag" >> $GITHUB_STEP_SUMMARY
|
|
echo "git tag -d test-v${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "git push origin :test-v${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "# Remove Docker test images" >> $GITHUB_STEP_SUMMARY
|
|
echo "docker rmi unclecode/crawl4ai:test-${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "docker rmi unclecode/crawl4ai:test-latest" >> $GITHUB_STEP_SUMMARY
|
|
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY |