automated: version 4.9.7 #1401
This file contains 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: Rust | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
types: ["labeled", "opened", "reopened", "synchronize"] | |
release: | |
types: ["published"] | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
frontend-checks: | |
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci ready') || (github.event_name == 'release' || github.event_name == 'workflow_dispatch') || github.event_name == 'push' }} | |
strategy: | |
matrix: | |
app: ["core/ui", "friendshipper", "birdie"] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Check out | |
uses: actions/checkout@v4 | |
- name: Check if files have changed | |
uses: tj-actions/changed-files@v42 | |
id: changes | |
with: | |
files: | | |
${{ matrix.app }}/src/**/* | |
- name: Package "core-ui" if needed | |
if: ${{ matrix.app != 'core/ui' && (steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app))) }} | |
run: | | |
cd core/ui | |
yarn | |
yarn package | |
- name: Lint ${{ matrix.app }} | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cd ${{ matrix.app }} | |
yarn | |
yarn lint | |
build-linux: | |
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci ready') || (github.event_name == 'release' || github.event_name == 'workflow_dispatch') || github.event_name == 'push' }} | |
runs-on: | |
group: ethos-linux | |
strategy: | |
matrix: | |
app: [friendshipper, birdie] | |
permissions: | |
contents: write | |
steps: | |
- name: Check out | |
uses: actions/checkout@v4 | |
- name: Check if files have changed | |
uses: tj-actions/changed-files@v42 | |
id: changes | |
with: | |
files: | | |
${{ matrix.app }}/**/* | |
core/**/* | |
Cargo.lock | |
- name: Install ubuntu dependencies | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
libwebkit2gtk-4.0-dev \ | |
build-essential \ | |
curl \ | |
wget \ | |
file \ | |
libssl-dev \ | |
libgtk-3-dev \ | |
libayatana-appindicator3-dev \ | |
librsvg2-dev | |
- name: set up rust toolchain | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: set up Node | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: "yarn" | |
cache-dependency-path: "${{ matrix.app }}/yarn.lock" | |
- name: Check format and linting | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
mkdir -p ${{ matrix.app }}/build | |
cargo fmt -p ethos-core -- --check | |
cargo fmt -p ${{ matrix.app }} -- --check | |
cargo clippy --all-features -p ethos-core -- -D warnings | |
cargo clippy --all-features -p ${{ matrix.app }} -- -D warnings | |
- name: Run unit tests | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cargo test --verbose --release -p ethos-core | |
cargo test --verbose --release --bin ${{ matrix.app }} | |
- name: Build core ui | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cd core/ui | |
yarn | |
yarn package | |
- name: Build | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
env: | |
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
run: | | |
cd ${{ matrix.app }} | |
yarn | |
yarn tauri:build | |
- name: Rename | |
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
ls -ltr target/release | |
mv target/release/${{ matrix.app }} ${{ matrix.app }}-linux-amd64 | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
with: | |
files: | | |
${{ matrix.app }}-linux-amd64 | |
build-windows: | |
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci ready') || (github.event_name == 'release' || github.event_name == 'workflow_dispatch') || github.event_name == 'push' }} | |
runs-on: | |
group: ethos-windows | |
strategy: | |
matrix: | |
app: [friendshipper, birdie] | |
permissions: | |
contents: write | |
steps: | |
- name: Check out | |
uses: actions/checkout@v3 | |
- name: Check if files have changed | |
uses: tj-actions/changed-files@v42 | |
id: changes | |
with: | |
files: | | |
${{ matrix.app }}/**/* | |
core/**/* | |
Cargo.lock | |
- name: set up rust toolchain | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: set up Node | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: "yarn" | |
cache-dependency-path: "${{ matrix.app }}/yarn.lock" | |
- name: Check format and linting | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
mkdir -p ${{ matrix.app }}/build | |
cargo fmt -p ethos-core -- --check | |
cargo fmt -p ${{ matrix.app }} -- --check | |
cargo clippy --all-features -p ethos-core -- -D warnings | |
cargo clippy --all-features -p ${{ matrix.app }} -- -D warnings | |
- name: Run unit tests | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cargo test --verbose --release -p ethos-core | |
cargo test --verbose --release --bin ${{ matrix.app }} | |
- name: Build core ui | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cd core/ui | |
yarn | |
yarn package | |
- name: Build | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
env: | |
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
run: | | |
cd ${{ matrix.app }} | |
yarn | |
yarn tauri:build | |
- name: Rename | |
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
dir target/release | |
mv target/release/${{ matrix.app }}.exe ${{ matrix.app }}.exe | |
mv target/release/bundle/msi/*.msi . | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
env: | |
REF: ${{ github.ref_name }} | |
with: | |
files: | | |
${{ matrix.app }}.exe | |
build-f11r-server: | |
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci ready') || (github.event_name == 'release' || github.event_name == 'workflow_dispatch') || github.event_name == 'push' }} | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: believer-oss/f11r-server | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
steps: | |
- name: Check out | |
uses: actions/checkout@v4 | |
- name: Check if files have changed | |
uses: tj-actions/changed-files@v42 | |
id: changes | |
with: | |
files: | | |
friendshipper/server/**/* | |
- name: set up rust toolchain | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Check format and linting | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cargo fmt -p friendshipper-server -- --check | |
cargo clippy --all-features -p friendshipper-server -- -D warnings | |
- name: Run unit tests | |
if: ${{ steps.changes.outputs.any_changed == 'true' || startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }} | |
run: | | |
cargo test --verbose --release -p friendshipper-server |