builds, initial testing builds, packaging, ci workflow
Some checks failed
Comprehensive CI/CD Pipeline / Build and Test (push) Failing after 2m1s
Comprehensive CI/CD Pipeline / Security Audit (push) Successful in 46s
Comprehensive CI/CD Pipeline / Package Validation (push) Successful in 1m7s
Comprehensive CI/CD Pipeline / Status Report (push) Has been skipped
Some checks failed
Comprehensive CI/CD Pipeline / Build and Test (push) Failing after 2m1s
Comprehensive CI/CD Pipeline / Security Audit (push) Successful in 46s
Comprehensive CI/CD Pipeline / Package Validation (push) Successful in 1m7s
Comprehensive CI/CD Pipeline / Status Report (push) Has been skipped
This commit is contained in:
parent
0e80b08b0a
commit
45c124637b
25 changed files with 1994 additions and 6 deletions
152
.forgejo/workflows/build-debian.yml.disabled
Normal file
152
.forgejo/workflows/build-debian.yml.disabled
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
name: Build and Publish Debian Package
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: [ 'v*' ]
|
||||
workflow_dispatch:
|
||||
# Disabled: conflicts with ci.yml - use ci.yml for main branch builds
|
||||
|
||||
jobs:
|
||||
build-deb:
|
||||
name: Build Debian Package
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
run: |
|
||||
git clone https://git.raines.xyz/robojerk/deb-mock.git /tmp/deb-mock
|
||||
cp -r /tmp/deb-mock/* .
|
||||
cp -r /tmp/deb-mock/.* . 2>/dev/null || true
|
||||
|
||||
- name: Set up Python
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y python3.12 python3.12-venv python3-pip
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
# Configure APT to use your cache server
|
||||
echo 'Acquire::http::Proxy "http://192.168.1.79:3142";' | sudo tee /etc/apt/apt.conf.d/99proxy
|
||||
echo 'Acquire::https::Proxy "http://192.168.1.79:3142";' | sudo tee -a /etc/apt/apt.conf.d/99proxy
|
||||
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential devscripts debhelper dh-python python3-all python3-setuptools
|
||||
sudo apt install -y sbuild schroot debootstrap
|
||||
|
||||
- name: Create mock directories
|
||||
run: |
|
||||
sudo mkdir -p /var/lib/mock/chroots /var/cache/mock
|
||||
sudo chown -R $USER:$USER /var/lib/mock /var/cache/mock
|
||||
|
||||
- name: Set up virtual environment
|
||||
run: |
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install --upgrade pip
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements-dev.txt
|
||||
|
||||
- name: Install mock in development mode
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
pip install -e .
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python -m pytest tests/ -v --cov=deb_mock --cov-report=xml
|
||||
|
||||
- name: Build Debian package
|
||||
run: |
|
||||
echo "=== Building Debian Package ==="
|
||||
|
||||
# Get version from setup.py
|
||||
VERSION=$(python3 -c "import re; print(re.search(r'version=[\"\']([^\"\']+)[\"\']', open('setup.py').read()).group(1))")
|
||||
echo "Building version: $VERSION"
|
||||
|
||||
# Check if we need to update changelog
|
||||
CURRENT_CHANGELOG_VERSION=$(head -1 debian/changelog | sed 's/mock (\([^-]*\)-[^)]*).*/\1/')
|
||||
echo "Current changelog version: $CURRENT_CHANGELOG_VERSION"
|
||||
echo "Target version: $VERSION"
|
||||
|
||||
if [ "$CURRENT_CHANGELOG_VERSION" != "$VERSION" ]; then
|
||||
echo "Updating changelog to version $VERSION"
|
||||
dch --newversion "$VERSION-1" --distribution unstable "Build from CI/CD"
|
||||
else
|
||||
echo "Changelog already at correct version"
|
||||
fi
|
||||
|
||||
# Build the package
|
||||
echo "Building package with dpkg-buildpackage..."
|
||||
dpkg-buildpackage -us -uc -b
|
||||
|
||||
# List built packages
|
||||
echo "Built packages:"
|
||||
ls -la ../mock_*.deb ../mock_*.changes 2>/dev/null || echo "No packages found"
|
||||
ls -la ../mock_*.dsc 2>/dev/null || echo "No .dsc file (binary-only package)"
|
||||
|
||||
- name: Upload to Forgejo Debian Package Registry
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
echo "=== Uploading to Forgejo Debian Package Registry ==="
|
||||
|
||||
# Check if ACCESS_TOKEN is available
|
||||
if [ -z "${{ secrets.ACCESS_TOKEN }}" ]; then
|
||||
echo "❌ ACCESS_TOKEN is not set - skipping upload"
|
||||
echo "To enable uploads, add ACCESS_TOKEN secret to repository settings"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "✅ ACCESS_TOKEN is set"
|
||||
|
||||
# List packages for upload
|
||||
echo "Built packages:"
|
||||
ls -la ../mock_*.deb 2>/dev/null || echo "No .deb files found"
|
||||
|
||||
for deb_file in ../mock_*.deb; do
|
||||
if [ -f "$deb_file" ]; then
|
||||
echo "Uploading $deb_file to Forgejo Debian Package Registry..."
|
||||
filename=$(basename "$deb_file")
|
||||
echo "File: $filename"
|
||||
|
||||
# Upload using Forgejo's API
|
||||
http_code=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
--user "robojerk:${{ secrets.ACCESS_TOKEN }}" \
|
||||
--upload-file "$deb_file" \
|
||||
"https://git.raines.xyz/api/packages/robojerk/debian/pool/unstable/main/upload")
|
||||
|
||||
echo "HTTP Response Code: $http_code"
|
||||
|
||||
if [ "$http_code" = "201" ]; then
|
||||
echo "✅ Debian Package Registry upload SUCCESS for $deb_file"
|
||||
elif [ "$http_code" = "409" ]; then
|
||||
echo "➡️ INFO: Package $deb_file already exists (HTTP 409 Conflict)"
|
||||
else
|
||||
echo "❌ Debian Package Registry upload FAILED for $deb_file (HTTP $http_code)"
|
||||
# Show verbose output for debugging failures
|
||||
curl -v -i --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \
|
||||
--upload-file "$deb_file" \
|
||||
"https://git.raines.xyz/api/packages/robojerk/debian/pool/unstable/main/upload" 2>&1
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Success Summary
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
echo "=== Upload Summary ==="
|
||||
echo "✅ Mock package uploaded successfully to Forgejo Debian Package Registry"
|
||||
echo "✅ Package automatically assigned to repository by Forgejo"
|
||||
echo ""
|
||||
echo "📦 Package should now be available at:"
|
||||
echo " https://git.raines.xyz/robojerk/-/packages"
|
||||
echo ""
|
||||
echo "🎯 Next steps:"
|
||||
echo " - Verify package appears in repository packages page"
|
||||
echo " - Test package installation on Debian/Ubuntu systems"
|
||||
echo " - Users can install with: sudo apt install mock"
|
||||
Loading…
Add table
Add a link
Reference in a new issue