This repository was archived by the owner on May 26, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathmagefile.go
More file actions
85 lines (71 loc) · 2.64 KB
/
magefile.go
File metadata and controls
85 lines (71 loc) · 2.64 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//go:build mage
// +build mage
package main
import (
"errors"
"fmt"
"os"
"os/exec"
"strings"
"github.com/livekit/livekit-recorder/version"
)
const (
imageName = "livekit/livekit-recorder"
gstImageName = "livekit/gstreamer"
multiPlatformBuild = "docker buildx build --push --platform linux/amd64,linux/arm64"
)
// Default target to run when none is specified
// If not set, running mage will list available targets
var Default = Test
// run unit tests
func Test() error {
return run("go test --tags=test ./...")
}
func Integration() error {
dir, err := os.Getwd()
if err != nil {
return err
}
return run(
"docker build -t livekit-recorder-test -f build/test/Dockerfile .",
fmt.Sprintf("docker run --rm -v %s/test:/out livekit-recorder-test", dir),
)
}
func GStreamer(version string) error {
return run(
"docker pull ubuntu:21.04",
fmt.Sprintf("docker build -t %s:%s-base --build-arg GSTREAMER_VERSION=%s -f build/gstreamer/Dockerfile-base ./build/gstreamer", gstImageName, version, version),
fmt.Sprintf("docker build -t %s:%s-dev --build-arg GSTREAMER_VERSION=%s -f build/gstreamer/Dockerfile-dev ./build/gstreamer", gstImageName, version, version),
fmt.Sprintf("docker build -t %s:%s-prod --build-arg GSTREAMER_VERSION=%s -f build/gstreamer/Dockerfile-prod ./build/gstreamer", gstImageName, version, version),
)
}
func PublishGStreamer(version string) error {
return run(
"docker pull ubuntu:21.04",
fmt.Sprintf("%s -t %s:%s-base --build-arg GSTREAMER_VERSION=%s -f build/gstreamer/Dockerfile-base ./build/gstreamer", multiPlatformBuild, gstImageName, version, version),
fmt.Sprintf("%s -t %s:%s-dev --build-arg GSTREAMER_VERSION=%s -f build/gstreamer/Dockerfile-dev ./build/gstreamer", multiPlatformBuild, gstImageName, version, version),
fmt.Sprintf("%s -t %s:%s-prod --build-arg GSTREAMER_VERSION=%s -f build/gstreamer/Dockerfile-prod ./build/gstreamer", multiPlatformBuild, gstImageName, version, version),
)
}
func Docker() error {
return run(fmt.Sprintf("docker build -t %s:v%s -f build/Dockerfile .", imageName, version.Version))
}
func PublishDocker() error {
// don't publish snapshot versions as latest or minor version
if !strings.Contains(version.Version, "SNAPSHOT") {
return errors.New("cannot publish non-snapshot versions")
}
return run(fmt.Sprintf("%s -t %s:v%s -f build/Dockerfile .", multiPlatformBuild, imageName, version.Version))
}
func run(commands ...string) error {
for _, command := range commands {
args := strings.Split(command, " ")
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return err
}
}
return nil
}