Skip to content

Merge develop into master: security fixes #23

Merge develop into master: security fixes

Merge develop into master: security fixes #23

Workflow file for this run

name: Build OpenKeyring CLI
on:
push:
branches: [ master, develop ]
tags: [ 'v*' ]
pull_request:
branches: [ master, develop ]
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
# Build for macOS
build-macos:
name: Build macOS (Universal)
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin,aarch64-apple-darwin
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Build for x86_64
run: |
cargo build --target x86_64-apple-darwin --release --verbose
- name: Build for aarch64
run: |
cargo build --target aarch64-apple-darwin --release --verbose
- name: Create universal binary
run: |
lipo -create \
target/x86_64-apple-darwin/release/ok \
target/aarch64-apple-darwin/release/ok \
-output target/universal-apple-darwin-release/ok
chmod +x target/universal-apple-darwin-release/ok
- name: Strip binary
run: strip -x target/universal-apple-darwin-release/ok
- name: Upload macOS universal binary
uses: actions/upload-artifact@v4
with:
name: ok-macos-universal
path: target/universal-apple-darwin-release/ok
- name: Create archive
if: startsWith(github.ref, 'refs/tags/v')
run: |
cd target/universal-apple-darwin-release
tar czf ok-macos-universal.tar.gz ok
mv ok-macos-universal.tar.gz ../../../
- name: Upload release asset
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
with:
files: ok-macos-universal.tar.gz
generate_release_notes: true
# Build for Linux
build-linux:
name: Build Linux (x86_64)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libssl-dev
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: |
cargo build --release --verbose
- name: Strip binary
run: strip target/release/ok
- name: Upload Linux binary
uses: actions/upload-artifact@v4
with:
name: ok-linux-x86_64
path: target/release/ok
- name: Create archive
if: startsWith(github.ref, 'refs/tags/v')
run: |
cd target/release
tar czf ok-linux-x86_64.tar.gz ok
mv ok-linux-x86_64.tar.gz ../../../
- name: Upload release asset
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
with:
files: ok-linux-x86_64.tar.gz
generate_release_notes: true
# Build for Linux ARM64
build-linux-arm64:
name: Build Linux (ARM64)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-unknown-linux-gnu
- name: Install cross compiler
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-arm64-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: |
CC=aarch64-linux-gnu-gcc \
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
cargo build --target aarch64-unknown-linux-gnu --release --verbose
- name: Strip binary
run: aarch64-linux-gnu-strip target/aarch64-unknown-linux-gnu/release/ok
- name: Upload Linux ARM64 binary
uses: actions/upload-artifact@v4
with:
name: ok-linux-aarch64
path: target/aarch64-unknown-linux-gnu/release/ok
- name: Create archive
if: startsWith(github.ref, 'refs/tags/v')
run: |
cd target/aarch64-unknown-linux-gnu/release
tar czf ok-linux-aarch64.tar.gz ok
mv ok-linux-aarch64.tar.gz ../../../
- name: Upload release asset
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
with:
files: ok-linux-aarch64.tar.gz
generate_release_notes: true
# Build for Windows
build-windows:
name: Build Windows (x86_64)
runs-on: windows-latest
defaults:
run:
shell: pwsh
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: |
cargo build --release --verbose
- name: Upload Windows binary
uses: actions/upload-artifact@v4
with:
name: ok-windows-x86_64
path: target/release/ok.exe
- name: Create archive
if: startsWith(github.ref, 'refs/tags/v')
run: |
Compress-Archive -Path target\release\ok.exe -DestinationPath ok-windows-x86_64.zip
- name: Upload release asset
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
with:
files: ok-windows-x86_64.zip
generate_release_notes: true
# Build for Windows ARM64
build-windows-arm64:
name: Build Windows (ARM64)
runs-on: windows-latest
defaults:
run:
shell: pwsh
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-pc-windows-msvc
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-arm64-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: |
cargo build --target aarch64-pc-windows-msvc --release --verbose
- name: Upload Windows ARM64 binary
uses: actions/upload-artifact@v4
with:
name: ok-windows-aarch64
path: target/aarch64-pc-windows-msvc/release/ok.exe
- name: Create archive
if: startsWith(github.ref, 'refs/tags/v')
run: |
Compress-Archive -Path target\aarch64-pc-windows-msvc\release\ok.exe -DestinationPath ok-windows-aarch64.zip
- name: Upload release asset
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
with:
files: ok-windows-aarch64.zip
generate_release_notes: true
# Run tests
test:
name: Run Tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
rust: [stable]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libssl-dev
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-test-${{ hashFiles('**/Cargo.lock') }}
- name: Run tests
run: |
cargo test --verbose --all-features
- name: Run clippy
run: |
cargo clippy -- -D warnings
- name: Check formatting
run: |
cargo fmt -- --check