Tartelet Documentation

repository·main·Indexed 21 days ago

https://github.com/framna-dk/tartelet

A macOS application that automates the management of ephemeral GitHub Actions runners using Tart and Apple's Virtualization framework. It enables the execution of up to two parallel, isolated runners on a single host machine by managing a lifecycle of cloning, booting, setup, execution, and deletion of virtual machines.

Tokens
690
Snippets
1
Records
4
Agent score
23%

What's inside Tartelet

  1. What is Tartelet and how does it work?

    main

    Tartelet is a macOS application designed to manage up to two self-hosted GitHub Actions runners in ephemeral virtual machines. It uses Tart and Apple's Virtualization framework to provide isolated environments for each job.

    Runner Lifecycle

    1. Clone: Tartelet uses Tart to clone a virtual machine.
    2. Boot: The virtual machine is started.
    3. Setup: A setup script runs to download the latest GitHub runner application and register it with your GitHub organization.
    4. Execute: The runner listens for and executes a GitHub Actions job.
    5. Cleanup (Runner): After the job, the runner automatically removes itself from the GitHub organization.
    6. Shutdown: The virtual machine is shut down.
    7. Deletion: Tartelet uses Tart to delete the virtual machine.

    This cycle ensures that every job runs in a fresh, isolated environment that is recreated after completion.

  2. Set up the development environment

    main

    Tartelet uses several tools to manage the project structure and code quality. Follow these steps to set up your local development environment:

    1. Clone the repository

    git clone git@github.com:shapehq/tartelet.git

    2. Generate the Xcode project with XcodeGen

    The repository does not contain a .xcodeproj file. You must generate it using XcodeGen.

    brew install xcodegen
    xcodegen generate

    3. Generate resource constants with SwiftGen

    SwiftGen is used to generate constants for images, colors, and localizations based on the swiftgen.yml configuration.

    brew install swiftgen
    swiftgen

    4. Lint the codebase with SwiftLint

    To ensure code uniformity, use SwiftLint.

    brew install swiftlint
    git clone git@github.com:shapehq/tartelet.git
    brew install xcodegen
    xcodegen generate
    brew install swiftgen
    swiftgen
    brew install swiftlint
  3. Configure the project for local keychain access

    main

    To run Tartelet locally, you must configure the keychain access group so the app can persist settings.

    1. Open Tartelet.entitlements and specify a keychain access group that you control.
    2. Open Composers.swift and ensure the keychain is initialized with the same access group specified in the entitlements file.

    Search and Replace Task: Search for the following strings in the project and replace them with your specific keychain access group:

    • $(AppIdentifierPrefix)dk.shape.Tartelet
    • 566MC7D8D4.dk.shape.Tartelet