1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
package helperimage
import (
"fmt"
"gitlab.com/gitlab-org/gitlab-runner/helpers/container/windows"
)
const (
baseImage1809 = "servercore1809"
baseImage2004 = "servercore2004"
baseImage20H2 = "servercore20H2"
windowsSupportedArchitecture = "x86_64"
)
var helperImages = map[string]string{
windows.V1809: baseImage1809,
windows.V2004: baseImage2004,
windows.V20H2: baseImage20H2,
}
type windowsInfo struct{}
func (w *windowsInfo) Create(revision string, cfg Config) (Info, error) {
baseImage, err := w.baseImage(cfg.OperatingSystem)
if err != nil {
return Info{}, fmt.Errorf("detecting base image: %w", err)
}
return Info{
Architecture: windowsSupportedArchitecture,
Name: imageName(cfg.GitLabRegistry),
Tag: fmt.Sprintf("%s-%s-%s", windowsSupportedArchitecture, revision, baseImage),
IsSupportingLocalImport: false,
Cmd: getPowerShellCmd(cfg.Shell),
}, nil
}
func (w *windowsInfo) baseImage(operatingSystem string) (string, error) {
version, err := windows.Version(operatingSystem)
if err != nil {
return "", err
}
baseImage, ok := helperImages[version]
if !ok {
return "", windows.NewUnsupportedWindowsVersionError(operatingSystem)
}
return baseImage, nil
}
|