Skip to content

Custom Talos Linux boot assets used in my home-ops environment.

Notifications You must be signed in to change notification settings

justingarfield/talos-boot-assets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 

Repository files navigation

talos-boot-assets

Overview

This repository contains a GitHub Actions workflow that runs on a cronjob every day to check and see if a new official Talos Linux release has been pushed.

If it detects a newer version is available (compared to the tag(s) in this repo) it will use the Talos Imager to build new Boot Assets used in my home-ops environment.

Release Artifacts

Currently I output three artifacts from this workflow:

Artifact Name Description
metal-rpi_generic-arm64.raw.xz Shows up under Releases, used for Raspberry Pi 4 Raw Disk Image
installer-amd64 Shows up under Packages, used for Hyper-V VM installs / upgrades
installer-arm64 Shows up under Packages, used for Raspberry Pi 4 upgrades

Workflow

flowchart TD

subgraph check-for-new-release
    GetTalosRelease[Get Latest\nTalos\nRelease Version]
    GetBootAssetRelease[Get Latest\nBoot-Assets\nRelease Version]

    GetTalosRelease-->NewVersionAvail
    GetBootAssetRelease-->NewVersionAvail

    NewVersionAvail{Newer Talos\nversion available?}
end

NewVersionAvail -->|Yes| build-boot-assets
NewVersionAvail -->|No| End

subgraph build-boot-assets
    BuildInstallerAmd64[Build Talos\namd64 Installer\nContainer Image]
    BuildInstallerAmd64 --> BuildInstallerArm64[Build Talos\narm64 Installer\nContainer Image]
    BuildInstallerArm64 --> BuildRpi[Build Talos\nmetal-rpi_generic\nRaw Image]
    BuildRpi --> UploadArtifacts[Upload\nArtifacts]
end

UploadArtifacts --> create-release
UploadArtifacts --> push-container-image

subgraph create-release
    DownloadCreateRelease[Download\nArtifacts]
    DownloadCreateRelease --> CreateNewRelease[Create new\nGitHub Tag\nand Release]
end

subgraph push-container-image
    DownloadPushContainer[Download\nArtifacts]
    DownloadPushContainer --> SetupDockerBuildX[Setup Docker\nBuildx]
    SetupDockerBuildX --> LoginToGhcr[Login to\nghcr.io Registry]
    LoginToGhcr --> CranePush[Crane Push\nContainer Image]
end

CreateNewRelease --> End
CranePush --> End

End[End Workflow]