macOS and Linux VMs on Apple Silicon to use in CI and other automations
Go to file
Fedor Korotkov 71d03226fe
Support mounting remote archives (#620)
* Support mounting remote archives

Allow to pass an HTTPS link instead of a local path to `tart run --dir` argument. HTTPS link should point to a gzipped Tar archive aka `*.tar.gz` file.

In this situation Tart will download an archive by the link if necessary, will cache it and will unarchive it into a temporary folder inside `$TART_HOME` to be mounted to the VM.

This use case is useful for mounting something external that updates faster than the VM itself. For example, GitHub Actions Runner installation.

* Don't use async/await APIs to prevent from deadlocks because of the MainActor thing

* Prefer cached data

* Moved comment

* Fix URLCache caching files in memory instead of on-disk (#622)

* Fix URLCache caching files in memory instead of on-disk

* Fix disk capacity typo

* Moved log

* Moved fetching logic to `DirectoryShare#createConfiguration` method

---------

Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
2023-10-03 23:01:29 +04:00
.ci Revert "Revert pkg (#462)" 2023-04-06 10:36:07 -04:00
.github Added Code Owners (#328) 2022-11-17 22:57:12 -05:00
Resources Add Uphold as a Tart user (#606) 2023-09-22 07:37:02 -04:00
Sources/tart Support mounting remote archives (#620) 2023-10-03 23:01:29 +04:00
Tests/TartTests Improved format for fast and efficient pulls from remote OCI-registry (#589) 2023-09-20 10:14:05 -04:00
docs Configure Markdown Linter (#614) 2023-09-29 03:35:17 -04:00
integration-tests Document XL Cirrus Runners (#613) 2023-09-28 15:53:13 -04:00
scripts Document XL Cirrus Runners (#613) 2023-09-28 15:53:13 -04:00
.cirrus.yml Configure Markdown Linter (#614) 2023-09-29 03:35:17 -04:00
.editorconfig Update dependencies and styles (#12) 2022-03-24 18:54:49 +03:00
.gitignore Move FAQ to documentation website (#383) 2023-01-18 11:58:21 -05:00
.goreleaser.yml Support wildcards in `credHelpers` (#592) 2023-08-28 11:37:49 -04:00
.swiftformat Reformat code idents and introduce the SwiftFormat linter (#339) 2022-11-29 15:56:13 +00:00
CONTRIBUTING.md Add CONTRIBUTING.md? (#575) 2023-08-03 13:10:34 -04:00
LICENSE Relicensed under Fair Source License (#415) 2023-02-28 12:22:25 -05:00
Package.resolved PIDLock: check open(2) error (#538) 2023-07-04 15:22:25 +00:00
Package.swift Support wildcards in `credHelpers` (#592) 2023-08-28 11:37:49 -04:00
README.md Document XL Cirrus Runners (#613) 2023-09-28 15:53:13 -04:00
gon.hcl Use release configuration for binaries (#453) 2023-03-29 09:58:41 -04:00
mkdocs.yml Tart 2.0.0 blog post (#601) 2023-09-20 10:13:42 -04:00

README.md

Tart is a virtualization toolset to build, run and manage macOS and Linux virtual machines (VMs) on Apple Silicon. Built by CI engineers for your automation needs. Here are some highlights of Tart:

  • Tart uses Apple's own Virtualization.Framework for near-native performance.
  • Push/Pull virtual machines from any OCI-compatible container registry.
  • Use Tart Packer Plugin to automate VM creation.
  • Easily integrates with any CI system.

Tart powers Cirrus Runners service — a drop-in replacement for the standard GitHub-hosted runners, offering 2-3 times better performance for a fraction of the price.

Tart is also adopted by several other automation services:

Many more companies are using Tart in their internal setups. Here are a few of them:

Note: If your company or project is using Tart please consider adding yourself to the list above.

Usage

Try running a Tart VM on your Apple Silicon device running macOS 13.0 (Ventura) or later (will download a 25 GB image):

brew install cirruslabs/cli/tart
tart clone ghcr.io/cirruslabs/macos-sonoma-base:latest sonoma-base
tart run sonoma-base

Please check the official documentation for more information and/or feel free to use discussions for remaining questions.