Skip to content
This repository has been archived by the owner on Sep 21, 2024. It is now read-only.

feat: Periodic syndication checks to IPFS Kubo #1818

feat: Periodic syndication checks to IPFS Kubo

feat: Periodic syndication checks to IPFS Kubo #1818

Workflow file for this run

on:
workflow_dispatch:
push:
branches: [main]
pull_request:
name: Run test suite
jobs:
build-noosphere-apple-artifacts:
name: 'Build Noosphere artifacts (Apple)'
uses: ./.github/workflows/noosphere_apple_build.yaml
with:
for-test: true
run-test-suite-mac-os-swift:
runs-on: macos-12
needs: ['build-noosphere-apple-artifacts']
steps:
- uses: actions/checkout@v3
- name: 'Download XCode Framework artifact'
uses: actions/download-artifact@v3
with:
name: libnoosphere_apple_framework
- name: 'Run Swift tests'
run: |
unzip ./libnoosphere-apple-xcframework.zip
sed -i '' -e "s#url: \"[^\"]*\",#path: \"./LibNoosphere.xcframework\"),#" ./Package.swift
sed -i '' -e "s#checksum: \"[^\"]*\"),##" ./Package.swift
# Enable malloc debugging features
# https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/MallocDebug.html
export MallocPreScribble=1
export MallocScribble=1
swift build --sanitize=address
swift test --sanitize=address
run-linting-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
rustup component add clippy
rustup component add rustfmt
- name: 'Install environment packages'
run: |
sudo apt-get update -qqy
sudo apt-get install jq protobuf-compiler cmake
- name: 'Check Format'
run: cargo fmt --all -- --check
- name: 'Run Linter'
run: cargo clippy --all -- -D warnings
run-test-suite-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
- name: 'Install environment packages'
run: |
choco install -y cmake protoc openssl
shell: sh
- name: Install cargo-binstall
uses: cargo-bins/[email protected]
- name: Install binaries from cargo
run: |
cargo binstall cargo-nextest --no-confirm
- name: 'Install IPFS Kubo'
uses: ibnesayeed/setup-ipfs@master
with:
ipfs_version: v0.17.0
run_daemon: true
- name: 'Run Rust native target tests'
run: cargo nextest run --features test-kubo,headers --retries 5 --color always 2>&1 | tee test-results.log
env:
NOOSPHERE_LOG: academic
run-test-suite-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
- name: 'Install environment packages'
run: |
sudo apt-get update -qqy
sudo apt-get install jq protobuf-compiler cmake
- name: Install cargo-binstall
uses: cargo-bins/[email protected]
- name: Install binaries from cargo
run: |
cargo binstall cargo-nextest --no-confirm --force
- name: 'Install IPFS Kubo'
uses: ibnesayeed/setup-ipfs@master
with:
ipfs_version: v0.17.0
run_daemon: true
- name: 'Run Rust native target tests'
run: cargo nextest run --features test-kubo,headers --retries 5 --color always 2>&1 | tee test-results.log
env:
NOOSPHERE_LOG: academic
- uses: actions/upload-artifact@v3
with:
name: test-results-linux
path: ./test-results.log
report-test-flakes:
name: 'Report test flakes (Linux)'
needs: ['run-test-suite-linux']
uses: ./.github/workflows/report_test_flakes.yaml
secrets: inherit
with:
target: 'linux'
run-test-suite-linux-rocksdb:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
- name: 'Install environment packages'
run: |
sudo apt-get update -qqy
sudo apt-get install jq protobuf-compiler cmake libclang-dev
- name: Install cargo-binstall
uses: cargo-bins/[email protected]
- name: Install binaries from cargo
run: |
cargo binstall cargo-nextest --no-confirm
- name: 'Install IPFS Kubo'
uses: ibnesayeed/setup-ipfs@master
with:
ipfs_version: v0.17.0
run_daemon: true
- name: 'Run Rust native target tests (RocksDB)'
run: cargo nextest run --features rocksdb,test-kubo,headers --retries 5 --color always
env:
NOOSPHERE_LOG: academic
run-test-suite-linux-c:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
- name: 'Install environment packages'
run: |
sudo apt-get update -qqy
sudo apt-get install jq protobuf-compiler cmake make
- name: 'Link Noosphere from C'
run: |
make build -C ./c/example
- name: 'Run C integration tests'
run: |
make run -C ./c/example
run-test-suite-web-wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
rustup component add clippy
rustup component add rustfmt
- name: 'Install environment packages'
run: |
sudo apt-get update -qqy
sudo apt-get install jq protobuf-compiler cmake
- name: 'Install Rust/WASM test dependencies'
run: |
rustup target install wasm32-unknown-unknown
cargo install toml-cli
WASM_BINDGEN_VERSION=`toml get ./Cargo.lock . | jq '.package | map(select(.name == "wasm-bindgen"))[0].version' | xargs echo`
cargo install wasm-bindgen-cli --vers "$WASM_BINDGEN_VERSION"
shell: bash
# See: https://github.com/SeleniumHQ/selenium/blob/5d108f9a679634af0bbc387e7e3811bc1565912b/.github/actions/setup-chrome/action.yml
- name: 'Setup Chrome and chromedriver'
run: |
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update -qqy
sudo apt-get -qqy install google-chrome-stable
CHROMEDRIVER_URL=$(curl https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json |
jq -r '.channels.Stable.downloads.chromedriver | map(select(.platform == "linux64")) | first.url')
curl -L -O "$CHROMEDRIVER_URL"
unzip chromedriver-linux64.zip
pushd ./chromedriver-linux64
chmod +x chromedriver
sudo mv chromedriver /usr/local/bin
popd
chromedriver -version
shell: bash
- name: 'Run Rust headless browser tests'
working-directory: ./rust
run: CHROMEDRIVER=/usr/local/bin/chromedriver cargo test --target wasm32-unknown-unknown
shell: bash
run-test-suite-web-typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
# Disable wireit cache for now, seeing some errors pop up:
# https://github.com/subconsciousnetwork/noosphere/actions/runs/4682179827/jobs/8295693844
# - uses: google/wireit@setup-github-actions-caching/v1
- name: 'Setup Rust'
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y
- uses: actions/setup-node@v3
with:
node-version: lts/*
- name: 'Install environment packages'
run: |
sudo apt-get update -qqy
sudo apt-get install jq protobuf-compiler cmake
- name: 'Install Rust/WASM test dependencies'
run: |
rustup target install wasm32-unknown-unknown
cargo install toml-cli
WASM_BINDGEN_VERSION=`toml get ./Cargo.lock . | jq '.package | map(select(.name == "wasm-bindgen"))[0].version' | xargs echo`
cargo install wasm-bindgen-cli --vers "$WASM_BINDGEN_VERSION"
cargo install wasm-opt --locked
shell: bash
# See: https://github.com/SeleniumHQ/selenium/blob/5d108f9a679634af0bbc387e7e3811bc1565912b/.github/actions/setup-chrome/action.yml
- name: 'Setup Chrome and chromedriver'
run: |
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update -qqy
sudo apt-get -qqy install google-chrome-stable
CHROMEDRIVER_URL=$(curl https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json |
jq -r '.channels.Stable.downloads.chromedriver | map(select(.platform == "linux64")) | first.url')
curl -L -O "$CHROMEDRIVER_URL"
unzip chromedriver-linux64.zip
pushd ./chromedriver-linux64
chmod +x chromedriver
sudo mv chromedriver /usr/local/bin
popd
chromedriver -version
shell: bash
- name: 'Install NPM dependencies'
working-directory: ./typescript
run: npm ci
- name: 'Run TypeScript headless browser tests'
working-directory: ./typescript
run: npm run test