59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
|
package main
|
||
|
|
||
|
//
|
||
|
// Generates Linux workflow.
|
||
|
//
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io"
|
||
|
|
||
|
"github.com/ooni/probe-cli/v3/internal/runtimex"
|
||
|
)
|
||
|
|
||
|
func buildAndPublishCLILinux(w io.Writer, job *Job) {
|
||
|
runtimex.Assert(len(job.ArchsMatrix) > 0, "expected architecture matrix")
|
||
|
|
||
|
for _, arch := range job.ArchsMatrix {
|
||
|
buildJob := fmt.Sprintf("build_linux_cli_%s", arch)
|
||
|
artifacts := []string{
|
||
|
fmt.Sprintf("./CLI/ooniprobe-linux-%s", arch),
|
||
|
fmt.Sprintf("./CLI/miniooni-linux-%s", arch),
|
||
|
}
|
||
|
testJob := fmt.Sprintf("test_linux_cli_%s", arch)
|
||
|
publishJob := fmt.Sprintf("publish_linux_cli_%s", arch)
|
||
|
|
||
|
newJob(w, buildJob, runsOnUbuntu, noDependencies, noPermissions)
|
||
|
newStepCheckout(w)
|
||
|
switch arch {
|
||
|
case "386", "amd64":
|
||
|
// nothing
|
||
|
default:
|
||
|
newSetupInstallQemuUserStatic(w)
|
||
|
}
|
||
|
newStepSetupPsiphon(w)
|
||
|
newStepSetupLinuxDockerGoCache(w, arch)
|
||
|
newStepMake(w, fmt.Sprintf("CLI/linux-static-%s", arch))
|
||
|
newStepUploadArtifacts(w, artifacts)
|
||
|
|
||
|
// We only run integration tests for amd64
|
||
|
switch arch {
|
||
|
case "amd64":
|
||
|
newJob(w, testJob, runsOnUbuntu, buildJob, noPermissions)
|
||
|
newStepCheckout(w)
|
||
|
newStepDownloadArtifacts(w, artifacts)
|
||
|
newStepSetupGo(w, fmt.Sprintf("linux-%s", arch))
|
||
|
newStepInstallTor(w)
|
||
|
newStepRunOONIProbeIntegrationTests(w, "linux", arch, "")
|
||
|
newStepRunMiniooniIntegrationTests(w, "linux", arch, "")
|
||
|
newJob(w, publishJob, runsOnUbuntu, testJob, contentsWritePermissions)
|
||
|
default:
|
||
|
newJob(w, publishJob, runsOnUbuntu, buildJob, contentsWritePermissions)
|
||
|
}
|
||
|
|
||
|
newStepCheckout(w)
|
||
|
newStepDownloadArtifacts(w, artifacts)
|
||
|
newStepGHPublish(w, artifacts)
|
||
|
}
|
||
|
}
|