release.yml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. name: Create Release
  2. on:
  3. push:
  4. tags:
  5. - "v[0-9]+.[0-9]+.[0-9]+"
  6. jobs:
  7. release:
  8. name: Create Release
  9. runs-on: ubuntu-latest
  10. steps:
  11. - name: Checkout
  12. uses: actions/checkout@v4
  13. - name: Create Release
  14. id: create_release
  15. uses: softprops/action-gh-release@v2
  16. env:
  17. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  18. with:
  19. tag_name: ${{ github.ref }}
  20. name: Release ${{ github.ref }}
  21. body: |
  22. [CHANGELOG](https://github.com/PeakRacing/nes/blob/master/docs/CHANGELOG.md#Changelog)
  23. [更新日志](https://github.com/PeakRacing/nes/blob/master/docs/CHANGELOG.md#更新日志)
  24. draft: false
  25. prerelease: false
  26. macos:
  27. needs: release
  28. strategy:
  29. matrix:
  30. os: [macos-latest]
  31. arch: [arm64]
  32. runs-on: ${{ matrix.os }}
  33. concurrency:
  34. group: ${{ matrix.os }}-${{ matrix.arch }}
  35. cancel-in-progress: true
  36. steps:
  37. - uses: actions/checkout@v4
  38. - name: prepare software
  39. run: |
  40. ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  41. brew update
  42. brew install make sdl2 xmake
  43. xmake update
  44. - name: build
  45. run: |
  46. xrepo update-repo
  47. cd ./sdl/sdl2
  48. xmake -v -y
  49. cp build/macosx/${{ matrix.arch }}/release/nes ../../nes-macos-${{ matrix.arch }}.AppImage
  50. cd ../../
  51. - name: Publish file to release
  52. uses: svenstaro/upload-release-action@v2
  53. env:
  54. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  55. with:
  56. repo_token: ${{ secrets.GITHUB_TOKEN }}
  57. file_glob: true
  58. file: nes-macos-${{ matrix.arch }}.AppImage
  59. tag: ${{ github.ref }}
  60. overwrite: true
  61. linux:
  62. needs: release
  63. strategy:
  64. matrix:
  65. os: [ubuntu-latest]
  66. arch: [x86_64]
  67. runs-on: ${{ matrix.os }}
  68. concurrency:
  69. group: ${{ matrix.os }}-${{ matrix.arch }}
  70. cancel-in-progress: true
  71. steps:
  72. - uses: actions/checkout@v4
  73. - name: prepare software
  74. run: |
  75. sudo add-apt-repository ppa:xmake-io/xmake -y
  76. # sudo dpkg --add-architecture i386
  77. sudo apt-get update -y
  78. # sudo apt-get install -y lib32z1 libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386
  79. sudo apt-get install -y git make gcc p7zip-full libsdl2-dev xmake
  80. sudo apt-get upgrade -y
  81. xmake update
  82. - name: build
  83. run: |
  84. xrepo update-repo
  85. cd ./sdl/sdl2
  86. xmake -v -y
  87. cp build/linux/${{ matrix.arch }}/release/nes ../../nes-linux-${{ matrix.arch }}.bin
  88. cd ../../
  89. - name: Publish file to release
  90. uses: svenstaro/upload-release-action@v2
  91. env:
  92. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  93. with:
  94. repo_token: ${{ secrets.GITHUB_TOKEN }}
  95. file_glob: true
  96. file: nes-linux-${{ matrix.arch }}.bin
  97. tag: ${{ github.ref }}
  98. overwrite: true
  99. windows:
  100. needs: release
  101. strategy:
  102. matrix:
  103. os: [windows-latest]
  104. arch: [x64]
  105. runs-on: ${{ matrix.os }}
  106. concurrency:
  107. group: ${{ matrix.os }}-${{ matrix.arch }}
  108. cancel-in-progress: true
  109. steps:
  110. - uses: actions/checkout@v4
  111. - name: Set up MSVC
  112. uses: ilammy/msvc-dev-cmd@v1
  113. - name: prepare software
  114. uses: xmake-io/github-action-setup-xmake@v1
  115. with:
  116. xmake-version: latest
  117. - name: build
  118. run: |
  119. xrepo update-repo
  120. cd ./sdl/sdl2
  121. xmake -v -y
  122. cp build/windows/${{ matrix.arch }}/release/nes.exe ../../nes-windows-${{ matrix.arch }}.exe
  123. cd ../../
  124. - name: Publish file to release
  125. uses: svenstaro/upload-release-action@v2
  126. env:
  127. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  128. with:
  129. repo_token: ${{ secrets.GITHUB_TOKEN }}
  130. file_glob: true
  131. file: nes-windows-${{ matrix.arch }}.exe
  132. tag: ${{ github.ref }}
  133. overwrite: true