MAX: Adding documentation/signature for all main source files #11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Cyrus RPM | |
| on: | |
| push: | |
| branches: ["**"] | |
| tags: | |
| - "v*" | |
| pull_request: | |
| branches: ["**"] | |
| workflow_dispatch: {} | |
| permissions: | |
| contents: write | |
| jobs: | |
| build-linux-rpm: | |
| runs-on: ubuntu-latest | |
| container: opensuse/tumbleweed | |
| steps: | |
| - name: Install build tools | |
| run: | | |
| zypper --non-interactive refresh | |
| zypper --non-interactive install rpm-build rpmdevtools make gcc rust cargo rsync \ | |
| libffi-devel libxml2-devel llvm18 libLLVM18 llvm18-devel clang18 clang18-devel zip upx libasan8 | |
| - name: Checkout source | |
| uses: actions/checkout@v4 | |
| - name: Extract version from Cargo.toml | |
| run: | | |
| CYRUS_VERSION=$(cd ./crates/cyrusc_cli && sed -n 's/^version\s*=\s*"\(.*\)"/\1/p' Cargo.toml | head -n1) | |
| echo "CYRUS_VERSION=$CYRUS_VERSION" >> $GITHUB_ENV | |
| - name: Set up RPM build environment | |
| run: | | |
| rpmdev-setuptree | |
| mkdir -p ~/rpmbuild/SOURCES | |
| sed -i "1i %global cyrus_version $CYRUS_VERSION" .github/workflows/cyrus.spec | |
| mkdir cyrus-$CYRUS_VERSION | |
| rsync -a --exclude '.git' ./ cyrus-$CYRUS_VERSION/ | |
| tar czf ~/rpmbuild/SOURCES/cyrus-$CYRUS_VERSION.tar.gz cyrus-$CYRUS_VERSION | |
| cp .github/workflows/cyrus.spec ~/rpmbuild/SPECS/ | |
| - name: Build RPM | |
| run: | | |
| cd ~/rpmbuild/SPECS | |
| rpmbuild -ba cyrus.spec | |
| - name: Zip RPM artifacts | |
| run: | | |
| mkdir -p release-files | |
| cp ~/rpmbuild/RPMS/**/*.rpm release-files/ | |
| cp ~/rpmbuild/SPECS/cyrus.spec release-files/ | |
| cd release-files | |
| zip -r -9 cyrus-rpm.zip . | |
| cd .. | |
| - name: Upload as artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cyrus-opensuse-rpm | |
| path: ./release-files/cyrus-rpm.zip | |
| release: | |
| needs: build-linux-rpm | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: cyrus-opensuse-rpm | |
| path: ./release-files | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: ./release-files/cyrus-rpm.zip | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |