Skip to content

Change the package author to the Element Backend team #1

Change the package author to the Element Backend team

Change the package author to the Element Backend team #1

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
tags:
- 'v*'
pull_request:
branches: [ main ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
opa-lint:
name: Lint and test OPA policies
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Setup OPA
uses: open-policy-agent/[email protected]
with:
version: 0.64.1
- name: Lint policies
working-directory: ./policies
run: make lint
- name: Run OPA tests
working-directory: ./policies
run: make test
frontend-lint:
name: Check frontend style
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install Node
uses: actions/[email protected]
with:
node-version: 20
- name: Install Node dependencies
working-directory: ./frontend
run: npm ci
- name: Lint
working-directory: ./frontend
run: npm run lint
frontend-test:
name: Run the frontend test suite
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install Node
uses: actions/[email protected]
with:
node-version: 20
- name: Install Node dependencies
working-directory: ./frontend
run: npm ci
- name: Test
working-directory: ./frontend
run: npm test
rustfmt:
name: Check Rust style
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install toolchain
run: |
rustup toolchain install nightly
rustup default nightly
rustup component add rustfmt
- name: Check style
run: cargo fmt --all -- --check
cargo-deny:
name: Run `cargo deny` checks
runs-on: ubuntu-latest
env:
# We need to remove the sccache wrapper because we don't install it in this job
RUSTC_WRAPPER: ""
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Run `cargo-deny`
uses: EmbarkStudios/[email protected]
check-schema:
name: Check schema
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install Rust toolchain
run: |
rustup toolchain install stable
rustup default stable
- name: Setup sccache
uses: mozilla-actions/[email protected]
- name: Install Node
uses: actions/[email protected]
with:
node-version: 20
- name: Install Node dependencies
working-directory: ./frontend
run: npm ci
- name: Update the schemas
run: sh ./misc/update.sh
- name: Check that the workspace is clean
run: |
if ! [[ -z $(git status -s) ]]; then
echo "::error title=Workspace is not clean::Please run 'sh ./misc/update.sh' and commit the changes"
(
echo '## Diff after running `sh ./misc/update.sh`:'
echo
echo '```diff'
git diff
echo '```'
) >> $GITHUB_STEP_SUMMARY
exit 1
fi
clippy:
name: Run Clippy
needs: [rustfmt, opa-lint]
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install toolchain
run: |
rustup toolchain install 1.80.0
rustup default 1.80.0
rustup component add clippy
- name: Setup OPA
uses: open-policy-agent/[email protected]
with:
version: 0.64.1
- name: Compile OPA policies
working-directory: ./policies
run: make
- name: Setup sccache
uses: mozilla-actions/[email protected]
- name: Run clippy
run: |
cargo clippy --workspace --tests --bins --lib -- -D warnings
test:
name: Run test suite with Rust stable
needs: [rustfmt, opa-lint]
runs-on: ubuntu-latest
permissions:
contents: read
services:
postgres:
image: docker.io/library/postgres:15.3
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- "5432:5432"
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install toolchain
run: |
rustup toolchain install stable
rustup default stable
- name: Install Node
uses: actions/[email protected]
with:
node-version: 20
- name: Install Node dependencies
working-directory: ./frontend
run: npm ci
- name: Build the frontend
working-directory: ./frontend
run: npm run build
- name: Setup OPA
uses: open-policy-agent/[email protected]
with:
version: 0.64.1
- name: Compile OPA policies
working-directory: ./policies
run: make
- name: Setup sccache
uses: mozilla-actions/[email protected]
- name: Test
id: test
env:
DATABASE_URL: postgresql://postgres:postgres@localhost/postgres
SQLX_OFFLINE: '1'
run: |
cargo test --workspace
syn2mas:
name: Check syn2mas
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout the code
uses: actions/[email protected]
- name: Install Node
uses: actions/[email protected]
with:
node-version-file: ./tools/syn2mas/.nvmrc
- name: Install Node dependencies
working-directory: ./tools/syn2mas
run: npm ci
- name: Lint
working-directory: ./tools/syn2mas
run: npm run lint
- name: Build
working-directory: ./tools/syn2mas
run: npm run build
tests-done:
name: Tests done
if: ${{ always() }}
needs:
- opa-lint
- frontend-lint
- frontend-test
- rustfmt
- cargo-deny
- clippy
- check-schema
- test
- syn2mas
runs-on: ubuntu-latest
steps:
- uses: matrix-org/done-action@v3
with:
needs: ${{ toJSON(needs) }}