Skip to content

ci(misc): restore main push workflow #18

ci(misc): restore main push workflow

ci(misc): restore main push workflow #18

Workflow file for this run

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 == '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 == '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/**/*
- 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
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: 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)) }}
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
- name: Prepare files for s3
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }}
env:
REF: ${{ github.ref_name }}
run: |
mkdir ${REF##*-}
mv ${{ matrix.app }}-linux-amd64 ${REF##*-}/${{ matrix.app }}-linux-amd64
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }}
with:
aws-access-key-id: ${{ secrets.S3_UPLOAD_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_UPLOAD_SECRET_KEY }}
aws-region: us-west-2
- name: Upload to s3
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }}
env:
REF: ${{ github.ref_name }}
run: aws s3 sync ${REF##*-} s3://${{ secrets.S3_BUCKET_NAME }}/tauri-${{ matrix.app }}/${REF##*-}
build-windows:
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci ready') || (github.event_name == 'release' || 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 }}/**/*
ethos-core/**/*
- 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: 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)) }}
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
- 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
- name: Prepare files for s3
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }}
env:
REF: ${{ github.ref_name }}
run: |
ls -l target/release
$tag = $($env:REF -split "-")[-1]
mkdir $tag
mv ${{ matrix.app }}.exe $tag/${{ matrix.app }}.exe
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }}
with:
aws-access-key-id: ${{ secrets.S3_UPLOAD_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_UPLOAD_SECRET_KEY }}
aws-region: us-west-2
- name: Upload to s3
if: ${{ startsWith(github.ref, format('refs/tags/{0}', matrix.app)) }}
env:
REF: ${{ github.ref_name }}
run: |
$tag = $($env:REF -split "-")[-1]
aws s3 sync $tag s3://${{ secrets.S3_BUCKET_NAME }}/tauri-${{ matrix.app }}/$tag