فهرست منبع

ci: Add downstream build for anchor (#34343)

* ci: Add downstream build for anchor

* Fixup for shellcheck and job title
Jon Cinque 1 سال پیش
والد
کامیت
ae7713177c
3فایلهای تغییر یافته به همراه79 افزوده شده و 15 حذف شده
  1. 53 0
      .github/workflows/downstream-project-anchor.yml
  2. 21 15
      scripts/build-downstream-anchor-projects.sh
  3. 5 0
      scripts/patch-crates.sh

+ 53 - 0
.github/workflows/downstream-project-anchor.yml

@@ -0,0 +1,53 @@
+name: Downstream Project - Anchor
+
+on:
+  push:
+    branches:
+      - master
+      - v[0-9]+.[0-9]+
+  pull_request:
+    branches:
+      - master
+      - v[0-9]+.[0-9]+
+    paths:
+      - "**.rs"
+      - "Cargo.toml"
+      - "Cargo.lock"
+      - "cargo-build-bpf"
+      - "cargo-test-bpf"
+      - "cargo-build-sbf"
+      - "cargo-test-sbf"
+      - ".github/workflows/downstream-project-anchor.yml"
+  workflow_call:
+    inputs:
+      branch:
+        required: false
+        type: string
+        default: "master"
+
+env:
+  SHELL: /bin/bash
+  SCCACHE_GHA_ENABLED: "true"
+  RUSTC_WRAPPER: "sccache"
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        version: ["v0.29.0"]
+    steps:
+      - uses: actions/checkout@v3
+
+      - shell: bash
+        run: |
+          .github/scripts/purge-ubuntu-runner.sh
+
+      - uses: mozilla-actions/sccache-action@v0.0.3
+        with:
+          version: "v0.5.4"
+
+      - shell: bash
+        run: |
+          source .github/scripts/downstream-project-spl-install-deps.sh
+          ./scripts/build-downstream-anchor-projects.sh ${{ matrix.version }}

+ 21 - 15
scripts/build-downstream-anchor-projects.sh

@@ -9,8 +9,10 @@ source ci/_
 source scripts/patch-crates.sh
 source scripts/read-cargo-variable.sh
 
+anchor_version=$1
 solana_ver=$(readCargoVariable version Cargo.toml)
 solana_dir=$PWD
+cargo="$solana_dir"/cargo
 cargo_build_sbf="$solana_dir"/cargo-build-sbf
 cargo_test_sbf="$solana_dir"/cargo-test-sbf
 
@@ -43,15 +45,20 @@ anchor() {
   set -x
   rm -rf anchor
   git clone https://github.com/coral-xyz/anchor.git
+  cd anchor || exit 1
+
+  # checkout tag
+  if [[ -n "$anchor_version" ]]; then
+    git checkout "$anchor_version"
+  fi
+
   # copy toolchain file to use solana's rust version
-  cp "$solana_dir"/rust-toolchain.toml anchor/
-  cd anchor
+  cp "$solana_dir"/rust-toolchain.toml .
 
   update_solana_dependencies . "$solana_ver"
   patch_crates_io_solana Cargo.toml "$solana_dir"
 
-  cargo build
-  cargo test
+  $cargo test
 
   anchor_dir=$PWD
   anchor_ver=$(readCargoVariable version "$anchor_dir"/lang/Cargo.toml)
@@ -73,8 +80,9 @@ mango() {
     patch_crates_io_solana Cargo.toml "$solana_dir"
     patch_crates_io_anchor Cargo.toml "$anchor_dir"
 
-    cargo build
-    cargo test
+    cd program
+    $cargo build
+    $cargo test
     $cargo_build_sbf
     $cargo_test_sbf
   )
@@ -83,19 +91,17 @@ mango() {
 metaplex() {
   (
     set -x
-    rm -rf metaplex-program-library
-    git clone https://github.com/metaplex-foundation/metaplex-program-library
-     # copy toolchain file to use solana's rust version
-     cp "$solana_dir"/rust-toolchain.toml metaplex-program-library/
-    cd metaplex-program-library
+    rm -rf mpl-token-metadata
+    git clone https://github.com/metaplex-foundation/mpl-token-metadata
+    # copy toolchain file to use solana's rust version
+    cp "$solana_dir"/rust-toolchain.toml mpl-token-metadata/
+    cd mpl-token-metadata/programs/token-metadata/program
 
     update_solana_dependencies . "$solana_ver"
-    update_anchor_dependencies . "$anchor_ver"
     patch_crates_io_solana Cargo.toml "$solana_dir"
-    patch_crates_io_anchor Cargo.toml "$anchor_dir"
 
-    cargo build
-    cargo test
+    $cargo build
+    $cargo test
     $cargo_build_sbf
     $cargo_test_sbf
   )

+ 5 - 0
scripts/patch-crates.sh

@@ -7,11 +7,15 @@ update_solana_dependencies() {
   while IFS='' read -r line; do tomls+=("$line"); done < <(find "$project_root" -name Cargo.toml)
 
   sed -i -e "s#\(solana-program = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
+  sed -i -e "s#\(solana-program = { version = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-program-test = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
+  sed -i -e "s#\(solana-program-test = { version = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-sdk = \"\).*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-sdk = { version = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-client = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-client = { version = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
+  sed -i -e "s#\(solana-cli-config = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
+  sed -i -e "s#\(solana-cli-config = { version = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-clap-utils = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-clap-utils = { version = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
   sed -i -e "s#\(solana-account-decoder = \"\)[^\"]*\(\"\)#\1=$solana_ver\2#g" "${tomls[@]}" || return $?
@@ -30,6 +34,7 @@ patch_crates_io_solana() {
 solana-account-decoder = { path = "$solana_dir/account-decoder" }
 solana-clap-utils = { path = "$solana_dir/clap-utils" }
 solana-client = { path = "$solana_dir/client" }
+solana-cli-config = { path = "$solana_dir/cli-config" }
 solana-program = { path = "$solana_dir/sdk/program" }
 solana-program-test = { path = "$solana_dir/program-test" }
 solana-sdk = { path = "$solana_dir/sdk" }