name: CLI Publish on: workflow_dispatch: inputs: version: description: "RackPeek version (e.g. 0.1.0)" required: true default: "0.0.3" 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 \ -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