This one took me some time to figure out, so I wanted to have something for the next time I need it :-). I needed to create repos for a team and then create a codespace for them. I already was using the GitHub CLI for my automation, so I wanted to use it as well to create the codespace. The documentation states that you can call gh codespace create flags and you are good to go.
Well, this command in the CLI works differently then you might think: First of, most of the commands work and pickup the repo that you are currently in. This command does not: you need to pass in the -r
parameter and specify the repo using the <owner/repo>
notation.
Next up is the -m
parameter to specify the machine you want to have as the compute option for the Codespace. In the REST API you do not need to specify this parameter and it will give you the type of machine in the response:
"machine": {
"name": "standardLinux",
"display_name": "4 cores, 8 GB RAM, 64 GB storage",
"operating_system": "linux",
"storage_in_bytes": 68719476736,
"memory_in_bytes": 8589934592,
"cpus": 4
},
The help for the CLI command doesn’t give any hints as well.
So, I tried to be smart and send in this json as the value, thinking they’ve missed that wrapper in the CLI. That fails with no extra information, probably due to some wrong string escaping on my end.
Then I entered ‘standardLinux’ as the value, thinking this will never work, since I want to create it with a certain size
, and all flavors are Linux based….
This is then the response:
gh codespace create -b main -s -r "globaldevopsbootcamp/team01" -m "standardLinux"
error getting machine type: there is no such machine for the repository: standardLinux
Available machines: [basicLinux32gb standardLinux32gb premiumLinux largePremiumLinux]
Finally some hints of the expected values! (even better: these are the expected values 😄).
Here you can see how those values match to a machine type: