diff --git a/.github/workflows/ci-suite.yml b/.github/workflows/ci-suite.yml index bc605eaf3a..a5ecd563c0 100644 --- a/.github/workflows/ci-suite.yml +++ b/.github/workflows/ci-suite.yml @@ -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 "(?<=)[^<]+") - 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 }}