Skip to content

Commit

Permalink
ci: use nix flake for environment
Browse files Browse the repository at this point in the history
  • Loading branch information
johnyob committed Aug 28, 2024
1 parent 48d8056 commit 6155f07
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 94 deletions.
113 changes: 19 additions & 94 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,69 +12,42 @@ jobs:
- uses: actions/checkout@v4
- uses: wagoid/commitlint-github-action@v6

fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/[email protected]
- name: Rust setup
# FIXME: Once rustup adds a command to install a toolchain from rust-toolchain.toml, we can remove this.
run: rustup toolchain add 1.73.0 --profile minimal

- uses: luisnquin/[email protected]

- name: Format (rustfmt)
run: make fmt-rust-check

- name: Format (prettier)
run: npx prettier --check .

- name: Format (Nix)
run: make fmt-nix-check

# FIXME(https://linear.app/tezos/issue/JSTZ-49):
# Add build and tests for LIGO contracts

build-rust:
name: Build (Cargo)
runs-on: ubuntu-latest
needs: [commitlint, fmt]
build:
name: Build
runs-on: [x86_64, linux, nix]
needs: [commitlint]
steps:
- uses: actions/checkout@v4
- uses: Swatinem/[email protected]
- name: Rust setup
# FIXME: Once rustup adds a command to install a toolchain from rust-toolchain.toml, we can remove this.
run: rustup toolchain add 1.73.0 --profile minimal --component llvm-tools-preview
- uses: taiki-e/install-action@cargo-llvm-cov
- uses: taiki-e/install-action@nextest

- run: nix --version
- name: Format
run: nix --accept-flake-config fmt -- --fail-on-change
- name: Lint
run: make lint

run: nix --accept-flake-config develop -j auto --command make lint
- name: Prevent blst
run: sh -c '[ -z "$(cargo tree | grep blst)" ]'

- name: Build all packages
# PROFILE=dev is used to build the dev profile, which is used for testing
# (to avoid building both a release and a debug profile in CI).
run: PROFILE=dev make build

- name: Run unit tests (and generate coverage)
run: make ci-cov

run: nix --accept-flake-config develop -j auto --command sh -c '[ -z "$(cargo tree | grep blst)" ]'
- name: Build
run: nix --accept-flake-config --log-format raw -L build -j auto .#{all,js_jstz}
- name: Flake check
run: nix --accept-flake-config --log-format raw -L flake check -j auto
# Coverage is part of nix flake check, but we want to upload it to Codecov
# So we run it again (it's cached) and upload the result
- name: Coverage
run: nix --accept-flake-config --log-format raw -L build .#checks.x86_64-linux.cargo-llvm-cov
- name: Upload coverage to Codecov
uses: codecov/[email protected]
with:
files: codecov.json
files: result
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

build-docs:
name: Build Documentation
runs-on: ubuntu-latest
needs: [commitlint, fmt]
needs: [commitlint]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
Expand All @@ -98,51 +71,3 @@ jobs:

- name: Build with VitePress
run: npm run docs:build

build-sdk:
name: Build TypeScript SDK
runs-on: ubuntu-latest
needs: [commitlint, fmt]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
- name: Get npm cache directory
id: npm-cache-dir
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- name: Configure npm cache
uses: actions/cache@v4
id: npm-cache
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- run: npm ci

- name: Build
run: cd packages/jstz && npm run build

build-nix:
name: Build (Nix)
runs-on: ubuntu-latest
needs: [build-rust, build-sdk, build-docs]
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@V27
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v15
with:
name: trilitech-jstz
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"

- name: Build Shell
run: nix develop --command bash -c "echo 'Hello World'"

- name: Build
run: nix build -j auto
5 changes: 5 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
{
nixConfig = {
extra-trusted-public-keys = "trilitech-jstz.cachix.org-1:+ShRijHoxI9xAIZRP6Mov3aFui5FvgMHJ2M360OEYTo=";
extra-substituters = "https://trilitech-jstz.cachix.org";
};

inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
Expand Down

0 comments on commit 6155f07

Please sign in to comment.