Support tree-shaking and split code into entrypoints #1129
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: Build, lint and typecheck examples | |
on: | |
# Triggers the workflow on push or pull request events but only for the main branch | |
push: | |
branches: [ main, release** ] | |
pull_request: | |
branches: [ main, release** ] | |
# Don't run on draft PR's, see: https://github.com/orgs/community/discussions/25722#discussioncomment-3248917 | |
types: [ opened, synchronize, reopened, ready_for_review ] | |
# Allows us to run the workflow manually from the Actions tab | |
workflow_dispatch: | |
env: | |
NODE_VERSION: 18.16.0 | |
RUST_VERSION: 1.65 | |
RUST_FMT: nightly-2023-04-01-x86_64-unknown-linux-gnu | |
jobs: | |
build: | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Cache GRPC | |
id: cache-grpc | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc-${{ hashFiles('deps/concordium-base/concordium-grpc-api') }} | |
restore-key: ${{ runner.os }}-grpc | |
- name: Cache dependencies | |
id: yarn-cache | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn | |
- name: Cache WebPack | |
uses: actions/cache@v3 | |
with: | |
path: ./packages/web/.webpack-cache | |
# These two lines ensure that a fresh cache is generated after each run | |
key: ${{ runner.os }}-webpack-${{ github.run_id }} | |
restore-keys: ${{ runner.os }}-webpack | |
- name: Get dependencies | |
run: yarn install --immutable | |
- name: Install rust | |
run: rustup default ${{ env.RUST_VERSION }} | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: | | |
packages/rust-bindings | |
deps/concordium-deps | |
- name: Get wasm-pack | |
uses: jetli/[email protected] | |
with: | |
version: 'latest' | |
- name: Build GRPC bindings | |
if: steps.cache-grpc.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p packages/common/src/grpc-api | |
mkdir -p packages/nodejs/src/grpc-api | |
yarn workspace @concordium/common-sdk generate | |
yarn workspace @concordium/node-sdk generate | |
- name: Build | |
run: yarn build:rust-bindings && yarn build:dev | |
- name: Store build-debug | |
uses: ./.github/actions/upload-artifact | |
with: | |
name: build-debug | |
path: | | |
./packages/rust-bindings/lib | |
./packages/common/lib | |
./packages/web/lib | |
./packages/nodejs/lib | |
./packages/ccd-js-gen/lib | |
typecheck-examples: | |
runs-on: ubuntu-22.04 | |
needs: build | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Restore dependencies | |
uses: actions/cache/restore@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn | |
- name: Restore grpc | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc | |
- name: Get build-debug | |
uses: ./.github/actions/download-artifact | |
with: | |
name: build-debug | |
- name: Typecheck examples | |
run: yarn workspace @concordium/examples typecheck | |
common-tests: | |
runs-on: ubuntu-22.04 | |
needs: build | |
defaults: | |
run: | |
working-directory: packages/common | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Restore dependencies | |
uses: actions/cache/restore@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn | |
- name: Restore grpc | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc | |
- name: Get build-debug | |
uses: ./.github/actions/download-artifact | |
with: | |
name: build-debug | |
- name: Run Tests | |
run: yarn test | |
typedoc: | |
runs-on: ubuntu-22.04 | |
needs: build | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Restore dependencies | |
uses: actions/cache/restore@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn | |
- name: Restore grpc | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc | |
- name: Get build-debug | |
uses: ./.github/actions/download-artifact | |
with: | |
name: build-debug | |
- name: Build typedoc | |
run: yarn typedoc | |
lint: | |
runs-on: ubuntu-22.04 | |
needs: build | |
if: github.event.pull_request.draft == false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Restore dependencies | |
uses: actions/cache/restore@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn | |
- name: Restore grpc | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc | |
- name: Get build-debug | |
uses: ./.github/actions/download-artifact | |
with: | |
name: build-debug | |
- name: Lint | |
run: yarn lint | |
markdown-lint: | |
runs-on: ubuntu-22.04 | |
if: github.event.pull_request.draft == false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Restore dependencies | |
uses: actions/cache/restore@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn | |
- name: Restore grpc | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc | |
- name: Lint markdown | |
run: yarn markdown:lint | |
markdown-linkcheck: | |
runs-on: ubuntu-22.04 | |
if: github.event.pull_request.draft == false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: yarn | |
- name: Restore dependencies | |
uses: actions/cache/restore@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-yarn | |
- name: Restore grpc | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./packages/common/src/grpc-api | |
./packages/nodejs/src/grpc-api | |
key: ${{ runner.os }}-grpc | |
- name: Lint markdown | |
run: yarn markdown:linkcheck | |
rust_lint_fmt: | |
runs-on: ubuntu-22.04 | |
if: github.event.pull_request.draft == false | |
defaults: | |
run: | |
working-directory: packages/rust-bindings | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- name: Install formatter | |
run: | | |
rustup default ${{ env.RUST_FMT }} | |
rustup component add rustfmt | |
- name: Format | |
run: cargo fmt -- --color=always --check | |
rust_lint_clippy: | |
runs-on: ubuntu-22.04 | |
needs: rust_lint_fmt | |
if: github.event.pull_request.draft == false | |
defaults: | |
run: | |
working-directory: packages/rust-bindings | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- name: Install clippy | |
run: | | |
rustup default ${{ env.RUST_VERSION }} | |
rustup component add clippy | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: | | |
packages/rust-bindings | |
deps/concordium-deps | |
- name: Run clippy | |
run: cargo clippy --color=always --tests --benches -- -Dclippy::all |