anchor.yml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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/token-swap/anchor"
  57. "tokens/token-2022/basics/anchor"
  58. "tokens/token-2022/cpi-guard/anchor"
  59. "tokens/token-2022/default-account-state/anchor"
  60. "tokens/token-2022/group/anchor"
  61. "tokens/token-2022/immutable-owner/anchor"
  62. "tokens/token-2022/interest-bearing/anchor"
  63. "tokens/token-2022/memo-transfer/anchor"
  64. "tokens/token-2022/metadata/anchor"
  65. "tokens/token-2022/mint-close-authority/anchor"
  66. "tokens/token-2022/non-transferable/anchor"
  67. "tokens/token-2022/permanent-delegate/anchor"
  68. "tokens/token-2022/transfer-fee/anchor"
  69. "tokens/token-2022/transfer-hook/anchor"
  70. "tokens/token-2022/transfer-hook/anchor/TransferHookCounter"
  71. "tokens/token-2022/transfer-hook/anchor/TransferHookHelloWorld"
  72. "tokens/token-2022/transfer-hook/anchor/TransferHookTransferCost"
  73. "tokens/token-2022/transfer-hook/anchor/TransferHookWhitelist"
  74. )
  75. for projectDir in "${ProjectDirs[@]}"; do
  76. echo "
  77. ********
  78. Building $projectDir
  79. ********"
  80. cd $projectDir
  81. if anchor build; then
  82. echo "Build succeeded for $projectDir."
  83. else
  84. failed=true
  85. failed_builds+=($projectDir)
  86. echo "Build failed for $projectDir. Continuing with the next program."
  87. fi
  88. cd - > /dev/null
  89. done
  90. if [ "$failed" = true ]; then
  91. echo "Programs that failed building:"
  92. printf "%s\n" "${failed_builds[@]}"
  93. exit 1
  94. else
  95. echo "All programs built successfully."
  96. fi
  97. shell: bash
  98. test:
  99. runs-on: ubuntu-latest
  100. strategy:
  101. matrix:
  102. node-version: [20.x]
  103. solana-version: [1.18.8, beta]
  104. anchor-version: [0.30.0]
  105. steps:
  106. - uses: actions/checkout@v4
  107. - name: Setup Anchor
  108. uses: heyAyushh/setup-anchor@v2.2
  109. with:
  110. anchor-version: ${{ matrix.anchor-version }}
  111. solana-cli-version: ${{ matrix.solana-version }}
  112. node-version: ${{ matrix.node-version }}
  113. - name: Display versions
  114. run: |
  115. solana -V
  116. solana-keygen new --no-bip39-passphrase
  117. rustc -V
  118. anchor -V
  119. npm i -g pnpm
  120. - name: Test anchor programs
  121. run: |
  122. declare -a ProjectDirs=(
  123. "basics/account-data/anchor"
  124. "basics/checking-accounts/anchor"
  125. "basics/close-account/anchor"
  126. "basics/counter/anchor"
  127. "basics/create-account/anchor"
  128. "basics/hello-solana/anchor"
  129. "basics/pda-rent-payer/anchor"
  130. "basics/processing-instructions/anchor"
  131. "basics/program-derived-addresses/anchor"
  132. "basics/realloc/anchor"
  133. "basics/rent/anchor"
  134. "basics/repository-layout/anchor"
  135. "basics/transfer-sol/anchor"
  136. "tokens/token-swap/anchor"
  137. "tokens/token-2022/basics/anchor"
  138. "tokens/token-2022/cpi-guard/anchor"
  139. "tokens/token-2022/default-account-state/anchor"
  140. "tokens/token-2022/group/anchor"
  141. "tokens/token-2022/immutable-owner/anchor"
  142. "tokens/token-2022/interest-bearing/anchor"
  143. "tokens/token-2022/memo-transfer/anchor"
  144. "tokens/token-2022/metadata/anchor"
  145. "tokens/token-2022/mint-close-authority/anchor"
  146. "tokens/token-2022/non-transferable/anchor"
  147. "tokens/token-2022/permanent-delegate/anchor"
  148. "tokens/token-2022/transfer-fee/anchor"
  149. "tokens/token-2022/transfer-hook/anchor"
  150. "tokens/token-2022/transfer-hook/anchor/TransferHookCounter"
  151. "tokens/token-2022/transfer-hook/anchor/TransferHookHelloWorld"
  152. "tokens/token-2022/transfer-hook/anchor/TransferHookTransferCost"
  153. "tokens/token-2022/transfer-hook/anchor/TransferHookWhitelist"
  154. )
  155. for projectDir in "${ProjectDirs[@]}"; do
  156. echo "
  157. ********
  158. Testing $projectDir
  159. ********"
  160. cd $projectDir
  161. pnpm install --frozen-lockfile
  162. if anchor test; then
  163. echo "Tests succeeded for $projectDir."
  164. else
  165. failed=true
  166. failed_tests+=($projectDir)
  167. echo "Tests failed for $val. Continuing with the next program."
  168. fi
  169. cd - > /dev/null
  170. done
  171. if [ "$failed" = true ]; then
  172. echo "*****************************"
  173. echo "Programs that failed testing:"
  174. printf "%s\n" "${failed_tests[@]}"
  175. exit 1
  176. else
  177. echo "All tests passed."
  178. fi
  179. shell: bash