From d4b8d0152a682b5d1f5379be621a64ab417ca576 Mon Sep 17 00:00:00 2001 From: Martin-Molinero Date: Wed, 17 Jun 2026 20:43:30 +0000 Subject: [PATCH] Run CI on self-hosted runners Mirror QuantConnect/Lean#9540 (commit c57fd18b): run the build/test workflow on self-hosted runners directly inside a job-level quantconnect/lean:foundation container (--cpus 12 --memory 12g) instead of the GitHub-hosted ubuntu runner + addnab/docker-run wrapper. Drops the disk-cleanup step and the docker-run wrapper (build/test now run as a normal step inside the container; secrets via container env), and adds a concurrency group (cancel-in-progress). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/gh-actions.yml | 43 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/.github/workflows/gh-actions.yml b/.github/workflows/gh-actions.yml index 542991f..aeda76f 100644 --- a/.github/workflows/gh-actions.yml +++ b/.github/workflows/gh-actions.yml @@ -6,21 +6,24 @@ on: pull_request: branches: [master] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: build: - runs-on: ubuntu-24.04 + runs-on: self-hosted + container: + image: quantconnect/lean:foundation + options: --cpus 12 --memory 12g + env: + QC_JOB_USER_ID: ${{ secrets.QC_JOB_USER_ID }} + QC_API_ACCESS_TOKEN: ${{ secrets.QC_API_ACCESS_TOKEN }} + QC_JOB_ORGANIZATION_ID: ${{ secrets.QC_JOB_ORGANIZATION_ID }} steps: - name: Checkout uses: actions/checkout@v2 - - name: Liberate disk space - uses: jlumbroso/free-disk-space@main - with: - tool-cache: true - large-packages: false - docker-images: false - swap-storage: false - - name: Checkout Lean Same Branch id: lean-same-branch uses: actions/checkout@v2 @@ -40,16 +43,12 @@ jobs: - name: Move Lean run: mv Lean ../Lean - - name: Pull Foundation Image - uses: addnab/docker-run-action@v3 - with: - image: quantconnect/lean:foundation - options: -v /home/runner/work:/__w --workdir /__w/Lean.DataSource.IQFeed/Lean.DataSource.IQFeed -e QC_JOB_USER_ID=${{ secrets.QC_JOB_USER_ID }} -e QC_API_ACCESS_TOKEN=${{ secrets.QC_API_ACCESS_TOKEN }} -e QC_JOB_ORGANIZATION_ID=${{ secrets.QC_JOB_ORGANIZATION_ID }} - shell: bash - run: | - # BuildDataSource - dotnet build ./QuantConnect.IQFeed/QuantConnect.DataSource.IQFeed.csproj /p:Configuration=Release /v:quiet /p:WarningLevel=1 && \ - # BuildDataSourceTests - dotnet build ./QuantConnect.IQFeed.Tests/QuantConnect.DataSource.IQFeed.Tests.csproj /p:Configuration=Release /v:quiet /p:WarningLevel=1 && \ - # Run Tests - dotnet test ./QuantConnect.IQFeed.Tests/bin/Release/QuantConnect.Lean.DataSource.IQFeed.Tests.dll + - name: Run build and tests + run: | + # BuildDataSource + dotnet build ./QuantConnect.IQFeed/QuantConnect.DataSource.IQFeed.csproj /p:Configuration=Release /v:quiet /p:WarningLevel=1 && \ + # BuildDataSourceTests + dotnet build ./QuantConnect.IQFeed.Tests/QuantConnect.DataSource.IQFeed.Tests.csproj /p:Configuration=Release /v:quiet /p:WarningLevel=1 && \ + # Run Tests + dotnet test ./QuantConnect.IQFeed.Tests/bin/Release/QuantConnect.Lean.DataSource.IQFeed.Tests.dll +