- implement to gRPC server
shoes,health,stdio
- define resource type in your shoes provider's flavor.
shoes provider use hashicorp/go-plugin. you need to register three Service.
if you use a golang in development, you can use pkg/pluginutils/setup.go.
please check plugins/shoes-mock. There are mock shoes provider.
shoes is gRPC server. you need to implement two funtion.
AddInstanceDeleteInstance
please check api/proto/myshoes.proto.
health is grpc-ecosystem/grpc-health-probe.
stdio is standard I/O service.
this service communicate plugin binary's standard I/O.
myshoes defined some machine type. you need to map machine spec for your resource type.
- nano
- micro
- small
- medium
- large
- xlarge
- 2xlarge
- 3xlarge
- 4xlarge
shoes-tester is a CLI tool for testing shoes provider without running myshoes server.
go build -o shoes-tester ./cmd/shoes-testerSimple mode (with setup script):
./shoes-tester add \
--plugin ./path/to/your-shoes-provider \
--runner-name test-runner \
--resource-type nano \
--labels "label1,label2" \
--setup-script "#!/bin/bash\necho 'setup'"Script generation mode (generate setup script automatically):
./shoes-tester add \
--plugin ./path/to/your-shoes-provider \
--runner-name test-runner \
--resource-type nano \
--generate-script \
--scope owner/repo \
--github-app-id 123456 \
--github-private-key-path /path/to/key.pem \
--runner-version latest./shoes-tester delete \
--plugin ./path/to/your-shoes-provider \
--cloud-id your-cloud-id \
--labels "label1,label2"Add command:
--plugin: Path to shoes-provider binary (required)--runner-name: Runner name (required)--resource-type: Resource type (default: nano)--labels: Comma-separated labels--setup-script: Setup script (simple mode)--generate-script: Generate setup script automatically (script generation mode)--scope: Repository (owner/repo) or Organization (script generation mode)--github-app-id: GitHub App ID (script generation mode)--github-private-key-path: GitHub App private key path (script generation mode)--runner-version: Runner version (default: latest, script generation mode)--runner-user: Runner user (default: runner, script generation mode)--runner-base-directory: Runner base directory (default: /tmp, script generation mode)--github-url: GitHub Enterprise Server URL (script generation mode)--json: Output in JSON format
Delete command:
--plugin: Path to shoes-provider binary (required)--cloud-id: Cloud ID (required)--labels: Comma-separated labels--json: Output in JSON format