Solana:如何为锚定项目设置 github 操作 (CI)

Solana: How to setup github action (CI) for an Anchor Project

我的锚项目是用 serum 的锚框架构建的。
我想设置 github 操作,以便每当提出新的拉取请求或在主分支上进行任何提交时,我可以确定没有代码被破坏并标记任何此类拉取请求。

这是我试过的方法。但是 运行 需要大约 18 到 20 分钟,但仍然没有成功。

name: Rust

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Install AVM
      run: cargo install --git https://github.com/project-serum/anchor avm --force
    - name: Install Anchor
      run: avm install 0.24.2 && avm use 0.24.2
    - name: Build
      run: anchor build
    - name: Run tests
  run: anchor test

最初的方法效率不高
缺点:

  • 需要手动安装 solana、nvm、node 和 yarn
  • 因此 运行
  • 的时间太多了
  • 复杂
  • 重新发明轮子

深入挖掘后发现 serum 仅出于此目的发布 docker 图片。所以我将我的动作文件修改为

name: Rust
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
env:
  CARGO_TERM_COLOR: always
jobs:
  build:
    runs-on: ubuntu-latest
    container: projectserum/build:v0.24.2

    steps:
      - uses: actions/checkout@v3
      - name: List rustup toolchains
        run: rustup toolchain list
      - name: Set default toolchain
        run: rustup default stable
      - name: List rustup toolchains
        run: rustup toolchain list
      - name: Generate new keygen
        run: solana-keygen new
      - name: Set solana target cluster to local
        run: solana config set --url http:localhost:8899
      - name: Check solana config
        run: solana config get
      - name: Install yarn dependencies
        run: yarn install
      - name: Build
        run: anchor build
      - name: Run tests
        run: anchor test

它使 运行 时间从 18 分钟减少到大约 3 分钟。

参考文献: