Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: use nix flake for environment #544

Merged
merged 1 commit into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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