workflow.yml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. name: build
  2. on:
  3. push:
  4. branches: [ master ]
  5. tags: [ "*" ]
  6. paths-ignore: [ "README.md", "history.md", "release-notes.md" ]
  7. pull_request:
  8. branches: [ master ]
  9. jobs:
  10. build:
  11. name: Build
  12. runs-on: ${{ matrix.operating-system }}
  13. strategy:
  14. matrix:
  15. operating-system: [windows-latest,ubuntu-latest,macos-latest]
  16. # lazarus-versions: [stable, 2.2.2, 2.2.0, 2.0.12]
  17. lazarus-versions: [stable]
  18. steps:
  19. - name: Checkout Repository
  20. uses: actions/checkout@v2
  21. with:
  22. submodules: false
  23. - name: Install Lazarus
  24. uses: gcarreno/[email protected]
  25. with:
  26. with-cache: false
  27. lazarus-version: ${{ matrix.lazarus-versions }}
  28. - name: Build the Pascal daemon
  29. run: lazbuild -B "src/pascalcoin_daemon.lpi"
  30. - name: Build reference Pascal Miner
  31. run: lazbuild -B "src/pascalcoin_miner.lpi"
  32. - name: Build the Main Wallet Application (Windows/Linux)
  33. if: ${{ matrix.operating-system != 'macos-latest' }}
  34. run: lazbuild -B "src/pascalcoin_wallet_classic.lpi"
  35. - name: Build the Main Wallet Application (macOS)
  36. if: ${{ matrix.operating-system == 'macos-latest' }}
  37. run: lazbuild -B --ws=cocoa "src/pascalcoin_wallet_classic.lpi"
  38. - name: Upload binary (Windows)
  39. if: ${{ (matrix.operating-system == 'windows-latest') && (matrix.lazarus-versions == 'stable') }}
  40. uses: actions/upload-artifact@v2
  41. with:
  42. name: PascalCoinWindows
  43. path: |
  44. src/pascalcoin_daemon.exe
  45. src/PascalCoinMiner.exe
  46. src/PascalCoinWalletLazarus.exe
  47. - name: Upload binary (Ubuntu)
  48. if: ${{ (matrix.operating-system == 'ubuntu-latest') && (matrix.lazarus-versions == 'stable') }}
  49. uses: actions/upload-artifact@v2
  50. with:
  51. name: PascalCoinLinux
  52. path: |
  53. src/pascalcoin_daemon
  54. src/PascalCoinMiner
  55. src/PascalCoinWalletLazarus
  56. - name: Upload binary (macOS)
  57. if: ${{ (matrix.operating-system == 'macos-latest') && (matrix.lazarus-versions == 'stable') }}
  58. uses: actions/upload-artifact@v2
  59. with:
  60. name: PascalCoinMacOS
  61. path: |
  62. src/pascalcoin_daemon
  63. src/PascalCoinMiner
  64. src/PascalCoinWalletLazarus
  65. package-release:
  66. if: contains(github.ref, '/tags/')
  67. name: Package and create GitHub Release
  68. runs-on: ubuntu-latest
  69. needs: build
  70. steps:
  71. - name: Checkout
  72. uses: actions/checkout@v2
  73. - name: Set output
  74. id: vars
  75. run: echo "tag=${GITHUB_REF#refs/*/}" >> ${GITHUB_OUTPUT}
  76. - name: Download the Release binary
  77. uses: actions/download-artifact@v2
  78. - name: List files
  79. run: |
  80. ls -alF PascalCoinWindows
  81. ls -alF PascalCoinLinux
  82. ls -alF PascalCoinMacOS
  83. - name: Create release files
  84. run: |
  85. cd PascalCoinWindows
  86. cp ../windows-dll/*.dll .
  87. zip -r PascalCoin-${{ steps.vars.outputs.tag }}-x86_64-win64.zip *.exe *.dll
  88. cd ../PascalCoinLinux
  89. chmod +x PascalCoin* pascalcoin*
  90. tar -zcvf PascalCoin-${{ steps.vars.outputs.tag }}-x86_64-linux.tar.gz PascalCoin* pascalcoin*
  91. cd ../PascalCoinMacOS
  92. chmod +x PascalCoin* pascalcoin*
  93. tar -zcvf PascalCoin-${{ steps.vars.outputs.tag }}-x86_64-darwin.tar.gz PascalCoin* pascalcoin*
  94. - name: Create GitHub release
  95. uses: softprops/action-gh-release@v1
  96. with:
  97. name: PascalCoin ${{ steps.vars.outputs.tag }}
  98. body_path: release-notes.md
  99. files: |
  100. PascalCoinWindows/*.zip
  101. PascalCoinLinux/*.tar.gz
  102. PascalCoinMacOS/*.tar.gz
  103. env:
  104. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}