infra: preview branches use self hosting #6472
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: CI | |
# Use runs on `ubuntu-latest-8-cores`. All of our self hosted runners use this tag. | |
# Our runners pick up jobs first, and if all our runners are being used or are down | |
# it will automatically back up to using GitHub hosted runners. | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
test_rust: | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Set up Rust | |
uses: moonrepo/setup-rust@v1 | |
with: | |
components: clippy, llvm-tools-preview | |
cache: false | |
- name: Install grcov | |
run: if ! which grcov; then cargo install grcov; fi | |
- name: Install llvm-tools-preview | |
run: if ! which llvm-tools-preview; then rustup component add llvm-tools-preview; fi | |
- name: Install pkg-config | |
if: github.runner.isHosted == true | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y pkg-config | |
- name: Test quadratic-core | |
env: | |
LLVM_PROFILE_FILE: grcov-%p-%m.profraw | |
RUSTFLAGS: -Cinstrument-coverage | |
RUSTC_BOOTSTRAP: 1 | |
run: | | |
cd quadratic-core | |
cargo test | |
- name: Generate coverage for quadratic-core | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
run: | | |
grcov $(find . -name "grcov-*.profraw" -print) \ | |
--branch \ | |
--ignore-not-existing \ | |
--binary-path ./target/debug/ \ | |
-s . \ | |
-t lcov \ | |
--ignore "/*" \ | |
--ignore "./src/wasm_bindings/*" \ | |
--ignore "./src/bin/*" \ | |
--ignore "./docker/*" \ | |
-o lcov.info | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v3 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
- name: Test quadratic-multiplayer | |
env: | |
LLVM_PROFILE_FILE: grcov-%p-%m.profraw | |
RUSTFLAGS: -Cinstrument-coverage | |
RUSTC_BOOTSTRAP: 1 | |
run: | | |
cd quadratic-multiplayer | |
npm run docker:test | |
- name: Generate coverage quadratic-multiplayer | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
run: | | |
grcov $(find . -name "grcov-*.profraw" -print) \ | |
--branch \ | |
--ignore-not-existing \ | |
--binary-path ./target/debug/ \ | |
-s . \ | |
-t lcov \ | |
--ignore "/*" \ | |
--ignore "./src/wasm_bindings/*" \ | |
--ignore "./src/bin/*" \ | |
--ignore "./docker/*" \ | |
--ignore "./../docker/*" \ | |
-o lcov.info | |
- name: Upload coverage reports to Codecov quadratic-multiplayer | |
uses: codecov/codecov-action@v3 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
- name: Test quadratic-connection | |
env: | |
LLVM_PROFILE_FILE: grcov-%p-%m.profraw | |
RUSTFLAGS: -Cinstrument-coverage | |
RUSTC_BOOTSTRAP: 1 | |
run: | | |
cd quadratic-connection | |
npm run test:docker:ci | |
test_unit: | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11.3" | |
- name: Set up Rust | |
uses: moonrepo/setup-rust@v1 | |
with: | |
channel: "nightly" | |
- uses: jetli/[email protected] | |
- name: Build quadratic-core | |
run: | | |
npm run build:wasm:javascript | |
- name: Build quadratic-rust-client | |
run: | | |
npm run build:rust-client | |
- name: Build python | |
run: | | |
npm run build:python | |
- name: Run npm test:ts in quadratic-client | |
run: | | |
npm install | |
npm run test:ts | |
test_python: | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11.3" | |
cache: "pip" | |
- name: Test python | |
run: | | |
cd quadratic-kernels/python-wasm | |
npm run test | |
test_api: | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Run npm test:ci in quadratic-api | |
run: | | |
npm install | |
cd quadratic-api | |
npm run docker:test:ci | |
lint_rust: | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Rust | |
uses: moonrepo/setup-rust@v1 | |
with: | |
components: clippy | |
cache: false | |
- name: Run cargo clippy in quadratic-core | |
run: | | |
cd quadratic-core | |
cargo clippy -- -D warnings | |
lint: | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Set up Rust | |
uses: moonrepo/setup-rust@v1 | |
with: | |
cache: false | |
- uses: jetli/[email protected] | |
with: | |
version: "latest" | |
- name: Build wasm core | |
run: | | |
npm run build:rust-client | |
cd quadratic-client | |
npm run build:wasm:javascript:dev | |
npm run build:wasm:types | |
- name: Lint quadratic-client | |
run: | | |
npm install | |
cd quadratic-client | |
npm run lint:prettier | |
npm run lint:eslint | |
npm run lint:ts | |
check-version-increment: | |
runs-on: ubuntu-latest | |
# If we are merging into main, but not pushed on main | |
if: github.base_ref == 'main' && github.ref != 'refs/heads/main' | |
steps: | |
- name: Checkout current branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Get current VERSION | |
id: current_version | |
run: echo "CURRENT_VERSION=$(cat VERSION)" >> $GITHUB_OUTPUT | |
- name: Checkout main branch | |
uses: actions/checkout@v3 | |
with: | |
ref: main | |
fetch-depth: 1 | |
- name: Get main VERSION | |
id: main_version | |
run: echo "MAIN_VERSION=$(cat VERSION)" >> $GITHUB_OUTPUT | |
- name: Compare versions to main, verify this version is higher | |
run: | | |
current_version="${{ steps.current_version.outputs.CURRENT_VERSION }}" | |
main_version="${{ steps.main_version.outputs.MAIN_VERSION }}" | |
if [ "$(printf '%s\n' "$main_version" "$current_version" | sort -V | tail -n1)" != "$current_version" ]; then | |
echo "Error: VERSION in the current branch ($current_version) is not greater than VERSION in main ($main_version)" | |
exit 1 | |
else | |
echo "VERSION check passed: Current branch ($current_version) > main ($main_version)" | |
fi | |
check-versions-match: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current branch | |
uses: actions/checkout@v3 | |
- name: Verify that all versions match | |
run: ./bump.sh verify |