Commit Graph

314 Commits

Author SHA1 Message Date
Fedor Korotkov d4fcecd47c
[skip ci] Downgrade Lottie Player (#563)
Seems in 2.0.0 release they broke looping. Right now animation on https://tart.run/ is always looping even without `loop` property. I was able to disable it, so I just downgraded to the last known working version.
2023-07-20 19:46:58 +04:00
Nikolay Edigaryev 33ca96e1a0
Retrieve VM's IP for use in VNC after the VM is started #2 (#562) 2023-07-17 12:51:43 +04:00
Fedor Korotkov 4ce06279ff
[skip ci] Clarify default runner group assigment (#559) 2023-07-14 07:50:31 -04:00
Fedor Korotkov fa97adfc9e
Highlight Cirrus Runners in `README.md` (#558)
* Mention Cirrus Runners in the README.md

* Increase font size

* typo

* Fixed branch
2023-07-13 18:09:19 +00:00
Nikolay Edigaryev 6c377029d6
tart prune: allow pruning local VMs with --entries=vms (#557) 2023-07-13 22:05:28 +04:00
Fedor Korotkov 93a1b70ecb
Don't delete an initiator of pruning (#556)
* Don't delete an initiator of pruning

Sometimes people have an image that is greater than half of the disk itself. In that case such image will be pulled and prunned right away.

This change makes sure that an image that is being cloned from is not pruned right away.

* Resolve symbolic links
2023-07-13 13:59:23 +04:00
Fedor Korotkov cf9a3a9221
Allow mounting a single directory without a name (#555)
* Allow mounting a single directory without a name

To utilize `VZSingleDirectoryShare` which seems more stable than `VZMultipleDirectoryShare`.

We've been having reports from users that mounted directories occasionally return "no such file" errors when building large projects. I took a stab at reproducing the issue by running https://github.com/devMEremenko/XcodeBenchmark in a mounted directory:

```bash
tart run --dir=workdir-test:~/workspace-temp/XcodeBenchmark ventura-xcode
```

And I was able to reproduce the "no such file" error on the first try! After looking into the issue I decided to try `VZSingleDirectoryShare` as this PR changes and to my pleasant surprise it all worked like a charm the next run. So it seems there is a bug in `VZMultipleDirectoryShare` integration with virtiofs. Since in most cases users only mount a single directory it makes sense to allow doing it wihtout providing a `name`.

So now it will be possible to run the following command:

```bash
tart run --dir=~/workspace-temp/XcodeBenchmark ventura-xcode
```

Which will make `~/workspace-temp/XcodeBenchmark` available under `/Volumes/My Shared Files/` without any intermediate directories.

* Reformat

* Updated description
2023-07-12 19:08:52 +00:00
Stanisław Chmiela ad566faa23
Add OCI annotation with upload time (#551) 2023-07-11 19:02:38 -04:00
Fedor Korotkov 1afaa7ec7a
Reclaim disk space only in the very end of `tart clone` (#553)
* Reclaim disk space only in the very end of `tart clone`

Please check comments in code for reasoning.

* Phrasing

* Removed hidden argument
2023-07-11 15:49:43 +00:00
Fedor Korotkov 826e508646
Upload debug files to both Sentry projects (#552)
* Upload debug files to both Sentry projects

Apparently it's not possible to share debug files cross projects. So let's upload to both of them. To one we use in production and one we use for testing.

* Use environment variable
2023-07-11 17:49:04 +04:00
Stanisław Chmiela 8653ca4115
Fix `prune --older-than` deleting all cache (#549)
* Fix `prune --older-than`

* Update Sources/tart/Commands/Prune.swift

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>

---------

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
2023-07-11 16:10:49 +04:00
Nikolay Edigaryev 63b74f407b
Version console device (#546) 2023-07-10 15:23:50 +00:00
Nikolay Edigaryev 3a2cba6929
Introduce TART_REGISTRY_HOSTNAME (#545)
* Introduce TART_REGISTRY_HOST

* TART_REGISTRY_HOST → TART_REGISTRY_HOSTNAME
2023-07-10 18:19:21 +04:00
Stanisław Chmiela 7592b86663
Add `host` to `Registry` taking `port` into consideration (#544) 2023-07-07 18:32:41 -04:00
Fedor Korotkov e8dbb86fc0
Support stopping of suspended VMs (#541) 2023-07-07 13:38:34 +04:00
Fedor Korotkov d2ed4ef801
Resume suspended VMs without explicit `--suspendable` flag (#540) 2023-07-07 11:38:31 +04:00
Nikolay Edigaryev 2014de7dac
Suspend/resume support (#527)
* Suspend/resume support

* Use RuntimeError.SuspendFailed for consistency's sake

* Add a comment about "Running" field deprecation

* Use compute credits

* Use Mac-specific input devices and remove --no-{audio,entropy}

* Suspend the VM when closing window and running with --suspendable

* Snapshotting Improvements (#539)

* Don't use static field for arguments

It throws a runtime error

* Fixed suspendability

* Lazy generation of new MAC addresses

To support cloning on suspended VMs

* Refactored

* formatted

* Configurable signal for window closing

* reformatted

* Don't generate MAC only for suspended VMs

* Removed misleading comment

* Reverted

* Lock while a suspendable VM is starting

* Lock on TART_HOME

---------

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
2023-07-06 18:04:39 +00:00
Nikolay Edigaryev 1f23b24920
PIDLock: check open(2) error (#538)
* PIDLock: check open(2) error

* Bump Sentry to 8.8.0
2023-07-04 15:22:25 +00:00
Fedor Korotkov 6ce4a06089
Document how to remount directories on macOS guests (#537) 2023-07-03 20:21:08 +04:00
Fedor Korotkov 1a2f187ac8
Fixed mouse/keyboard on Monterey guest (#535)
I guess [my comment was accurate](https://github.com/cirruslabs/tart/pull/524/files#r1239939939). Fixes #534

Tested by running `ghcr.io/cirruslabs/macos-monterey-base:latest` locally on a Sonoma host.
2023-07-01 10:35:45 +04:00
Fedor Korotkov 285bf9b6c2
Run `gon` right after building (#533)
To sing and stuff
2023-06-29 23:01:08 +04:00
Fedor Korotkov 415ed3388d
Optimistically check if we need to do anything on a pull (#531)
* Optimistically check if we need to do anything on a pull

Right now on a pull we always acquire a lock for a registry host. This is problematic because, for example, host can be pulling `ghcr.io/cirruslabs/macos-ventura-xcode:15-beta-2` image when a new request will come to pull `ghcr.io/cirruslabs/macos-ventura-xcode:latest` if needed.

In this situation, even though `ghcr.io/cirruslabs/macos-ventura-xcode:latest` is already cached and linked, `tart pull` will wait for a lock.

This change optimistically check if there is something to do at all before acquiring a lock.

* Fix linter errors

---------

Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
2023-06-29 10:51:41 -04:00
Nikolay Edigaryev 870b414994
tart clone: try to reclaim disk space if needed (#532) 2023-06-29 18:46:00 +04:00
Stefan Mitterrutzner be7011bf11
Adds the OCI access_token fallback field (#530) 2023-06-29 10:33:20 +00:00
Nikolay Edigaryev 859050cb42
.goreleaser.yml: remove Tart binary from the root of the archive (#526) 2023-06-29 10:54:30 +04:00
Fedor Korotkov 4f321ec264
Use "License Tier" term (#528)
Instead of a "Sponsorship"
2023-06-27 15:17:50 +00:00
Nikolay Edigaryev 1b53ce42f8
Use Mac-specific input devices when possible (#524)
* Use VZMacKeyboardConfiguration when possible

* Use VZMacTrackpadConfiguration when possible
2023-06-23 17:54:47 +00:00
Nikolay Edigaryev e89ef32a83
Enable automatic display reconfiguration for Sonoma (#521)
* Enable automatic display reconfiguration for Sonoma

* Xcode 15 Beta

---------

Co-authored-by: fedor <fedor.korotkov@gmail.com>
2023-06-23 15:25:22 +00:00
Nikolay Edigaryev 62a34bf89f
Fix "file “config.json” couldn’t be opened" error when pruning (#525)
* Fix "file “config.json” couldn’t be opened" error when pruning

* No need to use the ";"
2023-06-23 15:23:25 +00:00
Jontified 0608b2b9d1
Add Mullvad logo to list of users (#520) 2023-06-21 17:04:02 +04:00
fedor 91e859de9b Updated template with removed mentions on Cirrus CI 2023-06-19 14:17:02 -07:00
Nikolay Edigaryev c79da6a12b
.goreleaser.yml: include LICENSE file in the release archive (#519) 2023-06-16 15:04:14 +04:00
Fedor Korotkov 2b7ca12324
Document manual installation via release archives (#516)
* Document manual installation via release archives

* Fixed typo
2023-06-09 20:01:08 +04:00
Nikolay Edigaryev 9016fcfdd4
Use MainActor to ensure we're running on main queue (#515)
* Use MainActor to ensure we're running on main queue

...and to simplify the code.

* VZVirtualMachine.requestStop() is not asynchronous
2023-06-07 15:06:33 +04:00
Andrzej Fiedukowicz 546238d9df
Replace mentions of Monteray with Ventura in quickstart guide (#510)
* Replace mentions of Monteray with Ventura in quickstart guide

They seem to just be leftovers from previous versions of the docs, so a small cleanup could be helpful.

* Update quick-start.md

* Update quick-start.md

* Update quick-start.md
2023-06-02 05:48:04 -04:00
Fedor Korotkov 2b6818c493
Clarify Licensing Use Limitation (#506)
For both Tart and Orchard

[skip ci]
2023-05-26 17:06:55 +04:00
Nikolay Edigaryev cf49fd10b6
Print errors to stderr (#504) 2023-05-18 19:11:22 +04:00
pheianox 59b3e0c0fb
Add PITS Global Data Recovery Services to the list of companies (#499)
* Add PITS Global Data Recovery Services to the list of companies

* Remove unnecessary change at line 48

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>

* Update PITS Global Data Recovery logo location

---------

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
2023-05-16 14:36:13 -04:00
pheianox 7bbdfc06e7
Add PITSGlobalDataRecoveryServices.png logo (#500) 2023-05-16 14:35:51 -04:00
Nikolay Edigaryev 637c54e1d1
FAQ: document how to change the default DHCP lease time (#494)
* FAQ: document how to change the default DHCP lease time

* Use shell for code snippets

* Note about persistence
2023-05-09 13:30:28 +00:00
Fedor Korotkov e611d97b69
Minor docs improvements (#492)
I realised we didn't add a proper link to Orchard
2023-05-07 17:55:55 +00:00
Fedor Korotkov 8e11bbe1cd
Improve error reporting for unsupported host OS version (#491)
Fixes #489
2023-05-07 21:07:26 +04:00
Nikolay Edigaryev 6de31de6bf
tart login: trim newline characters at the end of --password-stdin (#486) 2023-05-04 14:02:46 +04:00
fedor 37ae7888e6 Cross-link blog posts 2023-04-28 11:52:02 -04:00
Nikolay Edigaryev 64482f4345
Blog: how we implemented SSH over gRPC in Orchard (#480) 2023-04-28 10:36:26 -04:00
Nikolay Edigaryev 4f70d01dd6
Set User-Agent header for OCI HTTP requests (#478)
* Set User-Agent header for OCI HTTP requests

* IORegistry value is actually a NUL-terminated C string

* Use sysctl instead of IOKit
2023-04-28 18:02:57 +04:00
Fedor Korotkov 9098eaf024
Optimized landing page loading (#477)
Converting all the images to WebP reduced the size more than 2x.

Plus enabled `privacy` plugin for mkdocs so the site will bundle remote resources. It appeared that loading Roboto font dynamically was adding 700ms to the page load.
2023-04-25 14:00:58 +00:00
fedor 337d95ac95 Fixed date in the blog post link 2023-04-25 09:18:45 -04:00
Fedor Korotkov 3eb8ae2aa5
[blog] Orchard Announcement (#476)
* [blog] Announcing Orchard orchestration

* Added animation to the post

* Moved date
2023-04-25 09:13:28 -04:00
Nikolay Edigaryev b03408f856
tart ip: wait for the VM to start if --wait was set (#467) 2023-04-10 10:37:00 +00:00