diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..4beed15e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,38 @@ +name: Create Releases +on: + push: + # Eventually run this only on release branches + # branches: + # - 'releases/**' + +env: + CARGO_TERM_COLOR: always + CARGO_NET_GIT_FETCH_WITH_CLI: true + +jobs: + release-linux: + name: Release Linux + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libudev-dev libasound2-dev + + - name: Setup Rust toolchain + run: rustup show + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.1' + + - name: Build Linux tool and create deb + run: ./release/release.sh + + - name: Upload Linux deb + uses: actions/upload-artifact@v3 + with: + name: framework-inputmodule-rs-0.0.1.deb + path: release/framework-inputmodule-rs-0.0.1.deb diff --git a/release/framework-inputmodule-rs.service b/release/framework-inputmodule-rs.service new file mode 100644 index 00000000..14539e31 --- /dev/null +++ b/release/framework-inputmodule-rs.service @@ -0,0 +1,8 @@ +[Unit] +Description=framework-inputmodule-rs runs Framework Laptop 16 input modules and keeps their firmware up to date + +[Service] +ExecStart=/usr/bin/framework-inputmodule-rs led-matrix --clock + +[Install] +WantedBy=multi-user.target diff --git a/release/postinstall.sh b/release/postinstall.sh new file mode 100755 index 00000000..4df223d1 --- /dev/null +++ b/release/postinstall.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -u ./ledmatrix/50-framework.rules /etc/udev/rules.d/ diff --git a/release/release.sh b/release/release.sh new file mode 100755 index 00000000..9fa7bf84 --- /dev/null +++ b/release/release.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -euxo pipefail + +: 'Checking for fpm Ruby gem, installing if not present' +installed=`gem list -i fpm` || true + +if [ $installed = 'false' ]; then + gem install fpm +fi + +: 'Running the build' +cargo build --target x86_64-unknown-linux-gnu -p inputmodule-control + +: "Packaging" +fpm \ + -s dir -t deb \ + -p release/framework-inputmodule-rs-0.0.1.deb \ + --name framework-inputmodule-rs \ + --version 0.0.1 \ + --architecture all \ + --description "framework-inputmodule-rs runs Framework Laptop 16 input modules and keeps their firmware up to date" \ + --url "https://frame.work" \ + --maintainer "Framework <support@frame.work>" \ + --deb-systemd ./release/framework-inputmodule-rs.service \ + --deb-systemd-enable \ + --deb-systemd-auto-start \ + --deb-systemd-restart-after-upgrade \ + --after-install ./release/postinstall.sh \ + target/x86_64-unknown-linux-gnu/debug/inputmodule-control=/usr/bin/framework-inputmodule-rs + +: 'Packaging successful, install with "sudo dpkg -i <pkg-name>.deb"'