4
0

publish-cli.yml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. name: CLI Publish
  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.3"
  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. -o "$PUBLISH_DIR"
  49. if [[ "$PLATFORM" == win-* ]]; then
  50. mv "$PUBLISH_DIR/RackPeek.exe" \
  51. "$OUTPUT_DIR/${APP_NAME}_${FORMATTED_VERSION}_${PLATFORM}.exe"
  52. else
  53. mv "$PUBLISH_DIR/RackPeek" \
  54. "$OUTPUT_DIR/${APP_NAME}_${FORMATTED_VERSION}_${PLATFORM}"
  55. fi
  56. done
  57. - name: Verify output artifacts
  58. run: |
  59. ls -lh ${{ github.workspace }}/output
  60. - name: Create GitHub Release
  61. uses: softprops/action-gh-release@v1
  62. env:
  63. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  64. with:
  65. tag_name: "RackPeek-${{ env.VERSION }}"
  66. name: "RackPeek ${{ env.VERSION }}"
  67. draft: true
  68. files: |
  69. output/rackpeek_${{ env.FORMATTED_VERSION }}_win-x64.exe
  70. output/rackpeek_${{ env.FORMATTED_VERSION }}_linux-x64
  71. output/rackpeek_${{ env.FORMATTED_VERSION }}_linux-arm64
  72. output/rackpeek_${{ env.FORMATTED_VERSION }}_osx-x64
  73. output/rackpeek_${{ env.FORMATTED_VERSION }}_osx-arm64