anchor.yml 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. name: Anchor
  2. on:
  3. schedule:
  4. - cron: "0 0 * * *"
  5. push:
  6. branches:
  7. - main
  8. pull_request:
  9. types: [opened, synchronize, reopened]
  10. branches:
  11. - main
  12. jobs:
  13. build:
  14. runs-on: ubuntu-latest
  15. strategy:
  16. matrix:
  17. node-version: [20.x]
  18. solana-version: [1.18.8, beta]
  19. anchor-version: [0.30.0]
  20. steps:
  21. - uses: actions/checkout@v4
  22. - name: Use Node.js ${{ matrix.node-version }}
  23. uses: actions/setup-node@v4
  24. with:
  25. node-version: ${{ matrix.node-version }}
  26. check-latest: true
  27. - uses: heyAyushh/setup-solana@v5.1
  28. with:
  29. solana-cli-version: ${{ matrix.solana-version }}
  30. - run: solana block
  31. shell: bash
  32. - name: Install Anchor
  33. run: |
  34. solana -V
  35. rustc -V
  36. cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
  37. avm install ${{ matrix.anchor-version }}
  38. avm use ${{ matrix.anchor-version }}
  39. npm install --global pnpm
  40. - name: Build Anchor programs
  41. run: |
  42. declare -a ProjectDirs=(
  43. "basics/account-data/anchor"
  44. "basics/checking-accounts/anchor"
  45. "basics/close-account/anchor"
  46. "basics/counter/anchor"
  47. "basics/create-account/anchor"
  48. "basics/hello-solana/anchor"
  49. "basics/pda-rent-payer/anchor"
  50. "basics/processing-instructions/anchor"
  51. "basics/program-derived-addresses/anchor"
  52. "basics/realloc/anchor"
  53. "basics/rent/anchor"
  54. "basics/repository-layout/anchor"
  55. "basics/transfer-sol/anchor"
  56. "tokens/create-token/anchor"
  57. "tokens/nft-minter/anchor"
  58. "tokens/pda-mint-authority/anchor"
  59. "tokens/spl-token-minter/anchor"
  60. "tokens/token-swap/anchor"
  61. "tokens/transfer-tokens/anchor"
  62. "tokens/token-2022/basics/anchor"
  63. "tokens/token-2022/cpi-guard/anchor"
  64. "tokens/token-2022/default-account-state/anchor"
  65. "tokens/token-2022/group/anchor"
  66. "tokens/token-2022/immutable-owner/anchor"
  67. "tokens/token-2022/interest-bearing/anchor"
  68. "tokens/token-2022/memo-transfer/anchor"
  69. "tokens/token-2022/metadata/anchor"
  70. "tokens/token-2022/mint-close-authority/anchor"
  71. "tokens/token-2022/non-transferable/anchor"
  72. "tokens/token-2022/permanent-delegate/anchor"
  73. "tokens/token-2022/transfer-fee/anchor"
  74. "tokens/token-2022/transfer-hook/anchor"
  75. "tokens/token-2022/transfer-hook/anchor/TransferHookCounter"
  76. "tokens/token-2022/transfer-hook/anchor/TransferHookHelloWorld"
  77. "tokens/token-2022/transfer-hook/anchor/TransferHookTransferCost"
  78. "tokens/token-2022/transfer-hook/anchor/TransferHookWhitelist"
  79. )
  80. for projectDir in "${ProjectDirs[@]}"; do
  81. echo "
  82. ********
  83. Building $projectDir
  84. ********"
  85. cd $projectDir
  86. if anchor build; then
  87. echo "Build succeeded for $projectDir."
  88. else
  89. failed=true
  90. failed_builds+=($projectDir)
  91. echo "Build failed for $projectDir. Continuing with the next program."
  92. fi
  93. cd - > /dev/null
  94. done
  95. if [ "$failed" = true ]; then
  96. echo "Programs that failed building:"
  97. printf "%s\n" "${failed_builds[@]}"
  98. exit 1
  99. else
  100. echo "All programs built successfully."
  101. fi
  102. shell: bash
  103. test:
  104. runs-on: ubuntu-latest
  105. strategy:
  106. matrix:
  107. node-version: [20.x]
  108. solana-version: [1.18.8, beta]
  109. anchor-version: [0.30.0]
  110. steps:
  111. - uses: actions/checkout@v4
  112. - name: Setup Anchor
  113. uses: heyAyushh/setup-anchor@v2.2
  114. with:
  115. anchor-version: ${{ matrix.anchor-version }}
  116. solana-cli-version: ${{ matrix.solana-version }}
  117. node-version: ${{ matrix.node-version }}
  118. - name: Display versions
  119. run: |
  120. solana -V
  121. solana-keygen new --no-bip39-passphrase
  122. rustc -V
  123. anchor -V
  124. npm i -g pnpm
  125. - name: Test anchor programs
  126. run: |
  127. declare -a ProjectDirs=(
  128. "basics/account-data/anchor"
  129. "basics/checking-accounts/anchor"
  130. "basics/close-account/anchor"
  131. "basics/counter/anchor"
  132. "basics/create-account/anchor"
  133. "basics/hello-solana/anchor"
  134. "basics/pda-rent-payer/anchor"
  135. "basics/processing-instructions/anchor"
  136. "basics/program-derived-addresses/anchor"
  137. "basics/realloc/anchor"
  138. "basics/rent/anchor"
  139. "basics/repository-layout/anchor"
  140. "basics/transfer-sol/anchor"
  141. "tokens/create-token/anchor"
  142. "tokens/nft-minter/anchor"
  143. "tokens/pda-mint-authority/anchor"
  144. "tokens/spl-token-minter/anchor"
  145. "tokens/token-swap/anchor"
  146. "tokens/transfer-tokens/anchor"
  147. "tokens/token-2022/basics/anchor"
  148. "tokens/token-2022/cpi-guard/anchor"
  149. "tokens/token-2022/default-account-state/anchor"
  150. "tokens/token-2022/group/anchor"
  151. "tokens/token-2022/immutable-owner/anchor"
  152. "tokens/token-2022/interest-bearing/anchor"
  153. "tokens/token-2022/memo-transfer/anchor"
  154. "tokens/token-2022/metadata/anchor"
  155. "tokens/token-2022/mint-close-authority/anchor"
  156. "tokens/token-2022/non-transferable/anchor"
  157. "tokens/token-2022/permanent-delegate/anchor"
  158. "tokens/token-2022/transfer-fee/anchor"
  159. "tokens/token-2022/transfer-hook/anchor"
  160. "tokens/token-2022/transfer-hook/anchor/TransferHookCounter"
  161. "tokens/token-2022/transfer-hook/anchor/TransferHookHelloWorld"
  162. "tokens/token-2022/transfer-hook/anchor/TransferHookTransferCost"
  163. "tokens/token-2022/transfer-hook/anchor/TransferHookWhitelist"
  164. )
  165. for projectDir in "${ProjectDirs[@]}"; do
  166. echo "
  167. ********
  168. Testing $projectDir
  169. ********"
  170. cd $projectDir
  171. pnpm install --frozen-lockfile
  172. if anchor test; then
  173. echo "Tests succeeded for $projectDir."
  174. else
  175. failed=true
  176. failed_tests+=($projectDir)
  177. echo "Tests failed for $val. Continuing with the next program."
  178. fi
  179. cd - > /dev/null
  180. done
  181. if [ "$failed" = true ]; then
  182. echo "*****************************"
  183. echo "Programs that failed testing:"
  184. printf "%s\n" "${failed_tests[@]}"
  185. exit 1
  186. else
  187. echo "All tests passed."
  188. fi
  189. shell: bash