Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
version: 2
version: 2.1
jobs:
build:
working_directory: ~/dmd
docker:
- image: cimg/base:current-20.04
parallelism: 1
working_directory: ~/dmd # the Phobos Makefile expects this dir name, not Circle's default `~/project`
machine:
image: ubuntu-2604:current
resource_class: large.gen3

@kinke kinke Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Switching from a docker container to a VM enables using the Gen3 runners, which were announced as beta some weeks ago, and are now seemingly undocumented again (from the price list).

The large.gen3 class features 4 CPU cores and 16 GB of RAM, and costs 14 credits per minute (last time I saw it in the pricing list), vs. 2 cores/4 GB for the currently used medium docker gen1 @ 10 credits per minute.

The thing is that gen3 is at the same time also much faster per core (Zen v5 CPUs etc.) - the CI job here took 6:34 mins, whereas a recent master one took 33+ mins. So we should be easily able to 'afford' the upgrade from medium to large resource class (1.4x credits per minute, but 5x as fast); as the linked graph shows, the CPU utilization is good.

steps:
- checkout:
method: blobless

@kinke kinke Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blobless is the default setting: https://circleci.com/docs/reference/configuration-reference/#checkout

[And parallelism: 1 too.]

- checkout
- run:
command: ./.circleci/run.sh install-deps
name: Install dependencies
- run:
# needs to be a separate step, s.t. `run.sh` gets updated too
command: ./.circleci/run.sh setup-repos
name: Merge with upstream + clone DRuntime & Phobos
name: Merge with upstream + clone Phobos
- run:
command: ./.circleci/run.sh all
name: Run all
workflows:
version: 2
all:
jobs:
- build
Loading