name: Integration Test on: workflow_call: inputs: docker-compose-file: required: true type: string use-internal-image: default: false type: boolean secrets: CODECOV_TOKEN: required: true jobs: integration-test: env: Solution: "Speckle.Sdk.sln" runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Setup .NET uses: actions/setup-dotnet@v5 with: dotnet-version: 8.x.x cache: true cache-dependency-path: "**/packages.lock.json" - name: 🔐 Login to Github Container Registry if: ${{ inputs.use-internal-image }} uses: docker/login-action@v3 with: registry: "ghcr.io" username: ${{ github.actor }} password: ${{ github.token }} - name: ⚙️ Spin up Server run: docker compose --file ${{ inputs.docker-compose-file }} up --wait - name: 📦 Restore run: dotnet restore ${{ env.Solution }} --locked-mode - name: 🏗️ Build run: dotnet build ${{ env.Solution }} --configuration Release --no-restore -warnaserror - name: 🔨 Integration Tests against Public Server if: ${{ !inputs.use-internal-image }} run: dotnet test ${{ env.Solution }} --filter "(Category=Integration)&(Server!=Internal)" --configuration Release --no-build --no-restore --verbosity=normal /p:AltCover=true /p:AltCoverAttributeFilter=ExcludeFromCodeCoverage - name: 🔨 Integration Tests against Internal Server if: ${{ inputs.use-internal-image }} run: dotnet test ${{ env.Solution }} --filter "(Category=Integration)&(Server!=Public)" --configuration Release --no-build --no-restore --verbosity=normal /p:AltCover=true /p:AltCoverAttributeFilter=ExcludeFromCodeCoverage - name: Upload coverage reports to Codecov with GitHub Action uses: codecov/codecov-action@v5 continue-on-error: true with: fail_ci_if_error: true files: tests/**/coverage.xml token: ${{ secrets.CODECOV_TOKEN }}