All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m3s
213 lines
6.4 KiB
YAML
213 lines
6.4 KiB
YAML
name: Zabbix APK Builder
|
|
|
|
on:
|
|
# Manual trigger
|
|
workflow_dispatch:
|
|
inputs:
|
|
force_build:
|
|
description: 'Force build even if version unchanged'
|
|
required: false
|
|
default: 'false'
|
|
type: boolean
|
|
|
|
# Scheduled check for new versions (daily at 6 AM UTC)
|
|
schedule:
|
|
- cron: '0 6 * * *'
|
|
|
|
# Trigger on pushes to main/test branch
|
|
push:
|
|
branches: [ main, test ]
|
|
paths: [ 'APKBUILD', 'Dockerfile', 'build.sh', '*.initd', '*.confd' ]
|
|
|
|
jobs:
|
|
check-version:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_build: ${{ steps.version-check.outputs.should_build }}
|
|
latest_version: ${{ steps.version-check.outputs.latest_version }}
|
|
current_version: ${{ steps.version-check.outputs.current_version }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
fetch-depth: 0
|
|
|
|
- name: Check for new Zabbix version
|
|
id: version-check
|
|
run: |
|
|
# Get current version from APKBUILD
|
|
CURRENT_VERSION=$(grep '^pkgver=' APKBUILD | cut -d'=' -f2)
|
|
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
|
echo "Current version: $CURRENT_VERSION"
|
|
|
|
# Get latest version from Zabbix Bitbucket API (stable releases only)
|
|
LATEST_VERSION=$(curl -s "https://git.zabbix.com/rest/api/1.0/projects/ZBX/repos/zabbix/tags?limit=100" | \
|
|
jq -r '.values[].displayId' | \
|
|
grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | \
|
|
grep -v 'rc\|beta\|alpha' | \
|
|
sort -V | \
|
|
tail -1)
|
|
|
|
echo "latest_version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
|
echo "Latest version: $LATEST_VERSION"
|
|
|
|
# Determine if we should build
|
|
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ] || [ "${{ inputs.force_build }}" = "true" ]; then
|
|
echo "should_build=true" >> $GITHUB_OUTPUT
|
|
echo "Build required: Version changed or force build requested"
|
|
else
|
|
echo "should_build=false" >> $GITHUB_OUTPUT
|
|
echo "No build required: Version unchanged"
|
|
fi
|
|
|
|
update-version:
|
|
needs: check-version
|
|
if: needs.check-version.outputs.should_build == 'true'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
fetch-depth: 0
|
|
|
|
- name: Update APKBUILD version
|
|
run: |
|
|
LATEST_VERSION="${{ needs.check-version.outputs.latest_version }}"
|
|
CURRENT_VERSION="${{ needs.check-version.outputs.current_version }}"
|
|
|
|
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
|
|
echo "Updating APKBUILD from $CURRENT_VERSION to $LATEST_VERSION"
|
|
|
|
# Update pkgver
|
|
sed -i "s/^pkgver=.*/pkgver=$LATEST_VERSION/" APKBUILD
|
|
|
|
# Reset pkgrel to 0 for new version
|
|
sed -i "s/^pkgrel=.*/pkgrel=0/" APKBUILD
|
|
|
|
# Clear checksums (will be regenerated during build)
|
|
sed -i '/^sha512sums="/,/^"$/c\sha512sums="\nSKIP\nSKIP\nSKIP\nSKIP\nSKIP\n"' APKBUILD
|
|
|
|
# Commit changes
|
|
git config --local user.email "action@github.com"
|
|
git config --local user.name "GitHub Action"
|
|
git add APKBUILD
|
|
git commit -m "Update Zabbix to version $LATEST_VERSION" || exit 0
|
|
git push
|
|
fi
|
|
|
|
build-packages:
|
|
needs: [check-version, update-version]
|
|
if: needs.check-version.outputs.should_build == 'true'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.ref }}
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Build Zabbix packages
|
|
run: |
|
|
chmod +x build.sh
|
|
./build.sh
|
|
|
|
- name: List built packages
|
|
run: |
|
|
echo "Built packages:"
|
|
ls -la packages/
|
|
|
|
echo "Package sizes:"
|
|
du -h packages/*.apk
|
|
|
|
- name: Upload packages as artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: zabbix-apk-packages
|
|
path: packages/*.apk
|
|
retention-days: 30
|
|
|
|
|
|
|
|
publish-to-gitea:
|
|
needs: [check-version, build-packages]
|
|
if: needs.check-version.outputs.should_build == 'true'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download packages
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: zabbix-apk-packages
|
|
path: packages/
|
|
|
|
- name: Setup SSH for Gitea
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.GITEA_SSH_KEY }}" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
ssh-keyscan -H gitea-repo >> ~/.ssh/known_hosts 2>/dev/null || true
|
|
|
|
- name: Publish to Gitea repository
|
|
run: |
|
|
# Clone or update the packages repository
|
|
git clone git@gitea-repo:mbuz/Zabbix.git gitea-repo || true
|
|
cd gitea-repo
|
|
|
|
# Create packages directory structure
|
|
mkdir -p alpine/v3.18/main/x86_64
|
|
|
|
# Copy new packages
|
|
cp ../packages/*.apk alpine/v3.18/main/x86_64/
|
|
|
|
# Update package index (simplified)
|
|
cd alpine/v3.18/main/x86_64
|
|
ls *.apk > PACKAGES.txt
|
|
|
|
# Commit and push
|
|
git config --local user.email "action@github.com"
|
|
git config --local user.name "GitHub Action"
|
|
git add .
|
|
git commit -m "Add Zabbix ${{ needs.check-version.outputs.latest_version }} packages" || exit 0
|
|
git push
|
|
|
|
deploy-test:
|
|
needs: [check-version, build-packages]
|
|
if: needs.check-version.outputs.should_build == 'true' && github.ref == 'refs/heads/test'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Download packages
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: zabbix-apk-packages
|
|
path: packages/
|
|
|
|
- name: Test deployment in Alpine container
|
|
run: |
|
|
# Test agent package
|
|
docker run --rm -v $PWD/packages:/packages alpine:latest sh -c "
|
|
apk add --allow-untrusted /packages/zabbix-agent-*.apk
|
|
which zabbix_agentd
|
|
zabbix_agentd --version
|
|
"
|
|
|
|
# Test proxy package
|
|
docker run --rm -v $PWD/packages:/packages alpine:latest sh -c "
|
|
apk add --allow-untrusted /packages/zabbix-proxy-*.apk
|
|
which zabbix_proxy
|
|
zabbix_proxy --version
|
|
"
|
|
|
|
echo "✅ Package deployment test passed"
|