Skip to content

build(deps): bump sysinfo from 0.30.13 to 0.38.4 #78

build(deps): bump sysinfo from 0.30.13 to 0.38.4

build(deps): bump sysinfo from 0.30.13 to 0.38.4 #78

Workflow file for this run

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