Add cargo generate-rpm configuration #556
Workflow file for this run
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: floki-ci | |
| on: | |
| push: | |
| tags: | |
| # Full version | |
| - "[0-9]+.[0-9]+.[0-9]+" | |
| # Prerelease version | |
| - "[0-9]+.[0-9]+.[0-9]+-*" | |
| pull_request: | |
| branches: | |
| # Trigger on pull requests into main | |
| - main | |
| types: [ opened, synchronize ] | |
| jobs: | |
| lint: | |
| name: Linting and Formatting | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| - name: Run cargo clippy to pick up any errors | |
| run: cargo clippy --all-targets -- -Dwarnings | |
| - name: Check code is formatted | |
| run: cargo fmt -- --check | |
| build: | |
| name: Build static binary for publishing | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.experimental }} | |
| strategy: | |
| matrix: | |
| os: | |
| - ubuntu-24.04 | |
| - macos-latest | |
| rust: | |
| - stable | |
| - beta | |
| experimental: [false] | |
| include: | |
| - os: ubuntu-24.04 | |
| rust: nightly | |
| experimental: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.rust }} | |
| - name: Install cargo-get | |
| run: cargo install cargo-get | |
| - name: Run tests | |
| run: cargo test --all-features | |
| - run: "./build.sh" | |
| env: | |
| OS_NAME: ${{ matrix.os }} | |
| - name: Archive artifacts | |
| uses: actions/upload-artifact@v4 | |
| if: ${{ matrix.rust == 'stable' }} | |
| with: | |
| name: stableartifacts-${{ matrix.os }} | |
| path: | | |
| floki*.zip | |
| floki*.tar.gz | |
| rpm: | |
| name: Build and test RPM using cargo generate-rpm | |
| runs-on: ubuntu-24.04 | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| - name: Install cargo-generate-rpm | |
| run: cargo install cargo-generate-rpm | |
| # Download the ubuntu artifact instead of rebuilding. | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: stableartifacts-ubuntu-24.04 | |
| - name: Build RPM | |
| run: | | |
| tar -xzvf floki*.tar.gz | |
| mkdir -p target/release | |
| cp floki target/release/floki | |
| cargo generate-rpm | |
| - name: Install RPM | |
| run: find . -name "floki*.rpm" | xargs rpm -ivh | |
| - name: Test installation | |
| run: floki -V | |
| - name: Archive artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: rpm | |
| path: | | |
| target/generate-rpm/floki*.rpm | |
| publish: | |
| name: Publish release artifact | |
| runs-on: ubuntu-latest | |
| if: github.ref_type == 'tag' | |
| needs: | |
| - build | |
| - rpm | |
| # Required to publish a release | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| - name: Install cargo-get | |
| run: cargo install cargo-get | |
| - name: Publish to crates.io | |
| run: cargo publish | |
| env: | |
| CARGO_REGISTRY_TOKEN: ${{ secrets.PUBLISH_SECRET }} | |
| # After publishing, create a release | |
| - name: Download ubuntu artifacts | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: stableartifacts-ubuntu-24.04 | |
| - name: Download macos artifacts | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: stableartifacts-macos-latest | |
| - name: Download RPM | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: rpm | |
| - name: Generate release.txt | |
| run: "./changelog.sh" | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| body_path: release.txt | |
| files: | | |
| floki*.zip | |
| floki*.tar.gz | |
| floki*.rpm | |
| # # Announce the release | |
| # - run: "./announce.sh" | |
| # env: | |
| # ANNOUNCE_HOOK: ${{ secrets.ANNOUNCE_HOOK }} | |
| publish-dry-run: | |
| name: Dry-run publish for non-release artifact | |
| runs-on: ubuntu-latest | |
| if: github.ref_type != 'tag' | |
| needs: | |
| - build | |
| - rpm | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| - name: Install cargo-get | |
| run: cargo install cargo-get | |
| - name: Dry-run publish on non-tags | |
| run: cargo publish --dry-run | |
| # Test downloading the artifacts | |
| - name: Download ubuntu artifacts | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: stableartifacts-ubuntu-24.04 | |
| - name: Download macos artifacts | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: stableartifacts-macos-latest | |
| - name: Download rpm | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: rpm | |
| # Test generating release.txt | |
| - name: Generate release.txt | |
| run: "./changelog.sh" |