CI debug commit

This commit is contained in:
Jordan Brown
2020-07-30 14:47:06 -04:00
parent 6c5fed96c1
commit 189cda0a32
+9 -767
View File
@@ -18,773 +18,15 @@ env:
TGS4_TEST_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
dmapi-build:
name: Build DMAPI
env:
BYOND_MAJOR: 513
BYOND_MINOR: 1527
debug-echo:
name: Echo Context Stuff
runs-on: ubuntu-latest
steps:
- name: Install x86 libc Dependencies
- name: Echo
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y libc6-i386 libstdc++6:i386
- name: Install BYOND
if: steps.cache-byond.outputs.cache-hit != 'true'
run: |
echo "Setting up BYOND."
mkdir -p "$HOME/BYOND-${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }}"
cd "$HOME/BYOND-${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }}"
curl "http://www.byond.com/download/build/${{ env.BYOND_MAJOR }}/${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }}_byond_linux.zip" -o byond.zip
unzip byond.zip
cd byond
make here
exit 0
- name: Checkout
uses: actions/checkout@v1
- name: Build DMAPI Test Project
run: |
set -e
retval=1
source $HOME/BYOND-${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }}/byond/bin/byondsetup
if hash DreamMaker 2>/dev/null
then
DreamMaker tests/DMAPI/BasicOperation/basic_operation_test.dme 2>&1 | tee result.log
retval=$?
if ! grep '\- 0 errors, 0 warnings' result.log
then
retval=1
fi
else
echo "Couldn't find the DreamMaker executable, aborting."
retval=2
fi
exit $retval
dox-build:
name: Build Doxygen Site
runs-on: ubuntu-latest
env:
DOXDIR: ~/tgsdox
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Patch Doxyfile
run: |
VERSION=$(cat "build/Version.props" | grep -oPm1 "(?<=<TgsCoreVersion>)[^<]+")
echo -e "\nPROJECT_NUMBER = $VERSION\nINPUT = .\nOUTPUT_DIRECTORY = $DOXDIR\nPROJECT_LOGO = ./build/tgs.ico\nHAVE_DOT=YES" >> "docs/Doxyfile"
- name: Create DOXDIR
if: github.event_name != 'push' || github.ref != 'dev'
run: mkdir -p $DOXDIR
- name: Prep gh-pages Repository
if: github.event_name == 'push' && github.event.ref == 'dev'
run: |
git clone -b gh-pages --single-branch "https://git@github.com/tgstation/tgstation-server" "$DOXDIR"
rm -r "$DOXDIR/*"
- name: Doxygen Build
uses: mattnotmitt/doxygen-action@v1
with:
doxyfile-path: 'docs/Doxyfile'
- name: gh-pages push
if: github.event_name == 'push' && github.event.ref == 'dev'
run: |
cd $DOXDIR
git config --global push.default simple
git config user.name "tgstation-server"
git config user.email "tgstation-server@tgstation13.org"
echo '# THIS BRANCH IS AUTO GENERATED BY GITHUB ACTIONS' > README.md
# Need to create a .nojekyll file to allow filenames starting with an underscore
# to be seen on the gh-pages site. Therefore creating an empty .nojekyll file.
echo "" > .nojekyll
git add --all
git commit -m "Deploy code docs to GitHub Pages for Travis build $TRAVIS_BUILD_NUMBER" -m "Commit: $TRAVIS_COMMIT"
git push -f "https://${{ secrets.GITHUB_TOKEN }}}@$GITHUB_URL" 2>&1 | /dev/null
docker-build:
name: Build Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Build Docker Image
run: docker build . -f build/Dockerfile
linux-unit-tests:
name: Linux Unit Tests
strategy:
matrix:
configuration: [ 'Debug', 'Release' ]
runs-on: ubuntu-latest
steps:
- name: Install Node 12.X
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Setup dotnet 3.1.X
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.x
- name: Checkout
uses: actions/checkout@v1
- name: Build
run: dotnet build -c ${{ matrix.configuration }}NoService
- name: Run Unit Tests
run: sudo dotnet test tgstation-server.sln --no-build --filter FullyQualifiedName!~IntegrationTest -l "console;verbosity=detailed;noprogress=true" -c ${{ matrix.configuration }}NoService --collect:"XPlat Code Coverage" --settings build/coverlet.runsettings -r ./TestResults
- name: Store Code Coverage
uses: actions/upload-artifact@v2
with:
name: linux-unit-test-coverage-${{ matrix.configuration }}
path: ./TestResults/
windows-unit-tests:
name: Windows Unit Tests
strategy:
matrix:
configuration: [ 'Debug', 'Release' ]
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Build
run: dotnet build -c ${{ matrix.configuration }}
- name: Run Unit Tests
run: dotnet test tgstation-server.sln --no-build --filter FullyQualifiedName!~IntegrationTest -l "console;verbosity=detailed;noprogress=true" -c ${{ matrix.configuration }} --collect:"XPlat Code Coverage" --settings build/coverlet.runsettings -r ./TestResults
- name: Store Code Coverage
uses: actions/upload-artifact@v2
with:
name: windows-unit-test-coverage-${{ matrix.configuration }}
path: ./TestResults/
windows-integration-test:
name: Windows Integration Test
needs: dmapi-build
env:
TGS4_TEST_CONNECTION_STRING: Server=(localdb)\MSSQLLocalDB;Integrated Security=true;Initial Catalog=TGS_Test;Application Name=tgstation-server
TGS4_TEST_DATABASE_TYPE: SqlServer
TGS4_TEST_DUMP_API_SPEC: yes
strategy:
matrix:
watchdog-type: [ 'Basic', 'System' ]
configuration: [ 'Debug', 'Release' ]
runs-on: windows-latest
steps:
- name: Set General__UseBasicWatchdog
if: ${{ matrix.watchdog-type == 'Basic' }}
run: echo "::set-env name=General__UseBasicWatchdog::true"
- name: Checkout
uses: actions/checkout@v1
- name: Set TGS4_TEST_PULL_REQUEST_NUMBER
if: ${{ github.event_name == 'pull_request' }}
run: echo "::set-env name=TGS4_TEST_PULL_REQUEST_NUMBER::${{ github.event.number }}"
- name: Run Integration Test
run: |
cd tests/Tgstation.Server.Tests
Start-Sleep -Seconds 10
dotnet test -c ${{ matrix.configuration }} -l "console;verbosity=detailed;noprogress=true" --collect:"XPlat Code Coverage" --settings ../../build/coverlet.runsettings -r ./TestResults
- name: Store Code Coverage
uses: actions/upload-artifact@v2
with:
name: windows-integration-test-coverage-${{ matrix.configuration }}-${{ matrix.watchdog-type }}
path: tests/Tgstation.Server.Tests/TestResults/
- name: Store OpenAPI Spec
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'System' }}
uses: actions/upload-artifact@v2
with:
name: openapi-spec
path: C:/swagger.json
- name: Package Server Service
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'Basic' }}
run: |
cd src/Tgstation.Server.Host.Service
dotnet publish -c ${{ matrix.configuration }} -o ../../Artifacts/Service
cd ../Tgstation.Server.Host
dotnet publish -c ${{ matrix.configuration }} --no-build -o ../../Artifacts/Service/lib/Default
- name: Store Server Service
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'Basic' }}
uses: actions/upload-artifact@v2
with:
name: ServerService
path: Artifacts/Service/
linux-integration-tests:
name: Linux Integration Tests
needs: dmapi-build
services: # We start all dbs here so we can just code the stuff once
postgres:
image: postgres
ports:
- 5432:5432
env:
POSTGRES_PASSWORD: postgres
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mariadb:
image: mariadb
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: mariadb
options: >-
--health-cmd="mysqladmin ping"
--health-interval=5s
--health-timeout=2s
--health-retries=3
mysql:
image: mysql:5.7.31
ports:
- 3307:3306
env:
MYSQL_ROOT_PASSWORD: mysql
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
strategy:
matrix:
database-type: [ 'Sqlite', 'PostgresSql', 'MariaDB', 'MySql' ]
watchdog-type: [ 'Basic', 'System' ]
configuration: [ 'Debug', 'Release' ]
runs-on: ubuntu-latest
steps:
- name: Disable ptrace_scope
run: echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
- name: Install Native Dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y libc6-i386 libstdc++6:i386 gdb
- name: Install Node 12.X
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ matrix.dotnet }}
- name: Set Sqlite Connection Info
if: ${{ matrix.database-type == 'Sqlite' }}
run: |
echo "::set-env name=TGS4_TEST_DATABASE_TYPE::Sqlite"
echo "::set-env name=TGS4_TEST_CONNECTION_STRING::Data Source=TravisTestDB.sqlite3;Mode=ReadWriteCreate"
- name: Set PostgresSql Connection Info
if: ${{ matrix.database-type == 'PostgresSql' }}
run: |
echo "::set-env name=TGS4_TEST_DATABASE_TYPE::PostgresSql"
echo "::set-env name=TGS4_TEST_CONNECTION_STRING::Application Name=tgstation-server;Host=127.0.0.1;Username=postgres;Password=postgres;Database=TGS_Test"
- name: Set MariaDB Connection Info
if: ${{ matrix.database-type == 'MariaDB' }}
run: |
echo "::set-env name=TGS4_TEST_DATABASE_TYPE::MariaDB"
echo "::set-env name=TGS4_TEST_CONNECTION_STRING::Server=127.0.0.1;uid=root;pwd=mariadb;database=tgs_test"
- name: Set MySQL Connection Info
if: ${{ matrix.database-type == 'MySql' }}
run: |
echo "::set-env name=TGS4_TEST_DATABASE_TYPE::MySql"
echo "::set-env name=TGS4_TEST_CONNECTION_STRING::Server=127.0.0.1;Port=3307;uid=root;pwd=mysql;database=tgs_test"
echo "::set-env name=Database__ServerVersion::5.7.31"
- name: Set General__UseBasicWatchdog
if: ${{ matrix.watchdog-type == 'Basic' }}
run: echo "::set-env name=General__UseBasicWatchdog::true"
- name: Checkout
uses: actions/checkout@v1
- name: Set TGS4_TEST_PULL_REQUEST_NUMBER
if: ${{ github.event_name == 'pull_request' }}
run: echo "::set-env name=TGS4_TEST_PULL_REQUEST_NUMBER::${{ github.event.number }}"
- name: Run Integration Test
run: |
cd tests/Tgstation.Server.Tests
sleep 10
dotnet test -c ${{ matrix.configuration }} -l "console;verbosity=detailed;noprogress=true" --collect:"XPlat Code Coverage" --settings ../../build/coverlet.runsettings -r ./TestResults
- name: Store Code Coverage
uses: actions/upload-artifact@v2
with:
name: linux-integration-test-coverage-${{ matrix.configuration }}-${{ matrix.watchdog-type }}-${{ matrix.database-type }}
path: tests/Tgstation.Server.Tests/TestResults/
- name: Package Server Console
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'System' && matrix.database-type == 'MariaDB' }}
run: |
cd src/Tgstation.Server.Host.Console
dotnet publish -c ${{ matrix.configuration }} -o ../../Artifacts/Console
cd ../Tgstation.Server.Host
dotnet publish -c ${{ matrix.configuration }} --no-build -o ../../Artifacts/Console/lib/Default
- name: Package Server Update Package
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'System' && matrix.database-type == 'PostgresSql' }}
run: |
cd src/Tgstation.Server.Host
dotnet publish -c ${{ matrix.configuration }} --no-build -o ../../Artifacts/ServerUpdate
- name: Store Server Console
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'System' && matrix.database-type == 'MariaDB' }}
uses: actions/upload-artifact@v2
with:
name: ServerConsole
path: Artifacts/Console/
- name: Store Server Update Package
if: ${{ matrix.configuration == 'Release' && matrix.watchdog-type == 'System' && matrix.database-type == 'PostgresSql' }}
uses: actions/upload-artifact@v2
with:
name: ServerUpdatePackage
path: Artifacts/ServerUpdate/
validate-openapi-spec:
name: OpenAPI Spec Validation
needs: windows-integration-test
runs-on: ubuntu-latest
steps:
- name: Install Node 12.X
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install IBM OpenAPI Validator
run: npm i -g ibm-openapi-validator
- name: Checkout
uses: actions/checkout@v1
- name: Retrieve OpenAPI Spec
uses: actions/download-artifact@v2
with:
name: openapi-spec
path: ./swagger.json
- name: Lint OpenAPI Spec
run: npx lint-openapi -p -c build/OpenApiValidationSettings.json swagger.json
upload-code-coverage:
name: Upload Code Coverage
needs: [linux-unit-tests, linux-integration-tests, windows-unit-tests, windows-integration-test]
runs-on: ubuntu-latest
steps:
- name: Checkout for .codecov.yml
uses: actions/checkout@v1
- name: Retrieve Linux Unit Test Coverage (Debug)
uses: actions/download-artifact@v2
with:
name: linux-unit-test-coverage-Debug
path: ./code_coverage/unit_tests/linux_unit_tests_debug
- name: Retrieve Linux Unit Test Coverage (Release)
uses: actions/download-artifact@v2
with:
name: linux-unit-test-coverage-Release
path: ./code_coverage/unit_tests/linux_unit_tests_release
- name: Retrieve Linux Integration Test Coverage (Debug, Basic, Sqlite)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-Basic-Sqlite
path: ./code_coverage/integration_tests/linux_integration_tests_debug_basic_sqlite
- name: Retrieve Linux Integration Test Coverage (Release, Basic, Sqlite)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-Basic-Sqlite
path: ./code_coverage/integration_tests/linux_integration_tests_release_basic_sqlite
- name: Retrieve Linux Integration Test Coverage (Debug, System, Sqlite)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-System-Sqlite
path: ./code_coverage/integration_tests/linux_integration_tests_debug_system_sqlite
- name: Retrieve Linux Integration Test Coverage (Release, System, Sqlite)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-System-Sqlite
path: ./code_coverage/integration_tests/linux_integration_tests_release_system_sqlite
- name: Retrieve Linux Integration Test Coverage (Debug, Basic, PostgresSql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-Basic-PostgresSql
path: ./code_coverage/integration_tests/linux_integration_tests_debug_basic_postgressql
- name: Retrieve Linux Integration Test Coverage (Release, Basic, PostgresSql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-Basic-PostgresSql
path: ./code_coverage/integration_tests/linux_integration_tests_release_basic_postgressql
- name: Retrieve Linux Integration Test Coverage (Debug, System, PostgresSql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-System-PostgresSql
path: ./code_coverage/integration_tests/linux_integration_tests_debug_system_postgressql
- name: Retrieve Linux Integration Test Coverage (Release, System, PostgresSql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-System-PostgresSql
path: ./code_coverage/integration_tests/linux_integration_tests_release_system_mariadb
- name: Retrieve Linux Integration Test Coverage (Debug, Basic, MariaDB)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-Basic-MariaDB
path: ./code_coverage/integration_tests/linux_integration_tests_debug_basic_mariadb
- name: Retrieve Linux Integration Test Coverage (Release, Basic, MariaDB)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-Basic-MariaDB
path: ./code_coverage/integration_tests/linux_integration_tests_release_basic_mariadb
- name: Retrieve Linux Integration Test Coverage (Debug, System, MariaDB)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-System-MariaDB
path: ./code_coverage/integration_tests/linux_integration_tests_debug_system_mariadb
- name: Retrieve Linux Integration Test Coverage (Release, System, MariaDB)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-System-MariaDB
path: ./code_coverage/integration_tests/linux_integration_tests_release_system_mysql
- name: Retrieve Linux Integration Test Coverage (Debug, Basic, MySql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-Basic-MySql
path: ./code_coverage/integration_tests/linux_integration_tests_debug_basic_mysql
- name: Retrieve Linux Integration Test Coverage (Release, Basic, MySql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-Basic-MySql
path: ./code_coverage/integration_tests/linux_integration_tests_release_basic_mysql
- name: Retrieve Linux Integration Test Coverage (Debug, System, MySql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Debug-System-MySql
path: ./code_coverage/integration_tests/linux_integration_tests_debug_system_mysql
- name: Retrieve Linux Integration Test Coverage (Release, System, MySql)
uses: actions/download-artifact@v2
with:
name: linux-integration-test-coverage-Release-System-MySql
path: ./code_coverage/integration_tests/linux_integration_tests_release_system_mysql
- name: Retrieve Windows Unit Test Coverage (Debug)
uses: actions/download-artifact@v2
with:
name: windows-unit-test-coverage-Debug
path: ./code_coverage/unit_tests/windows_unit_tests_debug
- name: Retrieve Windows Unit Test Coverage (Release)
uses: actions/download-artifact@v2
with:
name: windows-unit-test-coverage-Release
path: ./code_coverage/unit_tests/windows_unit_tests_release
- name: Retrieve Windows Integration Test Coverage (Debug, Basic)
uses: actions/download-artifact@v2
with:
name: windows-integration-test-coverage-Debug-Basic
path: ./code_coverage/integration_tests/windows_integration_tests_debug_basic
- name: Retrieve Windows Integration Test Coverage (Release, Basic)
uses: actions/download-artifact@v2
with:
name: windows-integration-test-coverage-Release-Basic
path: ./code_coverage/integration_tests/windows_integration_tests_release_basic
- name: Retrieve Windows Integration Test Coverage (Debug, System)
uses: actions/download-artifact@v2
with:
name: windows-integration-test-coverage-Debug-System
path: ./code_coverage/integration_tests/windows_integration_tests_debug_system
- name: Retrieve Windows Integration Test Coverage (Release, System)
uses: actions/download-artifact@v2
with:
name: windows-integration-test-coverage-Release-System
path: ./code_coverage/integration_tests/windows_integration_tests_release_system
- name: Upload Unit Test Coverage to CodeCov
uses: codecov/codecov-action@v1
with:
directory: ./code_coverage/unit_tests
flags: unittests
fail_ci_if_error: true
- name: Upload Integration Test Coverage to CodeCov
uses: codecov/codecov-action@v1
with:
directory: ./code_coverage/integration_tests
flags: integration
fail_ci_if_error: true
deploy-http:
name: Deploy HTTP API
needs: [upload-code-coverage, validate-openapi-spec]
runs-on: windows-latest
if: github.event_name == 'push' && github.event.ref == 'master' && contains(github.event.commit.message, '[APIDeploy]')
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Parse API version
shell: powershell
run: |
[XML]$versionXML = Get-Content build/Version.props
$apiVersion = $versionXML.Project.PropertyGroup.TgsApiVersion
Write-Host "::set-env name=TGS_API_VERSION::$apiVersion"
- name: Retrieve OpenAPI Spec
uses: actions/download-artifact@v2
with:
name: openapi-spec
path: swagger.json
- name: Create GitHub Release
uses: juitnow/github-action-create-release@v1
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: api-v${{ env.TGS_API_VERSION }}
release_name: tgstation-server 4 API v${{ env.TGS_API_VERSION }}
body: The TGS HTTP API
committish: ${{ github.event.after }}
- name: Upload OpenApi Spec
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./swagger.json
asset_name: swagger.json
asset_content_type: application/json
deploy-dm:
name: Deploy DreamMaker API
needs: [upload-code-coverage, validate-openapi-spec]
runs-on: windows-latest
if: github.event_name == 'push' && github.event.ref == 'master' && contains(github.event.commit.message, '[DMDeploy]')
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Parse DMAPI version
shell: powershell
run: |
[XML]$versionXML = Get-Content build/Version.props
$dmVersion = $versionXML.Project.PropertyGroup.TgsDmapiVersion
Write-Host "::set-env name=TGS_DM_VERSION::$dmVersion"
- name: Zip DMAPI
shell: powershell
run: Compress-Archive -Path src/DMAPI -DestinationPath DMAPI.zip
- name: Create GitHub Release
uses: juitnow/github-action-create-release@v1
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: dmapi-v${{ env.TGS_DM_VERSION }}
release_name: tgstation-server 4 DMAPI v${{ env.TGS_DM_VERSION }}
body: The TGS DMAPI
committish: ${{ github.event.after }}
- name: Upload DMAPI Artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./DMAPI.zip
asset_name: my-artifact.zip
asset_content_type: application/zip
deploy-client:
name: Deploy Nuget Packages
needs: [upload-code-coverage, validate-openapi-spec]
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.event.ref == 'master' && contains(github.event.commit.message, '[NugetDeploy]')
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Publish API to NuGet
uses: rohith/publish-nuget@v2
with:
PROJECT_FILE_PATH: src/Tgstation.Server.Api/Tgstation.Server.Api.csproj
TAG_COMMIT: false
INCLUDE_SYMBOLS: true
NUGET_KEY: ${{ secrets.NUGET_API_KEY }}
- name: Publish Client to NuGet
uses: rohith/publish-nuget@v2
with:
PROJECT_FILE_PATH: src/Tgstation.Server.Client/Tgstation.Server.Client.csproj
TAG_COMMIT: false
INCLUDE_SYMBOLS: true
NUGET_KEY: ${{ secrets.NUGET_API_KEY }}
deploy-tgs:
name: Deploy tgstation-server
needs: [deploy-dm, deploy-http, deploy-client]
runs-on: windows-latest
if: github.event_name == 'push' && github.event.ref == 'master' && contains(github.event.commit.message, '[TGSDeploy]')
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Parse TGS version
shell: powershell
run: |
[XML]$versionXML = Get-Content build/Version.props
$tgsVersion = $versionXML.Project.PropertyGroup.TgsCoreVersion
Write-Host "::set-env name=TGS_VERSION::$tgsVersion"
- name: Retrieve Server Service
uses: actions/download-artifact@v2
with:
name: ServerService
path: ServerService
- name: Retrieve Server Console
uses: actions/download-artifact@v2
with:
name: ServerConsole
path: ServerConsole
- name: Retrieve Server Update Package
uses: actions/download-artifact@v2
with:
name: ServerUpdatePackage
path: ServerUpdatePackage
- name: Retrieve OpenAPI Spec
uses: actions/download-artifact@v2
with:
name: openapi-spec
path: swagger.json
- name: Zip Artifacts
shell: powershell
run: |
Compress-Archive -Path src/DMAPI -DestinationPath DMAPI.zip
Compress-Archive -Path ServerService -DestinationPath ServerService.zip
Compress-Archive -Path ServerConsole -DestinationPath ServerConsole.zip
Compress-Archive -Path ServerUpdatePackage -DestinationPath ServerUpdatePackage.zip
- name: Generate Release Notes
shell: powershell
run: |
dotnet run -c Release -p tools/ReleaseNotes ${{ env.TGS_VERSION }} build/Version.props
$releaseNotes = [IO.File]::ReadAllText("release_notes.md")
Write-Host "::set-env name=TGS_RELEASE_NOTES::$releaseNotes"
- name: Create GitHub Release
uses: juitnow/github-action-create-release@v1
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: tgstation-server-v${{ env.TGS_VERSION }}
release_name: tgstation-server 4 DMAPI v${{ env.TGS_VERSION }}
body: ${{ env.TGS_RELEASE_NOTES }}
committish: ${{ github.event.after }}
- name: Upload Server Console Artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./ServerConsole.zip
asset_name: ServerConsole.zip
asset_content_type: application/zip
- name: Upload Server Service Artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./ServerService.zip
asset_name: ServerService.zip
asset_content_type: application/zip
- name: Upload DMAPI Artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./DMAPI.zip
asset_name: DMAPI.zip
asset_content_type: application/zip
- name: Upload OpenApi Spec Artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./swagger.json
asset_name: swagger.json
asset_content_type: application/json
- name: Upload Server Update Package Artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./ServerUpdatePackage.zip
asset_name: ServerUpdatePackage.zip
asset_content_type: application/zip
echo ${{ github.event_name }}
echo ${{ github.ref }}
echo ${{ github.event.ref }}
echo ${{ github.event.commit.message }}
echo ${{ github.event.head_commit.message }}
echo ${{ github.event.after.message }}