publish.yml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. name: RackPeek Release
  2. on:
  3. workflow_dispatch:
  4. inputs:
  5. version:
  6. description: "RackPeek version (e.g. 0.1.0)"
  7. required: true
  8. default: "0.0.1"
  9. permissions:
  10. contents: write
  11. jobs:
  12. build:
  13. runs-on: ubuntu-latest
  14. steps:
  15. - name: Checkout repository
  16. uses: actions/checkout@v4
  17. - name: Setup .NET
  18. uses: actions/setup-dotnet@v4
  19. with:
  20. dotnet-version: 10.0.x
  21. - name: Set version variables
  22. run: |
  23. VERSION="${{ github.event.inputs.version }}"
  24. FORMATTED_VERSION="${VERSION//./_}"
  25. echo "VERSION=$VERSION" >> $GITHUB_ENV
  26. echo "FORMATTED_VERSION=$FORMATTED_VERSION" >> $GITHUB_ENV
  27. - name: Publish RackPeek (all platforms)
  28. run: |
  29. OUTPUT_DIR="${{ github.workspace }}/output"
  30. mkdir -p "$OUTPUT_DIR"
  31. PROJECT="./RackPeek/RackPeek.csproj"
  32. APP_NAME="rackpeek"
  33. PLATFORMS=(
  34. "win-x64"
  35. "linux-x64"
  36. "linux-arm64"
  37. "osx-x64"
  38. "osx-arm64"
  39. )
  40. for PLATFORM in "${PLATFORMS[@]}"; do
  41. echo "Publishing for $PLATFORM"
  42. PUBLISH_DIR="$OUTPUT_DIR/publish-$PLATFORM"
  43. dotnet publish "$PROJECT" \
  44. -c Release \
  45. -r "$PLATFORM" \
  46. --self-contained true \
  47. -p:PublishSingleFile=true \
  48. -p:PublishTrimmed=true \
  49. -o "$PUBLISH_DIR"
  50. if [[ "$PLATFORM" == win-* ]]; then
  51. mv "$PUBLISH_DIR/RackPeek.exe" \
  52. "$OUTPUT_DIR/${APP_NAME}_${FORMATTED_VERSION}_${PLATFORM}.exe"
  53. else
  54. mv "$PUBLISH_DIR/RackPeek" \
  55. "$OUTPUT_DIR/${APP_NAME}_${FORMATTED_VERSION}_${PLATFORM}"
  56. fi
  57. done
  58. - name: Verify output artifacts
  59. run: |
  60. ls -lh ${{ github.workspace }}/output
  61. - name: Create GitHub Release
  62. uses: softprops/action-gh-release@v1
  63. env:
  64. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  65. with:
  66. tag_name: "RackPeek-${{ env.VERSION }}"
  67. name: "RackPeek ${{ env.VERSION }}"
  68. draft: true
  69. files: |
  70. output/rackpeek_${{ env.FORMATTED_VERSION }}_win-x64.exe
  71. output/rackpeek_${{ env.FORMATTED_VERSION }}_linux-x64
  72. output/rackpeek_${{ env.FORMATTED_VERSION }}_linux-arm64
  73. output/rackpeek_${{ env.FORMATTED_VERSION }}_osx-x64
  74. output/rackpeek_${{ env.FORMATTED_VERSION }}_osx-arm64