From edb1fc5cde00a6233de42767b672b3db32c62b78 Mon Sep 17 00:00:00 2001
From: bparks13 <bap@open-ephys.org>
Date: Tue, 12 Nov 2024 11:55:21 -0500
Subject: [PATCH] Point actions to remote workflow

---
 .github/workflows/build.yml | 97 +++++--------------------------------
 Directory.Build.props       |  2 +-
 2 files changed, 12 insertions(+), 87 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 04f1da9..20cbd1c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,91 +1,16 @@
-name: Build
- 
+name: Build .NET and Publish to Nuget
+
+# This workflow will run when: 1) any commit is pushed to main, 2) any pull request is opened that will merge to main, and 3) whenever a new release is published.
 on:
   push:
-    branches: [main]
+    branches: [main] # 1) Generates a package on Github that is a pre-release package, and is typically named X.Y.Z-main-ci000, where X/Y/Z are the semantic version numbers, and ci000 is incremented for each action that is run, guaranteeing a unique package name
   pull_request:
+    branches: [main] # 2) Does not generate a package, but does check that the semantic version number is increasing, and that the package builds correctly in all matrix configurations (Ubuntu / Windows and Release / Debug)
   release:
-    types: [published]
-env:
-  DOTNET_NOLOGO: true
-  DOTNET_CLI_TELEMETRY_OPTOUT: true
-  DOTNET_GENERATE_ASPNET_CERTIFICATE: false
-  ContinuousIntegrationBuild: true
-  CiRunNumber: ${{ github.run_number }}
-  CiRunPushSuffix: ${{ github.ref_name }}-ci${{ github.run_number }}
-  CiRunPullSuffix: pull-${{ github.event.number }}-ci${{ github.run_number }}
-jobs:
-  setup:
-    runs-on: ubuntu-latest
-    outputs:
-      build-suffix: ${{ steps.setup-build.outputs.build-suffix }}
-    steps:
-      - name: Setup Build
-        id: setup-build
-        run: echo "build-suffix=${{ github.event_name == 'push' && env.CiRunPushSuffix || github.event_name == 'pull_request' && env.CiRunPullSuffix || null }}" >> "$GITHUB_OUTPUT"
-
-  build:
-    needs: [setup]
-    strategy:
-      fail-fast: false
-      matrix:
-        configuration: [debug, release]
-        os: [ubuntu-latest, windows-latest]
-        include:
-          - os: windows-latest
-            configuration: release
-            collect-packages: true
-    runs-on: ${{ matrix.os }}
-    env:
-      CiBuildVersionSuffix: ${{ needs.setup.outputs.build-suffix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Setup .NET
-        uses: actions/setup-dotnet@v4
-        with:
-          dotnet-version: 8.x
-      
-      - name: Restore
-        run: dotnet restore
-  
-      - name: Build
-        run: dotnet build --no-restore --configuration ${{ matrix.configuration }}
-
-      - name: Pack
-        id: pack
-        if: matrix.collect-packages
-        run: dotnet pack --no-build --configuration ${{ matrix.configuration }}
+    types: [published] # 3) Generates a package that is a full release package (X.Y.Z) that is published to Github and NuGet automatically
 
-      - name: Collect packages
-        uses: actions/upload-artifact@v4
-        if: matrix.collect-packages && steps.pack.outcome == 'success' && always()
-        with:
-          name: Packages
-          if-no-files-found: error
-          path: artifacts/package/${{matrix.configuration}}/**
-
-  publish-github:
-    runs-on: ubuntu-latest
-    permissions:
-      packages: write
-    needs: [build]
-    if: github.event_name == 'push' || github.event_name == 'release'
-    steps:
-      - name: Setup .NET
-        uses: actions/setup-dotnet@v4
-        with:
-          dotnet-version: 8.x
-
-      - name: Download packages
-        uses: actions/download-artifact@v4
-        with:
-          name: Packages
-          path: Packages
-
-      - name: Push to GitHub Packages
-        run: dotnet nuget push "Packages/*.nupkg" --skip-duplicate --no-symbols --api-key ${{secrets.GITHUB_TOKEN}} --source https://nuget.pkg.github.com/${{github.repository_owner}}
-        env:
-          # This is a workaround for https://github.com/NuGet/Home/issues/9775
-          DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER: 0
\ No newline at end of file
+jobs:
+  build_and_publish:
+    uses: open-ephys/github-actions/.github/workflows/build_dotnet_publish_nuget.yml@main
+    secrets:
+      NUGET_APIKEY: ${{ secrets.NUGET_APIKEY }}
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index 27d4837..e5b3a44 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -13,7 +13,7 @@
     <PackageLicenseFile>LICENSE</PackageLicenseFile>
     <UseArtifactsOutput>true</UseArtifactsOutput>
     <PackageIcon>icon.png</PackageIcon>
-    <VersionPrefix>0.2.0</VersionPrefix>
+    <VersionPrefix>0.2.1</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <LangVersion>9.0</LangVersion>
     <Features>strict</Features>