//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\"", } } // download is a step to obtain a hakurei distribution. var download = Step{ Name: "Download hakurei distribution", ID: "download", Uses: "actions/download-artifact@v3", With: []KV[any]{ {"name", "dist-${{ needs.dist.outputs.rev }}"}, {"path", "/tmp/dist"}, }, } // _download is like download, but with race instrument. var _download = Step{ Name: "Download hakurei distribution", ID: "download", Uses: "actions/download-artifact@v3", With: []KV[any]{ {"name", "dist-${{ needs.dist-race.outputs.rev }}-race"}, {"path", "/tmp/dist"}, }, } // install is a step to unpack and deploy a hakurei distribution created by a // step with identifier dist. var 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, } }