diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..e175a8e8 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,139 @@ +name: ci + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + windows-x64: + runs-on: ${{ matrix.os }}-latest + strategy: + matrix: + architecture: [ x64 ] + configuration: [ debug, release ] + os: [ windows ] + steps: + - uses: actions/checkout@v2 + - run: ./scripts/cibuild.cmd -configuration ${{ matrix.configuration }} -architecture ${{ matrix.architecture }} + shell: cmd + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }}_${{ matrix.configuration }}_${{ matrix.architecture }} + path: | + ./artifacts/bin/**/* + ./artifacts/log/**/* + ./artifacts/pkg/**/* + ./artifacts/tst/**/* + if-no-files-found: error + windows-x86: + runs-on: ${{ matrix.os }}-latest + strategy: + matrix: + architecture: [ x86 ] + configuration: [ debug, release ] + os: [ windows ] + steps: + - uses: actions/checkout@v2 + - run: ./scripts/cibuild.cmd -configuration ${{ matrix.configuration }} -architecture ${{ matrix.architecture }} /p:PlatformTarget=${{ matrix.architecture }} + shell: cmd + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }}_${{ matrix.configuration }}_x86 + path: | + ./artifacts/bin/**/* + ./artifacts/log/**/* + ./artifacts/pkg/**/* + ./artifacts/tst/**/* + if-no-files-found: error + linux-x64: + runs-on: ${{ matrix.os }}-latest + strategy: + matrix: + architecture: [ x64 ] + configuration: [ debug, release ] + os: [ ubuntu ] + steps: + - uses: actions/checkout@v2 + - run: ./scripts/cibuild.sh --configuration ${{ matrix.configuration }} --architecture ${{ matrix.architecture }} + shell: bash + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }}_${{ matrix.configuration }}_${{ matrix.architecture }} + path: | + ./artifacts/bin/**/* + ./artifacts/log/**/* + ./artifacts/pkg/**/* + ./artifacts/tst/**/* + if-no-files-found: error + macos-x64: + runs-on: ${{ matrix.os }}-latest + strategy: + matrix: + architecture: [ x64 ] + configuration: [ debug, release ] + os: [ macos ] + steps: + - uses: actions/checkout@v2 + - run: ./scripts/cibuild.sh --configuration ${{ matrix.configuration }} --architecture ${{ matrix.architecture }} + shell: bash + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }}_${{ matrix.configuration }}_${{ matrix.architecture }} + path: | + ./artifacts/bin/**/* + ./artifacts/log/**/* + ./artifacts/pkg/**/* + ./artifacts/tst/**/* + if-no-files-found: error + build-nuget-preview: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - run: ./scripts/cibuild.cmd -configuration release -architecture x64 + shell: cmd + env: + EXCLUDE_RUN_ID_FROM_PACKAGE: true + EXCLUDE_SUFFIX_FROM_VERSION: false + - uses: actions/upload-artifact@v2 + with: + name: nuget_preview + path: | + ./artifacts/bin/**/* + ./artifacts/log/**/* + ./artifacts/pkg/**/* + ./artifacts/tst/**/* + if-no-files-found: error + build-nuget-release: + runs-on: windows-latest + if: false + steps: + - uses: actions/checkout@v2 + - run: ./scripts/cibuild.cmd -configuration release -architecture x64 + shell: cmd + env: + EXCLUDE_RUN_ID_FROM_PACKAGE: true + EXCLUDE_SUFFIX_FROM_VERSION: true + - uses: actions/upload-artifact@v2 + with: + name: nuget_release + path: | + ./artifacts/bin/**/* + ./artifacts/log/**/* + ./artifacts/pkg/**/* + ./artifacts/tst/**/* + if-no-files-found: error + publish-nightlies-github: + runs-on: ubuntu-latest + if: ${{ github.event_name == 'push' }} + needs: [ windows-x64, windows-x86, linux-x64, macos-x64, build-nuget-preview ] + steps: + - uses: actions/download-artifact@v2 + with: + name: windows_release_x64 + path: ./artifacts + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + - run: dotnet nuget push "./artifacts/pkg/Release/*.nupkg" --source https://nuget.pkg.github.com/dotnet/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml deleted file mode 100644 index 5266557e..00000000 --- a/scripts/azure-pipelines.yml +++ /dev/null @@ -1,71 +0,0 @@ -trigger: -- main - -pr: -- main - -jobs: -- template: azure-windows.yml - parameters: - name: windows_debug_x86 - pool: windows-latest - configuration: Debug - architecture: x86 - testwin32metadata: false - -- template: azure-windows.yml - parameters: - name: windows_release_x86 - pool: windows-latest - configuration: Release - architecture: x86 - testwin32metadata: false - -- template: azure-windows.yml - parameters: - name: windows_debug_x64 - pool: windows-latest - configuration: Debug - architecture: x64 - testwin32metadata: false - -- template: azure-windows.yml - parameters: - name: windows_release_x64 - pool: windows-latest - configuration: Release - architecture: x64 - testwin32metadata: false - -- template: azure-windows.yml - parameters: - name: test_win32metadata - pool: windows-latest - configuration: Release - architecture: x64 - testwin32metadata: true - -- template: azure-windows.yml - parameters: - name: build_nuget - pool: windows-latest - configuration: Release - architecture: x64 - testwin32metadata: false - EXCLUDE_BUILDNUMBER_FROM_PACKAGE: true - -- template: azure-unix.yml - parameters: - name: ubuntu_debug_x64 - pool: ubuntu-latest - configuration: Debug - architecture: x64 - OVERRIDE_RUNTIME_IDENTIFIER: ubuntu.18.04-x64 - -- template: azure-unix.yml - parameters: - name: ubuntu_release_x64 - pool: ubuntu-latest - configuration: Release - architecture: x64 - OVERRIDE_RUNTIME_IDENTIFIER: ubuntu.18.04-x64 diff --git a/scripts/azure-unix.yml b/scripts/azure-unix.yml deleted file mode 100644 index 3f403532..00000000 --- a/scripts/azure-unix.yml +++ /dev/null @@ -1,30 +0,0 @@ -jobs: -- job: ${{parameters.name}} - pool: - vmImage: ${{parameters.pool}} - steps: - - task: Bash@3 - displayName: 'Run scripts/cibuild.sh' - inputs: - targetType: filePath - filePath: ./scripts/cibuild.sh - arguments: '--configuration ${{parameters.configuration}} --architecture ${{parameters.architecture}}' - - task: PublishTestResults@2 - displayName: 'Publish Test Results' - inputs: - testResultsFormat: VSTest - testResultsFiles: artifacts/tst/${{parameters.configuration}}/*.trx - mergeTestResults: true - failTaskOnFailedTests: true - testRunTitle: '${{parameters.name}}' - buildConfiguration: ${{parameters.configuration}} - buildPlatform: ${{parameters.architecture}} - - task: PublishBuildArtifacts@1 - displayName: 'Publish NuGet Packages' - inputs: - PathtoPublish: artifacts/pkg/${{parameters.configuration}} - ArtifactName: packages - publishLocation: Container - variables: - EXCLUDE_BUILDNUMBER_FROM_PACKAGE: ${{parameters.EXCLUDE_BUILDNUMBER_FROM_PACKAGE}} - OVERRIDE_RUNTIME_IDENTIFIER: ${{parameters.OVERRIDE_RUNTIME_IDENTIFIER}} diff --git a/scripts/azure-windows.yml b/scripts/azure-windows.yml deleted file mode 100644 index c1d7269f..00000000 --- a/scripts/azure-windows.yml +++ /dev/null @@ -1,57 +0,0 @@ -jobs: -- job: ${{parameters.name}} - pool: - vmImage: ${{parameters.pool}} - steps: - - task: BatchScript@1 - displayName: 'Run scripts/cibuild.cmd' - condition: eq(${{parameters.testwin32metadata}}, false) - inputs: - filename: scripts/cibuild.cmd - arguments: '-configuration ${{parameters.configuration}} -architecture ${{parameters.architecture}}' - - task: BatchScript@1 - displayName: 'Run scripts/cibuild.cmd -testwin32metadata' - condition: eq(${{parameters.testwin32metadata}}, true) - inputs: - filename: scripts/cibuild.cmd - arguments: '-configuration ${{parameters.configuration}} -architecture ${{parameters.architecture}} -testwin32metadata' - - task: PublishTestResults@2 - displayName: 'Publish Test Results' - inputs: - testResultsFormat: VSTest - testResultsFiles: artifacts/tst/${{parameters.configuration}}/*.trx - mergeTestResults: true - failTaskOnFailedTests: true - testRunTitle: '${{parameters.name}}' - buildConfiguration: ${{parameters.configuration}} - buildPlatform: ${{parameters.architecture}} - - task: PublishBuildArtifacts@1 - displayName: 'Publish NuGet Packages' - inputs: - PathtoPublish: artifacts/pkg/${{parameters.configuration}} - ArtifactName: packages - publishLocation: Container - - task: CopyFiles@2 - displayName: 'Stage win32metadata bin artifacts' - condition: eq(${{parameters.testwin32metadata}}, true) - inputs: - sourceFolder: artifacts/win32metadata - contents: '**/bin/**' - targetFolder: $(Build.ArtifactStagingDirectory) - - task: CopyFiles@2 - displayName: 'Stage win32metadata obj artifacts' - condition: eq(${{parameters.testwin32metadata}}, true) - inputs: - sourceFolder: artifacts/win32metadata - contents: '**/obj/**' - targetFolder: $(Build.ArtifactStagingDirectory) - - task: PublishBuildArtifacts@1 - displayName: 'Publish win32metadata Artifacts' - condition: eq(${{parameters.testwin32metadata}}, true) - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory) - ArtifactName: win32metadata - publishLocation: Container - variables: - EXCLUDE_BUILDNUMBER_FROM_PACKAGE: ${{parameters.EXCLUDE_BUILDNUMBER_FROM_PACKAGE}} - OVERRIDE_RUNTIME_IDENTIFIER: ${{parameters.OVERRIDE_RUNTIME_IDENTIFIER}}