name: Build RPMs on: push: paths: - "**.spec" workflow_dispatch: jobs: build: runs-on: almalinux-10 strategy: fail-fast: false matrix: spec: - sonic-interface-libraries.spec - sonic-win.spec - sonic-workspace.spec steps: - name: Checkout uses: actions/checkout@v4 - name: Install build tools run: | dnf install -y \ rpm-build \ rpmdevtools \ mock \ curl - name: Add runner user to mock group run: usermod -aG mock $(whoami) || true - name: Setup RPM build tree run: rpmdev-setuptree - name: Download sources for ${{ matrix.spec }} run: | spectool -g -C ~/rpmbuild/SOURCES/ ${{ matrix.spec }} - name: Build SRPM from ${{ matrix.spec }} run: | rpmbuild -bs \ --define "_topdir ${HOME}/rpmbuild" \ --define "_disable_source_fetch 0" \ ${{ matrix.spec }} - name: Build RPM with mock run: | SRPM=$(find "${HOME}/rpmbuild/SRPMS" -name "*.src.rpm" | head -1) mock \ --root almalinux-10-x86_64 \ --resultdir "${HOME}/mock-results" \ --rebuild "$SRPM" - name: Upload RPMs to Forgejo Package Registry run: | FORGEJO_URL="${{ github.server_url }}" OWNER="${{ github.repository_owner }}" TOKEN="${{ secrets.PACKAGE_TOKEN }}" find "${HOME}/mock-results" -name "*.rpm" ! -name "*.src.rpm" | while read rpm; do FILENAME=$(basename "$rpm") echo "Uploading $FILENAME ..." curl --fail-with-body \ --user "${OWNER}:${TOKEN}" \ --upload-file "$rpm" \ "${FORGEJO_URL}/api/packages/${OWNER}/rpm/upload" done