//go:build workflows package main // checkout is the standard actions/checkout step. var checkout = Step{Name: "Checkout", Uses: "actions/checkout@v4"} // newUploadArtifact returns an actions/upload-artifact step uploading // everything in the result directory as the specified name. func newUploadArtifact(display, name string) Step { return Step{ Name: "Upload " + display, Uses: "actions/upload-artifact@v3", With: Map[any]{ {"name", name}, {"path", "result/*"}, {"retention-days", 1}, }, } } // newCIRequest returns a step for requesting a mbf CI task. func newCIRequest(display, name, id string) Step { return Step{ Name: "Request " + display, ID: id, Run: "HAKUREI_REV=\"$(git rev-parse --short HEAD)\" && " + "/rosa/bin/mbf ci " + name + " " + ". \"$(cat cmd/dist/VERSION)-$HAKUREI_REV\" && " + "echo \"rev=$HAKUREI_REV\" >> \"$GITHUB_OUTPUT\"", } } var ( // dist is a step to obtain a hakurei distribution. dist = newCIRequest("distribution", "dist -o /tmp/dist", "dist") // _dist is like dist, but with race instrument. _dist = newCIRequest("distribution", "race -o /tmp/dist", "dist") // install is a step to unpack and deploy a hakurei distribution in /tmp/dist. install = Step{ Name: "Install hakurei", Run: "HAKUREI_VERSION=\"$(cat cmd/dist/VERSION)\" && " + "tar -C /tmp/dist " + "-xf /tmp/dist/hakurei-$HAKUREI_VERSION*-amd64.tar.gz && " + "/tmp/dist/hakurei-$HAKUREI_VERSION*-amd64/install.sh && " + "rm -rf /tmp/dist && " + "sudo -u ubuntu hakurei version", } ) // newTestsuite returns a step for running an integration test suite. func newTestsuite(name, prefix string) Step { return Step{ Name: "Compile and run test suite", Run: prefix + "go run -tags=testsuite ./cmd/" + name, } } // newNixOSTest returns a step for running the named NixOS test. func newNixOSTest(name string) Step { return Step{ Name: "Run NixOS test", Run: "nix build " + "--out-link result " + "--print-out-paths " + "--print-build-logs " + "./cmd/hakurei/testsuite#checks.x86_64-linux." + name, } }