Skip to content

feedback

feedback #3107

Workflow file for this run

on: [push]
name: 🐂 Continuous integration
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install system dependencies
run: |
sudo apt-get update \
&& sudo apt-get install -y \
libdbus-1-dev libssl-dev \
clang libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libavutil-dev pkg-config \
ruby ruby-dev rubygems build-essential
# - name: Install imagemagick
# run: |
# export MAGICK_VERSION=7.1 \
# && curl https://imagemagick.org/archive/ImageMagick.tar.gz | tar xz \
# && cd ImageMagick-${MAGICK_VERSION}* \
# && ./configure --with-magick-plus-plus=no --with-perl=no \
# && make \
# && sudo make install \
# && cd .. \
# && rm -r ImageMagick-${MAGICK_VERSION}*
- name: Cache Rust dependencies
uses: actions/cache@v3
with:
path: target
key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.OS }}-build-
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: check
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install system dependencies
run: |
sudo apt-get update \
&& sudo apt-get install -y \
libdbus-1-dev libssl-dev \
clang libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libavutil-dev pkg-config \
ruby ruby-dev rubygems build-essential
# - name: Install imagemagick
# run: |
# export MAGICK_VERSION=7.1 \
# && curl https://imagemagick.org/archive/ImageMagick.tar.gz | tar xz \
# && cd ImageMagick-${MAGICK_VERSION}* \
# && ./configure --with-magick-plus-plus=no --with-perl=no \
# && make \
# && sudo make install \
# && cd .. \
# && rm -r ImageMagick-${MAGICK_VERSION}*
- name: Cache Rust dependencies
uses: actions/cache@v3
with:
path: target
key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.OS }}-build-
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install system dependencies
run: |
sudo apt-get update \
&& sudo apt-get install -y \
libdbus-1-dev libssl-dev \
clang libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libavutil-dev pkg-config \
ruby ruby-dev rubygems build-essential
# - name: Install imagemagick
# run: |
# export MAGICK_VERSION=7.1 \
# && curl https://imagemagick.org/archive/ImageMagick.tar.gz | tar xz \
# && cd ImageMagick-${MAGICK_VERSION}* \
# && ./configure --with-magick-plus-plus=no --with-perl=no \
# && make \
# && sudo make install \
# && cd .. \
# && rm -r ImageMagick-${MAGICK_VERSION}*
- name: Cache Rust dependencies
uses: actions/cache@v3
with:
path: target
key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.OS }}-build-
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add clippy
- uses: actions-rs/cargo@v1
with:
command: clippy
args: --no-deps -- -D warnings
test_macos:
name: Test Suite MacOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
brew update
brew install pkg-config || brew upgrade pkg-config
brew install ffmpeg imagemagick
# https://youtrack.jetbrains.com/issue/RUST-12079/Failure-to-show-stack-trace-when-running-cargo-tests
# - name: Install LLVM Linker
# run: |
# brew install llvm
# echo '[target.aarch64-apple-darwin]' >> ~/.cargo/config
# echo 'rustflags = ["-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld"]' >> ~/.cargo/config
- name: Install and start Redis
run: |
brew install redis
brew services start redis
- name: Cache Rust dependencies
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
target: x86_64-apple-darwin
default: true
profile: minimal
toolchain: stable
override: true
- name: Run Tests
run: |
cargo build
mkdir /tmp/oxen_sync/
mkdir data/test/runs
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
cp user_config.toml data/test/config/user_config.toml
./target/debug/oxen-server start &
cargo test -- --test-threads=3
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: oxen-binary
path: target/debug/oxen*
test_windows:
name: Test Suite Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true
- name: Run Tests
run: |
cargo build
mkdir .\data\test\runs
.\target\debug\oxen-server add-user --email [email protected] --name Ox --output user_config.toml
cp user_config.toml data\test\config\user_config.toml
cmd /c "START /B .\target\debug\oxen-server.exe start"
cargo test -- --test-threads=1
rspec_tests:
name: RSpec CLI Tests
needs: [test_macos]
runs-on: macos-latest
env:
OXEN_API_KEY: ${{ secrets.DEV_OXEN_API_KEY }}
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew update
brew install pkg-config || brew upgrade pkg-config
brew install ffmpeg imagemagick ruby
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: oxen-binary
path: target/debug
- name: Make binary executable
run: |
chmod +x target/debug/oxen
ls -la target/debug/oxen
file target/debug/oxen
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
bundler-cache: true
- name: Install Ruby dependencies
working-directory: ./cli-test
run: |
bundle config path vendor/bundle
bundle install
- name: Run RSpec tests
env:
PATH: ${{ env.PATH }}:${{ github.workspace }}/target/debug
working-directory: ./cli-test
run: |
bundle exec rspec spec/test_cases/**/tests.rb