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



我的锚项目构建与血清的锚框架。
我想设置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

最初的方法并不有效
cons:

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

当深入挖掘时发现serum发布docker映像仅用于此目的。所以我将action文件修改为

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分钟。

引用:

  • https://github.com/project-serum/anchor/tree/master/docker
  • https://github.com/yourarj/solana-twitter-enhanced/blob/main/.github/workflows/rust.yml

最新更新