TEST: Change into the workflow
This commit is contained in:
@@ -19,6 +19,7 @@ jobs:
|
||||
should_build: ${{ steps.version-check.outputs.should_build }}
|
||||
latest_version: ${{ steps.version-check.outputs.latest_version }}
|
||||
current_version: ${{ steps.version-check.outputs.current_version }}
|
||||
is_push_trigger: ${{ steps.version-check.outputs.is_push_trigger }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -29,13 +30,22 @@ jobs:
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
# Install jq for JSON parsing
|
||||
sudo apt-get update && sudo apt-get install -y jq
|
||||
# Install jq for JSON parsing (remove sudo for container environment)
|
||||
apt-get update && apt-get install -y jq
|
||||
|
||||
# Detect trigger type
|
||||
if [[ "${{ gitea.event_name }}" == "push" ]]; then
|
||||
echo "is_push_trigger=true" >> "${GITHUB_OUTPUT}"
|
||||
echo "Triggered by push event - force build"
|
||||
else
|
||||
echo "is_push_trigger=false" >> "${GITHUB_OUTPUT}"
|
||||
echo "Triggered by schedule - check version"
|
||||
fi
|
||||
|
||||
# Get current version from APKBUILD
|
||||
CURRENT_VERSION=$(grep '^pkgver=' zabbix-apk-builder/APKBUILD | cut -d'=' -f2)
|
||||
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
||||
echo "Current version: $CURRENT_VERSION"
|
||||
echo "current_version=${CURRENT_VERSION}" >> "${GITHUB_OUTPUT}"
|
||||
echo "Current version: ${CURRENT_VERSION}"
|
||||
|
||||
# Get latest version from Zabbix API (stable releases only)
|
||||
LATEST_VERSION=$(curl -s "https://git.zabbix.com/rest/api/1.0/projects/ZBX/repos/zabbix/tags?limit=100" | \
|
||||
@@ -45,21 +55,28 @@ jobs:
|
||||
sort -V | \
|
||||
tail -1)
|
||||
|
||||
echo "latest_version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
||||
echo "Latest version: $LATEST_VERSION"
|
||||
echo "latest_version=${LATEST_VERSION}" >> "${GITHUB_OUTPUT}"
|
||||
echo "Latest version: ${LATEST_VERSION}"
|
||||
|
||||
# Determine if we should build
|
||||
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
|
||||
echo "should_build=true" >> $GITHUB_OUTPUT
|
||||
echo "Build required: Version changed"
|
||||
# Determine if we should build based on trigger type
|
||||
if [[ "${{ gitea.event_name }}" == "push" ]]; then
|
||||
# Push trigger: always build to test changes
|
||||
echo "should_build=true" >> "${GITHUB_OUTPUT}"
|
||||
echo "Build required: Push trigger detected"
|
||||
elif [[ "${CURRENT_VERSION}" != "${LATEST_VERSION}" ]]; then
|
||||
# Schedule trigger: only build if version changed
|
||||
echo "should_build=true" >> "${GITHUB_OUTPUT}"
|
||||
echo "Build required: New version ${LATEST_VERSION} available"
|
||||
else
|
||||
echo "should_build=false" >> $GITHUB_OUTPUT
|
||||
echo "No build required: Version unchanged"
|
||||
# Schedule trigger: no new version
|
||||
echo "should_build=false" >> "${GITHUB_OUTPUT}"
|
||||
echo "No build required: Version ${CURRENT_VERSION} is current"
|
||||
fi
|
||||
|
||||
update-version:
|
||||
needs: [check-version]
|
||||
if: needs.check-version.outputs.should_build == 'true' && needs.check-version.outputs.current_version != needs.check-version.outputs.latest_version
|
||||
needs: check-version
|
||||
# Only update version during scheduled runs when new version is available
|
||||
if: ${{ needs.check-version.outputs.should_build == 'true' && needs.check-version.outputs.is_push_trigger == 'false' && needs.check-version.outputs.current_version != needs.check-version.outputs.latest_version }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -75,10 +92,10 @@ jobs:
|
||||
LATEST_VERSION="${{ needs.check-version.outputs.latest_version }}"
|
||||
CURRENT_VERSION="${{ needs.check-version.outputs.current_version }}"
|
||||
|
||||
echo "Updating APKBUILD from $CURRENT_VERSION to $LATEST_VERSION"
|
||||
echo "Updating APKBUILD from ${CURRENT_VERSION} to ${LATEST_VERSION}"
|
||||
|
||||
# Update pkgver
|
||||
sed -i "s/^pkgver=.*/pkgver=$LATEST_VERSION/" zabbix-apk-builder/APKBUILD
|
||||
sed -i "s/^pkgver=.*/pkgver=${LATEST_VERSION}/" zabbix-apk-builder/APKBUILD
|
||||
|
||||
# Reset pkgrel to 0 for new version
|
||||
sed -i "s/^pkgrel=.*/pkgrel=0/" zabbix-apk-builder/APKBUILD
|
||||
@@ -86,23 +103,49 @@ jobs:
|
||||
# Clear checksums (will be regenerated during build)
|
||||
sed -i 's/^sha512sums=.*/sha512sums="SKIP"/' zabbix-apk-builder/APKBUILD
|
||||
|
||||
# Commit changes
|
||||
# Commit changes with [ci skip] to prevent recursive triggers
|
||||
git config --local user.email "action@gitea.com"
|
||||
git config --local user.name "Gitea Action"
|
||||
git add zabbix-apk-builder/APKBUILD
|
||||
git commit -m "CHANGE: Update Zabbix to version $LATEST_VERSION [ci skip]" || exit 0
|
||||
git commit -m "AUTO: Update Zabbix to version ${LATEST_VERSION} [ci skip]" || exit 0
|
||||
git push
|
||||
|
||||
build-packages:
|
||||
needs: [update-version]
|
||||
if: needs.check-version.outputs.should_build == 'true'
|
||||
# Build packages after version update (for scheduled runs) or immediately (for push runs)
|
||||
needs: [check-version, update-version]
|
||||
# Run if should_build=true AND either update-version ran successfully OR it was skipped due to push trigger
|
||||
if: ${{ needs.check-version.outputs.should_build == 'true' && (success() || needs.check-version.outputs.is_push_trigger == 'true') }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ gitea.head_ref }}
|
||||
# Use token to ensure we get the latest version if it was updated
|
||||
token: ${{ secrets.ACCESS_TOKEN }}
|
||||
ref: ${{ gitea.ref }}
|
||||
|
||||
- name: Pull latest changes if version was updated
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
# Pull any version updates that may have been committed
|
||||
if [[ "${{ needs.check-version.outputs.is_push_trigger }}" == "false" ]]; then
|
||||
echo "Scheduled build - pulling latest changes"
|
||||
git pull origin "${GITEA_REF_NAME:-main}" || true
|
||||
else
|
||||
echo "Push build - using current ref"
|
||||
fi
|
||||
|
||||
- name: Verify build environment
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
echo "=== Build Environment ==="
|
||||
echo "Trigger type: ${{ gitea.event_name }}"
|
||||
echo "Current branch: $(git branch --show-current)"
|
||||
echo "APKBUILD version: $(grep '^pkgver=' zabbix-apk-builder/APKBUILD | cut -d'=' -f2)"
|
||||
echo "Target version: ${{ needs.check-version.outputs.latest_version }}"
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
@@ -119,11 +162,15 @@ jobs:
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
echo "Built packages:"
|
||||
ls -la zabbix-apk-builder/packages/
|
||||
|
||||
echo "Package sizes:"
|
||||
du -h zabbix-apk-builder/packages/*.apk || echo "No packages found"
|
||||
echo "=== Built packages ==="
|
||||
if [[ -d "zabbix-apk-builder/packages" ]]; then
|
||||
ls -la zabbix-apk-builder/packages/
|
||||
echo "=== Package sizes ==="
|
||||
find zabbix-apk-builder/packages/ -name "*.apk" -exec du -h {} \;
|
||||
else
|
||||
echo "ERROR: No packages directory found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Upload packages as artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
@@ -133,8 +180,8 @@ jobs:
|
||||
retention-days: 30
|
||||
|
||||
deploy-test:
|
||||
needs: [build-packages]
|
||||
if: needs.check-version.outputs.should_build == 'true' && gitea.ref == 'refs/heads/test'
|
||||
needs: [check-version, build-packages]
|
||||
if: ${{ needs.check-version.outputs.should_build == 'true' && contains(gitea.ref, 'test') }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -148,20 +195,36 @@ jobs:
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
echo "Testing package installation..."
|
||||
echo "=== Testing package installation ==="
|
||||
|
||||
# Verify packages were downloaded
|
||||
if [[ ! -d "packages" ]] || [[ -z "$(ls -A packages/ 2>/dev/null)" ]]; then
|
||||
echo "ERROR: No packages found for testing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 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
|
||||
" || echo "Agent test failed"
|
||||
if ls packages/zabbix-agent-*.apk >/dev/null 2>&1; then
|
||||
echo "Testing 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
|
||||
" && echo "✅ Agent test passed" || echo "❌ Agent test failed"
|
||||
else
|
||||
echo "⚠️ No agent package found"
|
||||
fi
|
||||
|
||||
# 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 "Proxy test failed"
|
||||
if ls packages/zabbix-proxy-*.apk >/dev/null 2>&1; then
|
||||
echo "Testing 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 "✅ Proxy test passed" || echo "❌ Proxy test failed"
|
||||
else
|
||||
echo "⚠️ No proxy package found"
|
||||
fi
|
||||
|
||||
echo "✅ Package deployment test completed"
|
||||
Reference in New Issue
Block a user