build(deps): bump sysinfo from 0.30.13 to 0.38.4 #78
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: Production Build & Release | |
| on: | |
| push: | |
| branches: [ "master" ] | |
| tags: [ "v*" ] | |
| pull_request: | |
| branches: [ "master" ] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| NAME: contextd | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| permissions: | |
| contents: write | |
| jobs: | |
| test: | |
| name: Test & Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libudev-dev | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| - name: Rust Cache | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Check formatting | |
| run: cargo fmt -- --check | |
| - name: Clippy | |
| run: cargo clippy -- -D warnings | |
| - name: Run tests | |
| run: cargo test --verbose | |
| security_audit: | |
| name: Security Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions-rs/audit-check@v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| build: | |
| name: Package & Release | |
| needs: [test, security_audit] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libudev-dev rpm | |
| - name: Set Version | |
| id: vars | |
| run: | | |
| if [[ $GITHUB_REF == refs/tags/* ]]; then | |
| VERSION=${GITHUB_REF#refs/tags/} | |
| else | |
| VERSION="0.0.0-dev" | |
| fi | |
| echo "VERSION=$VERSION" >> $GITHUB_ENV | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Rust Cache | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build | |
| run: cargo build --release | |
| - name: Prepare Artifacts Directory | |
| run: mkdir -p dist | |
| - name: Build Portable Tarball | |
| run: | | |
| # Use the assembly script which bundles dependencies | |
| ./scripts/package-portable.sh build/portable target/release/contextd | |
| cd build | |
| tar -czvf ../dist/${{ env.NAME }}-${{ env.VERSION }}-x86_64-portable.tar.gz portable/ | |
| cd .. | |
| - name: Build DEB Package | |
| run: | | |
| # Update version in control file | |
| sed -i "s/^Version:.*/Version: ${VERSION#v}/" packaging/debian/control | |
| # Build structure for DEB | |
| mkdir -p build/deb/DEBIAN | |
| cp packaging/debian/control build/deb/DEBIAN/ | |
| cp packaging/debian/postinst build/deb/DEBIAN/ | |
| cp packaging/debian/prerm build/deb/DEBIAN/ | |
| chmod 755 build/deb/DEBIAN/postinst build/deb/DEBIAN/prerm | |
| # Use /opt tree for portable hybrid approach | |
| mkdir -p build/deb/opt/${{ env.NAME }}/usr/bin | |
| mkdir -p build/deb/opt/${{ env.NAME }}/usr/lib/systemd/system | |
| mkdir -p build/deb/opt/${{ env.NAME }}/{etc,home,sys,run,proc} | |
| cp target/release/${{ env.NAME }} build/deb/opt/${{ env.NAME }}/usr/bin/ | |
| cp packaging/contextd.service build/deb/opt/${{ env.NAME }}/usr/lib/systemd/system/ | |
| echo "ID=contextd" > build/deb/opt/${{ env.NAME }}/etc/os-release | |
| echo "NAME=\"Context Daemon Portable Root\"" >> build/deb/opt/${{ env.NAME }}/etc/os-release | |
| dpkg-deb --build build/deb dist/${{ env.NAME }}-${{ env.VERSION }}-amd64.deb | |
| - name: Build RPM Package | |
| run: | | |
| # Update version in spec file | |
| RAW_VER=${VERSION#v} | |
| # RPM Version cannot contain hyphens, replace with dots for pre-releases | |
| RPM_VER=$(echo $RAW_VER | tr '-' '.') | |
| sed -i "s/^Version:.*/Version: ${RPM_VER}/" packaging/rpm/contextd.spec | |
| mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} | |
| tar -czvf rpmbuild/SOURCES/${{ env.NAME }}-${RPM_VER}.tar.gz \ | |
| --exclude="./target" \ | |
| --exclude="./rpmbuild" \ | |
| --exclude="./dist" \ | |
| --exclude="./.git" \ | |
| --exclude="./.github" \ | |
| --transform "s|^\.|${{ env.NAME }}-${RPM_VER}|" . | |
| rpmbuild -ba packaging/rpm/contextd.spec --define "_topdir $(pwd)/rpmbuild" --nodeps | |
| cp rpmbuild/RPMS/x86_64/*.rpm dist/${{ env.NAME }}-${{ env.VERSION }}-x86_64.rpm | |
| - name: Upload Workspace Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: contextd-builds | |
| path: dist/* | |
| - name: Create Release | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| uses: softprops/action-gh-release@v3 | |
| with: | |
| files: | | |
| dist/${{ env.NAME }}-${{ env.VERSION }}-x86_64-portable.tar.gz | |
| dist/${{ env.NAME }}-${{ env.VERSION }}-amd64.deb | |
| dist/${{ env.NAME }}-${{ env.VERSION }}-x86_64.rpm | |
| generate_release_notes: true | |
| draft: false | |
| prerelease: false | |