+name: "Build Pull Request"
+
+on:
+ pull_request:
+ branches:
+ - master
+ - API*
+
+jobs:
+
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 3.1.x
+
+ - name: Get Changed Files
+ uses: lots0logs/gh-action-get-changed-files@2.1.4
+ id: getChangedFiles
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build
+ id: build
+ uses: TizenAPI/tizenfx-build-actions/problem-filter@master
+ with:
+ run: ./build.sh full /p:BuildWithAnalyzer=True -consoleloggerparameters:NoSummary
+ files: ${{ steps.getChangedFiles.outputs.all }}
+
+ - name: Save Error Report
+ if: ${{ failure() && steps.build.outputs.errors }}
+ env:
+ BUILD_ERRORS: ${{ steps.build.outputs.errors }}
+ run: |
+ mkdir Artifacts
+ echo $BUILD_ERRORS > Artifacts/errors.json
+
+ - name: Pack
+ run: ./build.sh pack
+
+ - name: Checkout APITool
+ uses: actions/checkout@v2
+ with:
+ repository: TizenAPI/APITool
+ path: .apitool
+
+ - name: Extract API Spec
+ run: |
+ dotnet run -p .apitool/ \
+ -- print --format=json --include-hidden \
+ -o Artifacts/api.json Artifacts/bin/public/
+
+ - uses: actions/upload-artifact@v2
+ if: ${{ always() }}
+ with:
+ name: reports
+ if-no-files-found: ignore
+ path: Artifacts/*.json
+
+ check-api:
+ needs: [build]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 3.1.x
+
+ - name: Download Artifacts
+ uses: actions/download-artifact@v2
+ with:
+ name: reports
+ path: Artifacts
+
+ - name: Download Base API Spec
+ id: base-spec
+ uses: TizenAPI/tizenfx-build-actions/s3-download-public@master
+ with:
+ region: ap-northeast-2
+ bucket: tizenfx-api-specs
+ key: ${{ github.event.pull_request.base.sha }}.json
+ path: Artifacts/base-api.json
+
+ - uses: actions/checkout@v2
+ if: ${{ steps.base-spec.outputs.code != 200 }}
+ with:
+ ref: ${{ github.event.pull_request.base.sha }}
+ path: base
+
+ - name: Build Base Branch
+ if: ${{ steps.base-spec.outputs.code != 200 }}
+ uses: TizenAPI/tizenfx-build-actions/problem-filter@master
+ with:
+ run: ./build.sh full
+ working-directory: base
+
+ - name: Checkout APITool
+ if: ${{ steps.base-spec.outputs.code != 200 }}
+ uses: actions/checkout@v2
+ with:
+ repository: TizenAPI/APITool
+ path: .apitool
+
+ - name: Extract Base API
+ if: ${{ steps.base-spec.outputs.code != 200 }}
+ run: |
+ dotnet run -p .apitool/ \
+ -- print --format=json --include-hidden \
+ -o Artifacts/base-api.json base/Artifacts/bin/public/
+
+ - name: Check API Compatibilities
+ uses: TizenAPI/tizenfx-build-actions/apidb-compare@master
+ with:
+ file: Artifacts/api.json
+ base-file: Artifacts/base-api.json
+ output: Artifacts/api-comp.json
+
+ - uses: actions/upload-artifact@v2
+ with:
+ name: reports
+ path: Artifacts/api-comp.json