diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
new file mode 100644
index 0000000..553a690
--- /dev/null
+++ b/.github/workflows/dotnet.yml
@@ -0,0 +1,33 @@
+name: .NET
+
+on:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+
+jobs:
+ build:
+ name: "Build & Test"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v2
+ with:
+ dotnet-version: 6.0.x
+
+ - name: Add NuGet source
+ run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build --no-restore --configuration Release
+
+ - name: Test
+ run: dotnet test --no-build --verbosity normal --configuration Release
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
new file mode 100644
index 0000000..e516c21
--- /dev/null
+++ b/.github/workflows/nightly.yml
@@ -0,0 +1,40 @@
+name: Publish Nightly
+
+on:
+ push:
+ branches:
+ - develop
+
+jobs:
+ nightly:
+ runs-on: ubuntu-latest
+ if: "!contains(format('{0} {1}', github.event.head_commit.message, github.event.pull_request.title), '[ci-skip]')"
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v2
+ with:
+ dotnet-version: 6.0.x
+
+ - name: Add GitHub NuGet source
+ run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build -c Debug
+
+ - name: Build NuGet package
+ run: |
+ mkdir build
+ dotnet pack TcpDotNet -p:SymbolPackageFormat=snupkg --include-symbols --include-source -o build -p:VersionSuffix='nightly' -p:BuildNumber=${{ github.run_number }}
+
+ - name: Push NuGet Package to GitHub
+ run: dotnet nuget push "build/*" --source "github" --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
+
+ # - name: Push NuGet Package to nuget.org
+ # run: dotnet nuget push "build/*" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate
diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml
new file mode 100644
index 0000000..4afd0de
--- /dev/null
+++ b/.github/workflows/prerelease.yml
@@ -0,0 +1,46 @@
+name: Tagged Pre-Release
+
+on:
+ push:
+ tags:
+ - "v[0-9]+.[0-9]+.[0-9]+-*"
+
+jobs:
+ prerelease:
+ name: "Tagged Pre-Release"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v2
+ with:
+ dotnet-version: 6.0.x
+
+ - name: Add GitHub NuGet source
+ run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build -c Release
+
+ - name: Build NuGet package
+ run: |
+ mkdir build
+ dotnet pack TcpDotNet -p:SymbolPackageFormat=snupkg --include-symbols --include-source -o build -p:VersionSuffix='prerelease' -p:BuildNumber=${{ github.run_number }}
+
+ - name: Push NuGet Package to GitHub
+ run: dotnet nuget push "build/*" --source "github" --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
+
+ # - name: Push NuGet Package to nuget.org
+ # run: dotnet nuget push "build/*" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate
+
+ - name: Create Release
+ uses: "marvinpinto/action-automatic-releases@latest"
+ with:
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ prerelease: true
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..238e964
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,46 @@
+name: Tagged Release
+
+on:
+ push:
+ tags:
+ - "v[0-9]+.[0-9]+.[0-9]+"
+
+jobs:
+ release:
+ name: "Tagged Release"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v2
+ with:
+ dotnet-version: 6.0.x
+
+ - name: Add GitHub NuGet source
+ run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
+
+ - name: Restore dependencies
+ run: dotnet restore
+
+ - name: Build
+ run: dotnet build -c Release
+
+ - name: Build NuGet package
+ run: |
+ mkdir build
+ dotnet pack TcpDotNet -p:SymbolPackageFormat=snupkg --include-symbols --include-source -o build
+
+ - name: Push NuGet Package to GitHub
+ run: dotnet nuget push "build/*" --source "github" --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
+
+ # - name: Push NuGet Package to nuget.org
+ # run: dotnet nuget push "build/*" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate
+
+ - name: Create Release
+ uses: "marvinpinto/action-automatic-releases@latest"
+ with:
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ prerelease: false
diff --git a/TcpDotNet/TcpDotNet.csproj b/TcpDotNet/TcpDotNet.csproj
index 1e1a5e6..2a6957e 100644
--- a/TcpDotNet/TcpDotNet.csproj
+++ b/TcpDotNet/TcpDotNet.csproj
@@ -5,10 +5,45 @@
enable
enable
10
+ true
+ Oliver Booth
+ en
+ https://github.com/oliverbooth/TcpDotNet
+ git
+ A .NET Standard 2.1 networking library with support for AES encryption.
+ LICENSE.md
+ dotnet networking encryption tcp
+ 0.1.0
+ true
+
+
+
+ $(VersionPrefix)-$(VersionSuffix)
+ $(VersionPrefix).0
+ $(VersionPrefix).0
+
+
+
+ $(VersionPrefix)-$(VersionSuffix).$(BuildNumber)
+ $(VersionPrefix).$(BuildNumber)
+ $(VersionPrefix).$(BuildNumber)
+
+
+
+ $(VersionPrefix)
+ $(VersionPrefix).0
+ $(VersionPrefix).0
+
+
+ True
+
+
+
+