|
|
@@ -0,0 +1,88 @@
|
|
|
+name: RackPeek Release
|
|
|
+
|
|
|
+on:
|
|
|
+ workflow_dispatch:
|
|
|
+ inputs:
|
|
|
+ version:
|
|
|
+ description: "RackPeek version (e.g. 0.1.0)"
|
|
|
+ required: true
|
|
|
+ default: "0.0.1"
|
|
|
+
|
|
|
+permissions:
|
|
|
+ contents: write
|
|
|
+
|
|
|
+jobs:
|
|
|
+ build:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - name: Checkout repository
|
|
|
+ uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - name: Setup .NET
|
|
|
+ uses: actions/setup-dotnet@v4
|
|
|
+ with:
|
|
|
+ dotnet-version: 10.0.x
|
|
|
+
|
|
|
+ - name: Set version variables
|
|
|
+ run: |
|
|
|
+ VERSION="${{ github.event.inputs.version }}"
|
|
|
+ FORMATTED_VERSION="${VERSION//./_}"
|
|
|
+ echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
|
+ echo "FORMATTED_VERSION=$FORMATTED_VERSION" >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Publish RackPeek (all platforms)
|
|
|
+ run: |
|
|
|
+ OUTPUT_DIR="${{ github.workspace }}/output"
|
|
|
+ mkdir -p "$OUTPUT_DIR"
|
|
|
+
|
|
|
+ PROJECT="./RackPeek/RackPeek.csproj"
|
|
|
+ APP_NAME="rackpeek"
|
|
|
+
|
|
|
+ PLATFORMS=(
|
|
|
+ "win-x64"
|
|
|
+ "linux-x64"
|
|
|
+ "linux-arm64"
|
|
|
+ "osx-x64"
|
|
|
+ "osx-arm64"
|
|
|
+ )
|
|
|
+
|
|
|
+ for PLATFORM in "${PLATFORMS[@]}"; do
|
|
|
+ echo "Publishing for $PLATFORM"
|
|
|
+
|
|
|
+ PUBLISH_DIR="$OUTPUT_DIR/publish-$PLATFORM"
|
|
|
+ dotnet publish "$PROJECT" \
|
|
|
+ -c Release \
|
|
|
+ -r "$PLATFORM" \
|
|
|
+ --self-contained true \
|
|
|
+ -p:PublishSingleFile=true \
|
|
|
+ -p:PublishTrimmed=true \
|
|
|
+ -o "$PUBLISH_DIR"
|
|
|
+
|
|
|
+ if [[ "$PLATFORM" == win-* ]]; then
|
|
|
+ mv "$PUBLISH_DIR/RackPeek.exe" \
|
|
|
+ "$OUTPUT_DIR/${APP_NAME}_${FORMATTED_VERSION}_${PLATFORM}.exe"
|
|
|
+ else
|
|
|
+ mv "$PUBLISH_DIR/RackPeek" \
|
|
|
+ "$OUTPUT_DIR/${APP_NAME}_${FORMATTED_VERSION}_${PLATFORM}"
|
|
|
+ fi
|
|
|
+ done
|
|
|
+
|
|
|
+ - name: Verify output artifacts
|
|
|
+ run: |
|
|
|
+ ls -lh ${{ github.workspace }}/output
|
|
|
+
|
|
|
+ - name: Create GitHub Release
|
|
|
+ uses: softprops/action-gh-release@v1
|
|
|
+ env:
|
|
|
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
+ with:
|
|
|
+ tag_name: "RackPeek-${{ env.VERSION }}"
|
|
|
+ name: "RackPeek ${{ env.VERSION }}"
|
|
|
+ draft: true
|
|
|
+ files: |
|
|
|
+ output/rackpeek_${{ env.FORMATTED_VERSION }}_win-x64.exe
|
|
|
+ output/rackpeek_${{ env.FORMATTED_VERSION }}_linux-x64
|
|
|
+ output/rackpeek_${{ env.FORMATTED_VERSION }}_linux-arm64
|
|
|
+ output/rackpeek_${{ env.FORMATTED_VERSION }}_osx-x64
|
|
|
+ output/rackpeek_${{ env.FORMATTED_VERSION }}_osx-arm64
|