ooni-probe-cli/GHGEN/linux.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)
}
}