Skip to content

chore: bump version

chore: bump version #1

Workflow file for this run

name: Build Release
on:
# This will trigger when a tag like v1.0.0 is pushed
# will create a release
push:
tags:
- "v*.*.*"
# Manual trigger for creating an artifact (button in the UI)
workflow_dispatch:
permissions:
packages: write
contents: write
jobs:
build-linux:
name: Build Linux targets
runs-on: ubuntu-latest
strategy:
matrix:
include:
- target: x86_64-unknown-linux-musl
os_name: linux-musl
arch: x86_64
filename: pocket-relay-x86_64-linux-musl
- target: x86_64-unknown-linux-gnu
os_name: linux-gnu
arch: x86_64
filename: pocket-relay-x86_64-linux-gnu
- target: aarch64-unknown-linux-musl
os_name: linux-musl
arch: aarch64
filename: pocket-relay-aarch64-linux-musl
- target: aarch64-unknown-linux-gnu
os_name: linux-gnu
arch: aarch64
filename: pocket-relay-aarch64-linux-gnu
steps:
# Checkout the repo for building
- uses: actions/checkout@v4
# Setup rust for building the service
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: ${{ matrix.target }}
override: true
# Cache Rust dependencies and build artifacts
- name: Cache Rust dependencies
id: cache-rust
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.target }}-cargo-
# Install cross for cross compiling
- name: Install cross
if: steps.cache-rust.outputs.cache-hit != 'true'
run: cargo install cross
# Cross compile the binary
- name: Build with ${{ matrix.target }}
run: cross build --release --target ${{ matrix.target }} -p pocket-relay
# Copy built binary to output directory
- name: Copy binary to output
run: cp target/${{ matrix.target }}/release/pocket-relay ${{ matrix.filename }}
shell: bash
# Upload the built artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.filename }}
path: ${{ matrix.filename }}
build-windows:
name: Build Windows targets
runs-on: windows-latest
strategy:
matrix:
include:
- target: x86_64-pc-windows-gnu
os_name: windows-gnu
arch: x86_64
filename: pocket-relay-x86_64-windows-gnu.exe
- target: x86_64-pc-windows-msvc
os_name: windows-msvc
arch: x86_64
filename: pocket-relay-x86_64-windows-msvc.exe
steps:
# Checkout the repo for building
- uses: actions/checkout@v4
# Setup rust for building the service
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
# Cache Rust dependencies and build artifacts
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.target }}-cargo-
# Cross compile the binary
- name: Build
run: cargo build --release --target ${{ matrix.target }} -p pocket-relay
# Copy built binary to output directory
- name: Rename and move output binary
run: cp target/${{ matrix.target }}/release/pocket-relay.exe ${{ matrix.filename }}
shell: bash
# Prepare signing certificate
- name: Decode and save certificate
run: echo "${{ secrets.SIGNING_CERT_BASE64 }}" | base64 -d > cert.pfx
shell: bash
# Sign binary
- name: Sign binary
run: signtool sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /f cert.pfx /p "${{ secrets.SIGNING_CERT_PASSWORD }}" ${{ matrix.filename }}
shell: bash
# Upload the built artifact
- name: Upload binary artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.filename }}
path: ${{ matrix.filename }}
release:
name: Create Release
runs-on: ubuntu-latest
needs: [build-linux, build-windows]
steps:
# Checkout the repo
- uses: actions/checkout@v4
# Download all the compiled artifacts from previous
# steps
- name: Download all build artifacts
uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
# Create the github release if we pushed up a new tag
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
if: github.event_name == 'push'
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
draft: true
files: dist/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}