multiarch-build.yml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. name: Build Release
  2. on:
  3. push:
  4. tags:
  5. - v*
  6. jobs:
  7. build-releases:
  8. strategy:
  9. matrix:
  10. arch:
  11. [
  12. "linux/amd64 x86_64",
  13. "linux/arm/v6 armv6h",
  14. "linux/arm/v7 armv7h",
  15. "linux/arm64 aarch64",
  16. ]
  17. name: Build ${{ matrix.arch }}
  18. runs-on: ubuntu-latest
  19. steps:
  20. - name: Checkout code
  21. uses: actions/checkout@v2
  22. - name: Set up QEMU
  23. uses: docker/setup-qemu-action@v1
  24. with:
  25. platforms: all
  26. - name: Set up Docker Buildx
  27. id: buildx
  28. uses: docker/setup-buildx-action@v1
  29. with:
  30. version: latest
  31. - name: Read info
  32. id: tags
  33. shell: bash
  34. run: |
  35. echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/}
  36. echo ::set-output name=TAG::${GITHUB_REF/refs\/tags\//}
  37. arch="${{ matrix.arch }}"
  38. echo ::set-output name=PLATFORM::${arch%% *}
  39. echo ::set-output name=ARCH::${arch##* }
  40. - name: Build ${{ matrix.arch }} release
  41. run: |
  42. mkdir artifacts
  43. docker buildx build --platform ${{ steps.tags.outputs.platform }} \
  44. --build-arg VERSION=${{ steps.tags.outputs.version }} \
  45. --build-arg ARCH=${{ steps.tags.outputs.arch }} \
  46. --build-arg PREFIX="/usr" \
  47. -t yay:${{ steps.tags.outputs.arch }} . --load
  48. make docker-release ARCH=${{ steps.tags.outputs.arch }} VERSION=${{ steps.tags.outputs.version }} PREFIX="/usr"
  49. mv *.tar.gz artifacts
  50. - uses: actions/upload-artifact@v2
  51. with:
  52. name: yay_${{ steps.tags.outputs.arch }}
  53. path: artifacts
  54. create_release:
  55. name: Create release from this build
  56. needs: [build-releases]
  57. runs-on: ubuntu-latest
  58. steps:
  59. - name: Read info
  60. id: tags
  61. shell: bash
  62. run: |
  63. echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/}
  64. echo ::set-output name=TAG::${GITHUB_REF/refs\/tags\//}
  65. - uses: actions/download-artifact@v2
  66. with:
  67. name: yay_x86_64
  68. - uses: actions/download-artifact@v2
  69. with:
  70. name: yay_armv7h
  71. - uses: actions/download-artifact@v2
  72. with:
  73. name: yay_armv6h
  74. - uses: actions/download-artifact@v2
  75. with:
  76. name: yay_aarch64
  77. - name: Create Release
  78. id: create_release
  79. uses: actions/create-release@master
  80. env:
  81. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  82. with:
  83. tag_name: ${{ steps.tags.outputs.tag }}
  84. release_name: ${{ steps.tags.outputs.tag }}
  85. draft: false
  86. prerelease: false
  87. - name: Upload x86_64 asset
  88. id: upload-release-asset-x86_64
  89. uses: actions/upload-release-asset@v1
  90. env:
  91. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  92. with:
  93. upload_url: ${{ steps.create_release.outputs.upload_url }}
  94. asset_path: ./yay_${{ steps.tags.outputs.version }}_x86_64.tar.gz
  95. asset_name: yay_${{ steps.tags.outputs.version }}_x86_64.tar.gz
  96. asset_content_type: application/tar+gzip
  97. - name: Upload armv7h asset
  98. id: upload-release-asset-armv7h
  99. uses: actions/upload-release-asset@v1
  100. env:
  101. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  102. with:
  103. upload_url: ${{ steps.create_release.outputs.upload_url }}
  104. asset_path: ./yay_${{ steps.tags.outputs.version }}_armv7h.tar.gz
  105. asset_name: yay_${{ steps.tags.outputs.version }}_armv7h.tar.gz
  106. asset_content_type: application/tar+gzip
  107. - name: Upload armv6h asset
  108. id: upload-release-asset-armv6h
  109. uses: actions/upload-release-asset@v1
  110. env:
  111. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  112. with:
  113. upload_url: ${{ steps.create_release.outputs.upload_url }}
  114. asset_path: ./yay_${{ steps.tags.outputs.version }}_armv6h.tar.gz
  115. asset_name: yay_${{ steps.tags.outputs.version }}_armv6h.tar.gz
  116. asset_content_type: application/tar+gzip
  117. - name: Upload aarch64 asset
  118. id: upload-release-asset-aarch64
  119. uses: actions/upload-release-asset@v1
  120. env:
  121. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  122. with:
  123. upload_url: ${{ steps.create_release.outputs.upload_url }}
  124. asset_path: ./yay_${{ steps.tags.outputs.version }}_aarch64.tar.gz
  125. asset_name: yay_${{ steps.tags.outputs.version }}_aarch64.tar.gz
  126. asset_content_type: application/tar+gzip
  127. - name: Checkout
  128. uses: actions/checkout@v2
  129. - name: Release Notary Action
  130. uses: aevea/release-notary@v0.9.1
  131. env:
  132. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}