Skip to content

Commit 1655734

Browse files
committed
feat: add UnitTest function to CI pipeline
Add a new Dagger function to run unit tests via 'make test' in the CI pipeline. This enables automated unit test execution in a containerized environment using the official Go 1.24 image. Signed-off-by: Diego Ciangottini <diego.ciangottini@pg.infn.it>
1 parent ad61dac commit 1655734

File tree

1 file changed

+44
-15
lines changed

1 file changed

+44
-15
lines changed

ci/main.go

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,35 @@ package main
1717
import (
1818
"context"
1919
"dagger/interlink-slurm/internal/dagger"
20+
"time"
2021
)
2122

2223
type InterlinkSlurm struct{}
2324

24-
func (m *InterlinkSlurm) RunTest(interlinkVersion string, pluginService *dagger.Service, manifests *dagger.Directory, interlinkConfig *dagger.File, pluginConfig *dagger.File, src *dagger.Directory,
25+
// UnitTest runs the unit tests using make test
26+
func (m *InterlinkSlurm) UnitTest(ctx context.Context, src *dagger.Directory) (string, error) {
27+
return dag.Container().
28+
From("golang:1.24").
29+
WithDirectory("/src", src).
30+
WithWorkdir("/src").
31+
WithExec([]string{"make", "test"}).
32+
Stdout(ctx)
33+
}
34+
35+
func (m *InterlinkSlurm) RunTest(interlinkVersion string, pluginService *dagger.Service, manifests *dagger.Directory, interlinkEndpoint *dagger.Service, pluginConfig *dagger.File, src *dagger.Directory,
2536
) *dagger.Container {
2637
registry := dag.Container().From("registry").
2738
WithExposedPort(5000).AsService()
2839

2940
return dag.Interlink("ci", dagger.InterlinkOpts{
30-
VirtualKubeletRef: "ghcr.io/intertwin-eu/interlink/virtual-kubelet-inttw:" + interlinkVersion,
31-
InterlinkRef: "ghcr.io/intertwin-eu/interlink/interlink:" + interlinkVersion,
41+
VirtualKubeletRef: "ghcr.io/interlink-hq/interlink/virtual-kubelet-inttw:" + interlinkVersion,
42+
InterlinkRef: "ghcr.io/interlink-hq/interlink/interlink:" + interlinkVersion,
3243
}).NewInterlink(dagger.InterlinkNewInterlinkOpts{
33-
PluginEndpoint: pluginService,
34-
Manifests: manifests,
35-
InterlinkConfig: interlinkConfig,
36-
PluginConfig: pluginConfig,
37-
LocalRegistry: registry,
44+
PluginEndpoint: pluginService,
45+
Manifests: manifests,
46+
InterlinkEndpoint: interlinkEndpoint,
47+
PluginConfig: pluginConfig,
48+
LocalRegistry: registry,
3849
}).Test(dagger.InterlinkTestOpts{
3950
Manifests: manifests,
4051
SourceFolder: src,
@@ -46,16 +57,17 @@ func (m *InterlinkSlurm) Test(ctx context.Context, interlinkVersion string, src
4657
// +optional
4758
pluginEndpoint *dagger.Service,
4859
// +optional
49-
// +defaultPath="./manifests/plugin-config.yaml"
60+
interlinkEndpoint *dagger.Service,
61+
// +optional
62+
// +defaultPath="./manifests/interlink-config.yaml"
5063
interlinkConfig *dagger.File,
5164
) (string, error) {
5265
if pluginEndpoint == nil {
5366

5467
// build using Dockerfile and publish to registry
55-
plugin := dag.Container().
56-
Build(src, dagger.ContainerBuildOpts{
57-
Dockerfile: "docker/Dockerfile",
58-
}).
68+
plugin := src.DockerBuild(dagger.DirectoryDockerBuildOpts{
69+
Dockerfile: "docker/Dockerfile",
70+
}).
5971
WithFile("/etc/interlink/InterLinkConfig.yaml", pluginConfig).
6072
WithEnvVariable("SLURMCONFIGPATH", "/etc/interlink/InterLinkConfig.yaml").
6173
WithEnvVariable("SHARED_FS", "true").
@@ -65,8 +77,25 @@ func (m *InterlinkSlurm) Test(ctx context.Context, interlinkVersion string, src
6577
if err != nil {
6678
return "", err
6779
}
68-
return m.RunTest(interlinkVersion, pluginEndpoint, manifests, interlinkConfig, pluginConfig, src).Stdout(ctx)
80+
81+
interlink := dag.Container().From("ghcr.io/interlink-hq/interlink/interlink:"+interlinkVersion).
82+
WithFile("/etc/interlink/InterLinkConfig.yaml", interlinkConfig).
83+
WithEnvVariable("BUST", time.Now().String()).
84+
WithServiceBinding("plugin", pluginEndpoint).
85+
WithEnvVariable("INTERLINKCONFIGPATH", "/etc/interlink/InterLinkConfig.yaml").
86+
WithExposedPort(3000)
87+
88+
interlinkEndpoint, err = interlink.
89+
AsService(
90+
dagger.ContainerAsServiceOpts{
91+
UseEntrypoint: true,
92+
InsecureRootCapabilities: true,
93+
}).Start(ctx)
94+
if err != nil {
95+
return "", err
96+
}
97+
return m.RunTest(interlinkVersion, pluginEndpoint, manifests, interlinkEndpoint, pluginConfig, src).Stdout(ctx)
6998
}
7099

71-
return m.RunTest(interlinkVersion, pluginEndpoint, manifests, interlinkConfig, pluginConfig, src).Stdout(ctx)
100+
return m.RunTest(interlinkVersion, pluginEndpoint, manifests, interlinkEndpoint, pluginConfig, src).Stdout(ctx)
72101
}

0 commit comments

Comments
 (0)