# A txtar test version of evaluation phase of the process behind our
# CI workflow generation.
#
# Note: all the non-golden files below are updated automatically by
# the internal/ci updateTxtarTests CUE command (with the exception
# of the cue.mod/module.cue file).

-- workflows.cue --
package ci

import (
	"github.com/SchemaStore/schemastore/src/schemas/json"
	encjson "encoding/json"
)

workflowsDir:        *"./" | string @tag(workflowsDir)
_#masterBranch:      "master"
_#releaseTagPattern: "v*"
workflows:           [...{
	file:   string
	schema: json.#Workflow
}] & [{
	file:   "test.yml"
	schema: test
}, {
	file:   "repository_dispatch.yml"
	schema: repository_dispatch
}, {
	file:   "release.yml"
	schema: release
}, {
	file:   "rebuild_tip_cuelang_org.yml"
	schema: rebuild_tip_cuelang_org
}, {
	file:   "mirror.yml"
	schema: mirror
}]
test: _#bashWorkflow & {
	name: "Test"
	on: push: {
		branches: ["**"]
		"tags-ignore": [_#releaseTagPattern]
	}
	jobs: {
		start: {
			"runs-on": _#linuxMachine
			steps:     [..._ & {
				if: "${{ \(_#isCLCITestBranch) }}"
			}] & [_#writeCookiesFile, _#startCLBuild]
		}
		test: {
			needs:     "start"
			strategy:  _#testStrategy
			"runs-on": "${{ matrix.os }}"
			steps: [_#writeCookiesFile, _#installGo, _#checkoutCode, _#cacheGoModules, _#setGoBuildTags & {
				_#tags: "long"
				if:     "${{ \(_#isMaster) }}"
			}, _#goGenerate, _#goTest, _#goTestRace & {
				if: "${{ \(_#isMaster) || \(_#isCLCITestBranch) && matrix.go-version == '\(_#latestStableGo)' && matrix.os == '\(_#linuxMachine)' }}"
			}, _#goReleaseCheck, _#checkGitClean, _#pullThroughProxy, _#failCLBuild]
		}
		mark_ci_success: {
			"runs-on": _#linuxMachine
			if:        "${{ \(_#isCLCITestBranch) }}"
			needs:     "test"
			steps: [_#writeCookiesFile, _#passCLBuild]
		}
		delete_build_branch: {
			"runs-on": _#linuxMachine
			if:        "${{ \(_#isCLCITestBranch) && always() }}"
			needs:     "test"
			steps: [_#step & {
				run: """
							\(_#tempCueckooGitDir)
							git push https://github.com/cuelang/cue :${GITHUB_REF#\(_#branchRefPrefix)}
							"""
			}]
		}
	}

	// _#isCLCITestBranch is an expression that evaluates to true
	// if the job is running as a result of a CL triggered CI build
	_#isCLCITestBranch: "startsWith(github.ref, '\(_#branchRefPrefix)ci/')"

	// _#isMaster is an expression that evaluates to true if the
	// job is running as a result of a master commit push
	_#isMaster:         "github.ref == '\(_#branchRefPrefix+_#masterBranch)'"
	_#pullThroughProxy: _#step & {
		name: "Pull this commit through the proxy on \(_#masterBranch)"
		run: """
			v=$(git rev-parse HEAD)
			cd $(mktemp -d)
			go mod init mod.com
			GOPROXY=https://proxy.golang.org go get -d cuelang.org/go/cmd/cue@$v
			"""
		if: "${{ \(_#isMaster) }}"
	}
	_#startCLBuild: _#step & {
		name: "Update Gerrit CL message with starting message"
		run:  (_#gerrit._#setCodeReview & {
			#args: {
				message: "Started the build... see progress at ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}"
				labels: "Code-Review": 0
			}
		}).res
	}
	_#failCLBuild: _#step & {
		if:   "${{ \(_#isCLCITestBranch) && failure() }}"
		name: "Post any failures for this matrix entry"
		run:  (_#gerrit._#setCodeReview & {
			#args: {
				message: "Build failed for ${{ runner.os }}-${{ matrix.go-version }}; see ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} for more details"
				labels: "Code-Review": -1
			}
		}).res
	}
	_#passCLBuild: _#step & {
		name: "Update Gerrit CL message with success message"
		run:  (_#gerrit._#setCodeReview & {
			#args: {
				message: "Build succeeded for ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}"
				labels: "Code-Review": 1
			}
		}).res
	}
	_#gerrit: {
		// _#setCodeReview assumes that it is invoked from a job where
		// _#isCLCITestBranch is true
		_#setCodeReview: {
			#args: {
				tag:     "trybot"
				message: string
				labels: "Code-Review": int
			}
			res: "curl -f -s -H \"Content-Type: application/json\" --request POST --data '\(encjson.Marshal(#args))' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review"
		}
	}
}
repository_dispatch: _#bashWorkflow & {
	// These constants are defined by github.com/cue-sh/tools/cmd/cueckoo
	_#runtrybot:   "runtrybot"
	_#mirror:      "mirror"
	_#importpr:    "importpr"
	_#unity:       "unity"
	_#dispatchJob: _#job & {
		_#type:    string
		"runs-on": _#linuxMachine
		if:        "${{ github.event.client_payload.type == '\(_#type)' }}"
	}
	name: "Repository Dispatch"
	on: ["repository_dispatch"]
	jobs: {
		"\(_#runtrybot)": _#dispatchJob & {
			_#type: _#runtrybot
			steps: [_#step & {
				name: "Trigger trybot"
				run:  """
								\(_#tempCueckooGitDir)
								git fetch https://cue-review.googlesource.com/cue ${{ github.event.client_payload.payload.ref }}
								git checkout -b ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }} FETCH_HEAD
								git push https://github.com/cuelang/cue ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }}
								"""
			}]
		}
		"\(_#mirror)": _#dispatchJob & {
			_#type: _#mirror
			steps:  _#copybaraSteps & {
				_
				_#name: "Mirror Gerrit to GitHub"
				_#cmd:  "github"
			}
		}
		"\(_#importpr)": _#dispatchJob & {
			_#type: _#importpr
			steps:  _#copybaraSteps & {
				_
				_#name: "Import PR #${{ github.event.client_payload.commit }} from GitHub to Gerrit"
				_#cmd:  "github-pr ${{ github.event.client_payload.payload.pr }}"
			}
		}
	}
}
mirror: _#bashWorkflow & {
	name: "Scheduled repo mirror"
	on: schedule: [{
		cron: "*/30 * * * *"
	}]
	jobs: mirror: {
		"runs-on": _#linuxMachine
		steps:     _#copybaraSteps & {
			_
			_#name: "Mirror Gerrit to GitHub"
			_#cmd:  "github"
		}
	}
}
release: _#bashWorkflow & {
	name: "Release"
	on: push: tags: [_#releaseTagPattern]
	jobs: {
		goreleaser: {
			"runs-on": _#linuxMachine
			steps: [_#checkoutCode & {
				with: "fetch-depth": 0
			}, _#installGo & {
				with: version: _#latestStableGo
			}, _#step & {
				name: "Run GoReleaser"
				env: GITHUB_TOKEN: "${{ secrets.ACTIONS_GITHUB_TOKEN }}"
				uses: "goreleaser/goreleaser-action@v2"
				with: {
					args:    "release --rm-dist"
					version: "v0.155.1"
				}
			}]
		}
		docker: {
			name:      "docker"
			"runs-on": _#linuxMachine
			steps: [_#checkoutCode, _#step & {
				name: "Set version environment"
				run: """
					CUE_VERSION=$(echo ${GITHUB_REF##refs/tags/v})
					echo \"CUE_VERSION=$CUE_VERSION\"
					echo \"CUE_VERSION=$(echo $CUE_VERSION)\" >> $GITHUB_ENV
					"""
			}, _#step & {
				name: "Push to Docker Hub"
				env: {
					DOCKER_BUILDKIT: 1
					GOLANG_VERSION:  1.14
					CUE_VERSION:     "${{ env.CUE_VERSION }}"
				}
				uses: "docker/build-push-action@v1"
				with: {
					tags:           "${{ env.CUE_VERSION }},latest"
					repository:     "cuelang/cue"
					username:       "${{ secrets.DOCKER_USERNAME }}"
					password:       "${{ secrets.DOCKER_PASSWORD }}"
					tag_with_ref:   false
					tag_with_sha:   false
					target:         "cue"
					always_pull:    true
					build_args:     "GOLANG_VERSION=${{ env.GOLANG_VERSION }},CUE_VERSION=v${{ env.CUE_VERSION }}"
					add_git_labels: true
				}
			}]
		}
	}
}
rebuild_tip_cuelang_org: _#bashWorkflow & {
	name: "Push to tip"
	on: push: branches: [_#masterBranch]
	jobs: push: {
		"runs-on": _#linuxMachine
		steps: [{
			name: "Rebuild tip.cuelang.org"
			run:  "curl -f -X POST -d {} https://api.netlify.com/build_hooks/${{ secrets.CuelangOrgTipRebuildHook }}"
		}]
	}
}
_#bashWorkflow: json.#Workflow & {
	jobs: [string]: defaults: run: shell: "bash"
}

// TODO: drop when cuelang.org/issue/390 is fixed.
// Declare definitions for sub-schemas
_#job: ((json.#Workflow & {}).jobs & {
	x: _
}).x
_#step: ((_#job & {
	steps: _
}).steps & [_])[0]

// We need at least go1.14 for code generation
_#codeGenGo: "1.14.14"

// Use a specific latest version for release builds
_#latestStableGo: "1.15.8"
_#linuxMachine:   "ubuntu-18.04"
_#macosMachine:   "macos-10.15"
_#windowsMachine: "windows-2019"
_#testStrategy: {
	"fail-fast": false
	matrix: {
		// Use a stable version of 1.14.x for go generate
		"go-version": [_#codeGenGo, _#latestStableGo, "1.16"]
		os: [_#linuxMachine, _#macosMachine, _#windowsMachine]
	}
}
_#setGoBuildTags: _#step & {
	_#tags: string
	name:   "Set go build tags"
	run:    "go env -w GOFLAGS=-tags=\(_#tags)"
}
_#installGo: _#step & {
	name: "Install Go"
	uses: "actions/setup-go@v2"
	with: {
		"go-version": *"${{ matrix.go-version }}" | string
		stable:       false
	}
}
_#checkoutCode: _#step & {
	name: "Checkout code"
	uses: "actions/checkout@v2"
}
_#cacheGoModules: _#step & {
	name: "Cache Go modules"
	uses: "actions/cache@v1"
	with: {
		path: "~/go/pkg/mod"
		key:  "${{ runner.os }}-${{ matrix.go-version }}-go-${{ hashFiles('**/go.sum') }}"
		"restore-keys": """
			${{ runner.os }}-${{ matrix.go-version }}-go-
			"""
	}
}
_#goGenerate: _#step & {
	name: "Generate"
	run:  "go generate ./..."
	// The Go version corresponds to the precise version specified in
	// the matrix. Skip windows for now until we work out why re-gen is flaky
	if: "matrix.go-version == '\(_#codeGenGo)' && matrix.os != '\(_#windowsMachine)'"
}
_#goTest: _#step & {
	name: "Test"
	run:  "go test ./..."
}
_#goTestRace: _#step & {
	name: "Test with -race"
	run:  "go test -race ./..."
}
_#goReleaseCheck: _#step & {
	name: "gorelease check"
	run:  "go run golang.org/x/exp/cmd/gorelease"
}
_#checkGitClean: _#step & {
	name: "Check that git is clean post generate and tests"
	run:  "test -z \"$(git status --porcelain)\" || (git status; git diff; false)"
}
_#writeCookiesFile: _#step & {
	name: "Write the gitcookies file"
	run:  "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies"
}
_#branchRefPrefix: "refs/heads/"
_#tempCueckooGitDir: """
	mkdir tmpgit
	cd tmpgit
	git init
	git config user.name cueckoo
	git config user.email cueckoo@gmail.com
	git config http.https://github.com/.extraheader "AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)"
	"""

// The cueckoo/copybara Docker image to use
_#cueckooCopybaraImage: "cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c"

// Define the base command for copybara
_#copybaraCmd: {
	"""
		cd _scripts
		docker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint="" \(_#cueckooCopybaraImage) bash -c " \\
		\tset -eu; \\
		\techo \\"${{ secrets.gerritCookie }}\\" > ~/.gitcookies; \\
		\tchmod 600 ~/.gitcookies; \\
		\tgit config --global user.name cueckoo; \\
		\tgit config --global user.email cueckoo@gmail.com; \\
		\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\
		  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\
		\tchmod 600 ~/.git-credentials; \\
		\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky \(_#cmd); \\
		\t"
		"""
	_#cmd: string
}
_#copybaraSteps: {
	let cmdCmd = _#cmd
	[_#checkoutCode, _#step & {
		name: _#name
		run:  _#copybaraCmd & {
			_
			_#cmd: cmdCmd
		}
	}]
	_#name: string
	_#cmd:  string
}
-- cue.mod/module.cue --
module: "mod.com"

-- cue.mod/pkg/github.com/SchemaStore/schemastore/src/schemas/json/github-workflow.cue --
package json

import "strings"

#Workflow: {
	@jsonschema(schema="http://json-schema.org/draft-07/schema")
	null | bool | number | string | [...] | {
		// The name of your workflow. GitHub displays the names of your
		// workflows on your repository's actions page. If you omit this
		// field, GitHub sets the name to the workflow's filename.
		name?: string

		// The name of the GitHub event that triggers the workflow. You
		// can provide a single event string, array of events, array of
		// event types, or an event configuration map that schedules a
		// workflow or restricts the execution of a workflow to specific
		// files, tags, or branch changes. For a list of available
		// events, see
		// https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows.
		on: #event | [...#event] & [_, ...] | {
			// Runs your workflow anytime the check_run event occurs. More
			// than one activity type triggers this event. For information
			// about the REST API, see
			// https://developer.github.com/v3/checks/runs.
			check_run?: #eventObject & {
				types?: #types & [..."created" | "rerequested" | "completed" | "requested_action"] | *["created", "rerequested", "completed", "requested_action"]
				...
			}

			// Runs your workflow anytime the check_suite event occurs. More
			// than one activity type triggers this event. For information
			// about the REST API, see
			// https://developer.github.com/v3/checks/suites/.
			check_suite?: #eventObject & {
				types?: #types & [..."completed" | "requested" | "rerequested"] | *["completed", "requested", "rerequested"]
				...
			}

			// Runs your workflow anytime someone creates a branch or tag,
			// which triggers the create event. For information about the
			// REST API, see
			// https://developer.github.com/v3/git/refs/#create-a-reference.
			create?: #eventObject

			// Runs your workflow anytime someone deletes a branch or tag,
			// which triggers the delete event. For information about the
			// REST API, see
			// https://developer.github.com/v3/git/refs/#delete-a-reference.
			delete?: #eventObject

			// Runs your workflow anytime someone creates a deployment, which
			// triggers the deployment event. Deployments created with a
			// commit SHA may not have a Git ref. For information about the
			// REST API, see
			// https://developer.github.com/v3/repos/deployments/.
			deployment?: #eventObject

			// Runs your workflow anytime a third party provides a deployment
			// status, which triggers the deployment_status event.
			// Deployments created with a commit SHA may not have a Git ref.
			// For information about the REST API, see
			// https://developer.github.com/v3/repos/deployments/#create-a-deployment-status.
			deployment_status?: #eventObject

			// Runs your workflow anytime when someone forks a repository,
			// which triggers the fork event. For information about the REST
			// API, see
			// https://developer.github.com/v3/repos/forks/#create-a-fork.
			fork?: #eventObject

			// Runs your workflow when someone creates or updates a Wiki page,
			// which triggers the gollum event.
			gollum?: #eventObject

			// Runs your workflow anytime the issue_comment event occurs. More
			// than one activity type triggers this event. For information
			// about the REST API, see
			// https://developer.github.com/v3/issues/comments/.
			issue_comment?: #eventObject & {
				types?: #types & [..."created" | "edited" | "deleted"] | *["created", "edited", "deleted"]
				...
			}

			// Runs your workflow anytime the issues event occurs. More than
			// one activity type triggers this event. For information about
			// the REST API, see https://developer.github.com/v3/issues.
			issues?: #eventObject & {
				types?: #types & [..."opened" | "edited" | "deleted" | "transferred" | "pinned" | "unpinned" | "closed" | "reopened" | "assigned" | "unassigned" | "labeled" | "unlabeled" | "locked" | "unlocked" | "milestoned" | "demilestoned"] | *["opened", "edited", "deleted", "transferred", "pinned", "unpinned", "closed", "reopened", "assigned", "unassigned", "labeled", "unlabeled", "locked", "unlocked", "milestoned", "demilestoned"]
				...
			}

			// Runs your workflow anytime the label event occurs. More than
			// one activity type triggers this event. For information about
			// the REST API, see
			// https://developer.github.com/v3/issues/labels/.
			label?: #eventObject & {
				types?: #types & [..."created" | "edited" | "deleted"] | *["created", "edited", "deleted"]
				...
			}

			// Runs your workflow anytime the member event occurs. More than
			// one activity type triggers this event. For information about
			// the REST API, see
			// https://developer.github.com/v3/repos/collaborators/.
			member?: #eventObject & {
				types?: #types & [..."added" | "edited" | "deleted"] | *["added", "edited", "deleted"]
				...
			}

			// Runs your workflow anytime the milestone event occurs. More
			// than one activity type triggers this event. For information
			// about the REST API, see
			// https://developer.github.com/v3/issues/milestones/.
			milestone?: #eventObject & {
				types?: #types & [..."created" | "closed" | "opened" | "edited" | "deleted"] | *["created", "closed", "opened", "edited", "deleted"]
				...
			}

			// Runs your workflow anytime someone pushes to a GitHub
			// Pages-enabled branch, which triggers the page_build event. For
			// information about the REST API, see
			// https://developer.github.com/v3/repos/pages/.
			page_build?: #eventObject

			// Runs your workflow anytime the project event occurs. More than
			// one activity type triggers this event. For information about
			// the REST API, see https://developer.github.com/v3/projects/.
			project?: #eventObject & {
				types?: #types & [..."created" | "updated" | "closed" | "reopened" | "edited" | "deleted"] | *["created", "updated", "closed", "reopened", "edited", "deleted"]
				...
			}

			// Runs your workflow anytime the project_card event occurs. More
			// than one activity type triggers this event. For information
			// about the REST API, see
			// https://developer.github.com/v3/projects/cards.
			project_card?: #eventObject & {
				types?: #types & [..."created" | "moved" | "converted" | "edited" | "deleted"] | *["created", "moved", "converted", "edited", "deleted"]
				...
			}

			// Runs your workflow anytime the project_column event occurs.
			// More than one activity type triggers this event. For
			// information about the REST API, see
			// https://developer.github.com/v3/projects/columns.
			project_column?: #eventObject & {
				types?: #types & [..."created" | "updated" | "moved" | "deleted"] | *["created", "updated", "moved", "deleted"]
				...
			}

			// Runs your workflow anytime someone makes a private repository
			// public, which triggers the public event. For information about
			// the REST API, see https://developer.github.com/v3/repos/#edit.
			public?: #eventObject

			// Runs your workflow anytime the pull_request event occurs. More
			// than one activity type triggers this event. For information
			// about the REST API, see https://developer.github.com/v3/pulls.
			// Note: Workflows do not run on private base repositories when
			// you open a pull request from a forked repository.
			// When you create a pull request from a forked repository to the
			// base repository, GitHub sends the pull_request event to the
			// base repository and no pull request events occur on the forked
			// repository.
			// Workflows don't run on forked repositories by default. You must
			// enable GitHub Actions in the Actions tab of the forked
			// repository.
			// The permissions for the GITHUB_TOKEN in forked repositories is
			// read-only. For more information about the GITHUB_TOKEN, see
			// https://help.github.com/en/articles/virtual-environments-for-github-actions.
			pull_request?: #ref & {
				types?: #types & [..."assigned" | "unassigned" | "labeled" | "unlabeled" | "opened" | "edited" | "closed" | "reopened" | "synchronize" | "ready_for_review" | "locked" | "unlocked" | "review_requested" | "review_request_removed"] | *["opened", "synchronize", "reopened"]

				{[=~"^(branche|tag|path)s(-ignore)?$" & !~"^(types)$"]: _}
			}

			// Runs your workflow anytime the pull_request_review event
			// occurs. More than one activity type triggers this event. For
			// information about the REST API, see
			// https://developer.github.com/v3/pulls/reviews.
			// Note: Workflows do not run on private base repositories when
			// you open a pull request from a forked repository.
			// When you create a pull request from a forked repository to the
			// base repository, GitHub sends the pull_request event to the
			// base repository and no pull request events occur on the forked
			// repository.
			// Workflows don't run on forked repositories by default. You must
			// enable GitHub Actions in the Actions tab of the forked
			// repository.
			// The permissions for the GITHUB_TOKEN in forked repositories is
			// read-only. For more information about the GITHUB_TOKEN, see
			// https://help.github.com/en/articles/virtual-environments-for-github-actions.
			pull_request_review?: #eventObject & {
				types?: #types & [..."submitted" | "edited" | "dismissed"] | *["submitted", "edited", "dismissed"]
				...
			}

			// Runs your workflow anytime a comment on a pull request's
			// unified diff is modified, which triggers the
			// pull_request_review_comment event. More than one activity type
			// triggers this event. For information about the REST API, see
			// https://developer.github.com/v3/pulls/comments.
			// Note: Workflows do not run on private base repositories when
			// you open a pull request from a forked repository.
			// When you create a pull request from a forked repository to the
			// base repository, GitHub sends the pull_request event to the
			// base repository and no pull request events occur on the forked
			// repository.
			// Workflows don't run on forked repositories by default. You must
			// enable GitHub Actions in the Actions tab of the forked
			// repository.
			// The permissions for the GITHUB_TOKEN in forked repositories is
			// read-only. For more information about the GITHUB_TOKEN, see
			// https://help.github.com/en/articles/virtual-environments-for-github-actions.
			pull_request_review_comment?: #eventObject & {
				types?: #types & [..."created" | "edited" | "deleted"] | *["created", "edited", "deleted"]
				...
			}

			// This event is similar to pull_request, except that it runs in
			// the context of the base repository of the pull request, rather
			// than in the merge commit. This means that you can more safely
			// make your secrets available to the workflows triggered by the
			// pull request, because only workflows defined in the commit on
			// the base repository are run. For example, this event allows
			// you to create workflows that label and comment on pull
			// requests, based on the contents of the event payload.
			pull_request_target?: #ref & {
				types?: #types & [..."assigned" | "unassigned" | "labeled" | "unlabeled" | "opened" | "edited" | "closed" | "reopened" | "synchronize" | "ready_for_review" | "locked" | "unlocked" | "review_requested" | "review_request_removed"] | *["opened", "synchronize", "reopened"]

				{[=~"^(branche|tag|path)s(-ignore)?$" & !~"^(types)$"]: _}
			}

			// Runs your workflow when someone pushes to a repository branch,
			// which triggers the push event.
			// Note: The webhook payload available to GitHub Actions does not
			// include the added, removed, and modified attributes in the
			// commit object. You can retrieve the full commit object using
			// the REST API. For more information, see
			// https://developer.github.com/v3/repos/commits/#get-a-single-commit.
			push?: #ref & {
				{[=~"^(branche|tag|path)s(-ignore)?$" & !~"^()$"]: _}
			}

			// Runs your workflow anytime a package is published or updated.
			// For more information, see
			// https://help.github.com/en/github/managing-packages-with-github-packages.
			registry_package?: #eventObject & {
				types?: #types & [..."published" | "updated"] | *["published", "updated"]
				...
			}

			// Runs your workflow anytime the release event occurs. More than
			// one activity type triggers this event. For information about
			// the REST API, see
			// https://developer.github.com/v3/repos/releases/ in the GitHub
			// Developer documentation.
			release?: #eventObject & {
				types?: #types & [..."published" | "unpublished" | "created" | "edited" | "deleted" | "prereleased" | "released"] | *["published", "unpublished", "created", "edited", "deleted", "prereleased", "released"]
				...
			}

			// Runs your workflow anytime the status of a Git commit changes,
			// which triggers the status event. For information about the
			// REST API, see https://developer.github.com/v3/repos/statuses/.
			status?: #eventObject

			// Runs your workflow anytime the watch event occurs. More than
			// one activity type triggers this event. For information about
			// the REST API, see
			// https://developer.github.com/v3/activity/starring/.
			watch?: #eventObject

			// You can now create workflows that are manually triggered with
			// the new workflow_dispatch event. You will then see a 'Run
			// workflow' button on the Actions tab, enabling you to easily
			// trigger a run.
			workflow_dispatch?: null | bool | number | string | [...] | {
				// Input parameters allow you to specify data that the action
				// expects to use during runtime. GitHub stores input parameters
				// as environment variables. Input ids with uppercase letters are
				// converted to lowercase during runtime. We recommended using
				// lowercase input ids.
				inputs?: {
					{[=~"^[_a-zA-Z][a-zA-Z0-9_-]*$" & !~"^()$"]: {
						// A string description of the input parameter.
						description: string

						// A string shown to users using the deprecated input.
						deprecationMessage?: string

						// A boolean to indicate whether the action requires the input
						// parameter. Set to true when the parameter is required.
						required: bool

						// A string representing the default value. The default value is
						// used when an input parameter isn't specified in a workflow
						// file.
						default?: string
					}}
				}
				...
			}

			// This event occurs when a workflow run is requested or
			// completed, and allows you to execute a workflow based on the
			// finished result of another workflow. For example, if your
			// pull_request workflow generates build artifacts, you can
			// create a new workflow that uses workflow_run to analyze the
			// results and add a comment to the original pull request.
			workflow_run?: #eventObject & {
				types?:     #types & [..."requested" | "completed"] | *["requested", "completed"]
				workflows?: [...string] & [_, ...]

				{[=~"^branches(-ignore)?$" & !~"^(types|workflows)$"]: _}
				...
			}

			// You can use the GitHub API to trigger a webhook event called
			// repository_dispatch when you want to trigger a workflow for
			// activity that happens outside of GitHub. For more information,
			// see
			// https://developer.github.com/v3/repos/#create-a-repository-dispatch-event.
			// To trigger the custom repository_dispatch webhook event, you
			// must send a POST request to a GitHub API endpoint and provide
			// an event_type name to describe the activity type. To trigger a
			// workflow run, you must also configure your workflow to use the
			// repository_dispatch event.
			repository_dispatch?: #eventObject

			// You can schedule a workflow to run at specific UTC times using
			// POSIX cron syntax
			// (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07).
			// Scheduled workflows run on the latest commit on the default or
			// base branch. The shortest interval you can run scheduled
			// workflows is once every 5 minutes.
			// Note: GitHub Actions does not support the non-standard syntax
			// @yearly, @monthly, @weekly, @daily, @hourly, and @reboot.
			// You can use crontab guru (https://crontab.guru/). to help
			// generate your cron syntax and confirm what time it will run.
			// To help you get started, there is also a list of crontab guru
			// examples (https://crontab.guru/examples.html).
			schedule?: [...null | bool | number | string | [...] | {
				cron?: =~"^(((\\d+,)+\\d+|((\\d+|\\*)\\/\\d+|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)|(\\d+-\\d+)|\\d+|\\*|MON|TUE|WED|THU|FRI|SAT|SUN) ?){5,7}$"
			}] & [_, ...]
		}

		// A map of environment variables that are available to all jobs
		// and steps in the workflow.
		env?: #env

		// A map of default settings that will apply to all jobs in the
		// workflow.
		defaults?: #defaults

		// A workflow run is made up of one or more jobs. Jobs run in
		// parallel by default. To run jobs sequentially, you can define
		// dependencies on other jobs using the jobs.<job_id>.needs
		// keyword.
		// Each job runs in a fresh instance of the virtual environment
		// specified by runs-on.
		// You can run an unlimited number of jobs as long as you are
		// within the workflow usage limits. For more information, see
		// https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#usage-limits.
		jobs: {
			{[=~"^[_a-zA-Z][a-zA-Z0-9_-]*$" & !~"^()$"]: {
				// The name of the job displayed on GitHub.
				name?: string

				// Identifies any jobs that must complete successfully before this
				// job will run. It can be a string or array of strings. If a job
				// fails, all jobs that need it are skipped unless the jobs use a
				// conditional statement that causes the job to continue.
				needs?: [...#name] & [_, ...] | #name

				// The type of machine to run the job on. The machine can be
				// either a GitHub-hosted runner, or a self-hosted runner.
				"runs-on": "macos-10.15" | "macos-11.0" | "macos-latest" | "self-hosted" | "ubuntu-16.04" | "ubuntu-18.04" | "ubuntu-20.04" | "ubuntu-latest" | "windows-2016" | "windows-2019" | "windows-latest" | (["self-hosted"] | ["self-hosted", #machine] | ["self-hosted", #architecture] | ["self-hosted", #machine, #architecture] | ["self-hosted", #architecture, #machine]) & [...] | #expressionSyntax

				// The environment that the job references.
				environment?: string | #environment

				// A map of outputs for a job. Job outputs are available to all
				// downstream jobs that depend on this job.
				outputs?: {
					[string]: string
				}

				// A map of environment variables that are available to all steps
				// in the job.
				env?: #env

				// A map of default settings that will apply to all steps in the
				// job.
				defaults?: #defaults

				// You can use the if conditional to prevent a job from running
				// unless a condition is met. You can use any supported context
				// and expression to create a conditional.
				// Expressions in an if conditional do not require the ${{ }}
				// syntax. For more information, see
				// https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.
				if?: string

				// A job contains a sequence of tasks called steps. Steps can run
				// commands, run setup tasks, or run an action in your
				// repository, a public repository, or an action published in a
				// Docker registry. Not all steps run actions, but all actions
				// run as a step. Each step runs in its own process in the
				// virtual environment and has access to the workspace and
				// filesystem. Because steps run in their own process, changes to
				// environment variables are not preserved between steps. GitHub
				// provides built-in steps to set up and complete a job.
				steps?: [...{
					// A unique identifier for the step. You can use the id to
					// reference the step in contexts. For more information, see
					// https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.
					id?: string

					// You can use the if conditional to prevent a step from running
					// unless a condition is met. You can use any supported context
					// and expression to create a conditional.
					// Expressions in an if conditional do not require the ${{ }}
					// syntax. For more information, see
					// https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.
					if?: string

					// A name for your step to display on GitHub.
					name?: string

					// Selects an action to run as part of a step in your job. An
					// action is a reusable unit of code. You can use an action
					// defined in the same repository as the workflow, a public
					// repository, or in a published Docker container image
					// (https://hub.docker.com/).
					// We strongly recommend that you include the version of the
					// action you are using by specifying a Git ref, SHA, or Docker
					// tag number. If you don't specify a version, it could break
					// your workflows or cause unexpected behavior when the action
					// owner publishes an update.
					// - Using the commit SHA of a released action version is the
					// safest for stability and security.
					// - Using the specific major action version allows you to receive
					// critical fixes and security patches while still maintaining
					// compatibility. It also assures that your workflow should still
					// work.
					// - Using the master branch of an action may be convenient, but
					// if someone releases a new major version with a breaking
					// change, your workflow could break.
					// Some actions require inputs that you must set using the with
					// keyword. Review the action's README file to determine the
					// inputs required.
					// Actions are either JavaScript files or Docker containers. If
					// the action you're using is a Docker container you must run the
					// job in a Linux virtual environment. For more details, see
					// https://help.github.com/en/articles/virtual-environments-for-github-actions.
					uses?: string

					// Runs command-line programs using the operating system's shell.
					// If you do not provide a name, the step name will default to
					// the text specified in the run command.
					// Commands run using non-login shells by default. You can choose
					// a different shell and customize the shell used to run
					// commands. For more information, see
					// https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#using-a-specific-shell.
					// Each run keyword represents a new process and shell in the
					// virtual environment. When you provide multi-line commands,
					// each line runs in the same shell.
					run?: string, "working-directory"?: #["working-directory"], shell?: #shell

					// A map of the input parameters defined by the action. Each input
					// parameter is a key/value pair. Input parameters are set as
					// environment variables. The variable is prefixed with INPUT_
					// and converted to upper case.
					with?: #env & {
						args?: string, entrypoint?: string, ...
					}

					// Sets environment variables for steps to use in the virtual
					// environment. You can also set environment variables for the
					// entire workflow or a job.
					env?: #env

					// Prevents a job from failing when a step fails. Set to true to
					// allow a job to pass when this step fails.
					"continue-on-error"?: bool | #expressionSyntax | *false

					// The maximum number of minutes to run the step before killing
					// the process.
					"timeout-minutes"?: number
				}] & [_, ...]

				// The maximum number of minutes to let a workflow run before
				// GitHub automatically cancels it. Default: 360
				"timeout-minutes"?: number | *360

				// A strategy creates a build matrix for your jobs. You can define
				// different variations of an environment to run each job in.
				strategy?: {
					// A build matrix is a set of different configurations of the
					// virtual environment. For example you might run a job against
					// more than one supported version of a language, operating
					// system, or tool. Each configuration is a copy of the job that
					// runs and reports a status.
					// You can specify a matrix by supplying an array for the
					// configuration options. For example, if the GitHub virtual
					// environment supports Node.js versions 6, 8, and 10 you could
					// specify an array of those versions in the matrix.
					// When you define a matrix of operating systems, you must set the
					// required runs-on keyword to the operating system of the
					// current job, rather than hard-coding the operating system
					// name. To access the operating system name, you can use the
					// matrix.os context parameter to set runs-on. For more
					// information, see
					// https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.
					matrix: ({
						...
					} | #expressionSyntax) & {
						{[=~"^(in|ex)clude$" & !~"^()$"]: [...{
											[string]: #configuration
						}] & [_, ...]}
						{[!~"^(in|ex)clude$" & !~"^()$"]: [...#configuration] & [_, ...]}
					}

					// When set to true, GitHub cancels all in-progress jobs if any
					// matrix job fails. Default: true
					"fail-fast"?: bool | *true

					// The maximum number of jobs that can run simultaneously when
					// using a matrix job strategy. By default, GitHub will maximize
					// the number of jobs run in parallel depending on the available
					// runners on GitHub-hosted virtual machines.
					"max-parallel"?: number
				}

				// Prevents a workflow run from failing when a job fails. Set to
				// true to allow a workflow run to pass when this job fails.
				"continue-on-error"?: bool | #expressionSyntax

				// A container to run any steps in a job that don't already
				// specify a container. If you have steps that use both script
				// and container actions, the container actions will run as
				// sibling containers on the same network with the same volume
				// mounts.
				// If you do not set a container, all steps will run directly on
				// the host specified by runs-on unless a step refers to an
				// action configured to run in a container.
				container?: string | #container

				// Additional containers to host services for a job in a workflow.
				// These are useful for creating databases or cache services like
				// redis. The runner on the virtual machine will automatically
				// create a network and manage the life cycle of the service
				// containers.
				// When you use a service container for a job or your step uses
				// container actions, you don't need to set port information to
				// access the service. Docker automatically exposes all ports
				// between containers on the same network.
				// When both the job and the action run in a container, you can
				// directly reference the container by its hostname. The hostname
				// is automatically mapped to the service name.
				// When a step does not use a container action, you must access
				// the service using localhost and bind the ports.
				services?: {
					[string]: #container
				}
			}}
		}
	}

	#architecture: "ARM32" | "x64" | "x86"

	#branch: #globs

	#configuration: string | number | bool | {
		[string]: #configuration
	} | [...#configuration]

	#container: {
		// The Docker image to use as the container to run the action. The
		// value can be the Docker Hub image name or a registry name.
		image: string

		// If the image's container registry requires authentication to
		// pull the image, you can use credentials to set a map of the
		// username and password. The credentials are the same values
		// that you would provide to the `docker login` command.
		credentials?: {
			username?: string
			password?: string
			...
		}

		// Sets an array of environment variables in the container.
		env?: #env

		// Sets an array of ports to expose on the container.
		ports?: [...number | string] & [_, ...]

		// Sets an array of volumes for the container to use. You can use
		// volumes to share data between services or other steps in a
		// job. You can specify named Docker volumes, anonymous Docker
		// volumes, or bind mounts on the host.
		// To specify a volume, you specify the source and destination
		// path: <source>:<destinationPath>
		// The <source> is a volume name or an absolute path on the host
		// machine, and <destinationPath> is an absolute path in the
		// container.
		volumes?: [...=~"^[^:]+:[^:]+$"] & [_, ...]

		// Additional Docker container resource options. For a list of
		// options, see
		// https://docs.docker.com/engine/reference/commandline/create/#options.
		options?: string
	}

	#defaults: run?: {
		shell?:               #shell
		"working-directory"?: #["working-directory"]
	}

	#env: [string]: bool | number | string

	#environment: {
		// The name of the environment configured in the repo.
		name: string

		// A deployment URL
		url?: string
	}

	#event: "check_run" | "check_suite" | "create" | "delete" | "deployment" | "deployment_status" | "fork" | "gollum" | "issue_comment" | "issues" | "label" | "member" | "milestone" | "page_build" | "project" | "project_card" | "project_column" | "public" | "pull_request" | "pull_request_review" | "pull_request_review_comment" | "pull_request_target" | "push" | "registry_package" | "release" | "status" | "watch" | "workflow_dispatch" | "workflow_run" | "repository_dispatch"

	#eventObject: null | {
		...
	}

	#expressionSyntax: =~"^\\$\\{\\{.*\\}\\}$"

	#globs: [...strings.MinRunes(1)] & [_, ...]

	#machine: "linux" | "macos" | "windows"

	#name: =~"^[_a-zA-Z][a-zA-Z0-9_-]*$"

	#path: #globs

	#ref: null | {
		branches?:          #branch
		"branches-ignore"?: #branch
		tags?:              #branch
		"tags-ignore"?:     #branch
		paths?:             #path
		"paths-ignore"?:    #path
		...
	}

	#shell: (string | ("bash" | "pwsh" | "python" | "sh" | "cmd" | "powershell")) & string

	#types: [_, ...]

	#: "working-directory": string
}
-- out/eval --
(struct){
  workflowsDir: (string){ |(*(string){ "./" }, (string){ string }) }
  _#masterBranch(:ci): (string){ "master" }
  _#releaseTagPattern(:ci): (string){ "v*" }
  workflows: (#list){
    0: (struct){
      file: (string){ "test.yml" }
      schema: (#struct){
        #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
        #branch: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
          }, (list){
          }) }
        #container: (#struct){
          image: (string){ string }
        }
        #defaults: (#struct){
        }
        #env: (#struct){
        }
        #environment: (#struct){
          name: (string){ string }
        }
        #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
        #eventObject: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
        #globs: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
        #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
        #path: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #ref: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
        #types: (list){
          0: (_){ _ }
        }
        #: (#struct){
          "working-directory": (string){ string }
        }
        jobs: (#struct){
          start: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Write the gitcookies file" }
                run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
                if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') }}" }
              }
              1: (#struct){
                name: (string){ "Update Gerrit CL message with starting message" }
                run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Started the build... see progress at ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":0}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
                if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') }}" }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
          test: (#struct){
            needs: (string){ "start" }
            strategy: (#struct){
              "fail-fast": (bool){ false }
              matrix: (#struct){
                "go-version": (#list){
                  0: (string){ "1.14.14" }
                  1: (string){ "1.15.8" }
                  2: (string){ "1.16" }
                }
                os: (#list){
                  0: (string){ "ubuntu-18.04" }
                  1: (string){ "macos-10.15" }
                  2: (string){ "windows-2019" }
                }
              }
            }
            "runs-on": (string){ "${{ matrix.os }}" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Write the gitcookies file" }
                run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
              }
              1: (#struct){
                name: (string){ "Install Go" }
                uses: (string){ "actions/setup-go@v2" }
                with: (#struct){
                  "go-version": (string){ |(*(string){ "${{ matrix.go-version }}" }, (string){ string }) }
                  stable: (bool){ false }
                }
              }
              2: (#struct){
                name: (string){ "Checkout code" }
                uses: (string){ "actions/checkout@v2" }
              }
              3: (#struct){
                name: (string){ "Cache Go modules" }
                uses: (string){ "actions/cache@v1" }
                with: (#struct){
                  path: (string){ "~/go/pkg/mod" }
                  key: (string){ "${{ runner.os }}-${{ matrix.go-version }}-go-${{ hashFiles('**/go.sum') }}" }
                  "restore-keys": (string){ "${{ runner.os }}-${{ matrix.go-version }}-go-" }
                }
              }
              4: (#struct){
                _#tags(:ci): (string){ "long" }
                name: (string){ "Set go build tags" }
                run: (string){ "go env -w GOFLAGS=-tags=long" }
                if: (string){ "${{ github.ref == 'refs/heads/master' }}" }
              }
              5: (#struct){
                name: (string){ "Generate" }
                run: (string){ "go generate ./..." }
                if: (string){ "matrix.go-version == '1.14.14' && matrix.os != 'windows-2019'" }
              }
              6: (#struct){
                name: (string){ "Test" }
                run: (string){ "go test ./..." }
              }
              7: (#struct){
                name: (string){ "Test with -race" }
                run: (string){ "go test -race ./..." }
                if: (string){ "${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/ci/') && matrix.go-version == '1.15.8' && matrix.os == 'ubuntu-18.04' }}" }
              }
              8: (#struct){
                name: (string){ "gorelease check" }
                run: (string){ "go run golang.org/x/exp/cmd/gorelease" }
              }
              9: (#struct){
                name: (string){ "Check that git is clean post generate and tests" }
                run: (string){ "test -z \"$(git status --porcelain)\" || (git status; git diff; false)" }
              }
              10: (#struct){
                name: (string){ "Pull this commit through the proxy on master" }
                run: (string){ "v=$(git rev-parse HEAD)\ncd $(mktemp -d)\ngo mod init mod.com\nGOPROXY=https://proxy.golang.org go get -d cuelang.org/go/cmd/cue@$v" }
                if: (string){ "${{ github.ref == 'refs/heads/master' }}" }
              }
              11: (#struct){
                if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') && failure() }}" }
                name: (string){ "Post any failures for this matrix entry" }
                run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build failed for ${{ runner.os }}-${{ matrix.go-version }}; see ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} for more details\",\"labels\":{\"Code-Review\":-1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
          mark_ci_success: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') }}" }
            needs: (string){ "test" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Write the gitcookies file" }
                run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
              }
              1: (#struct){
                name: (string){ "Update Gerrit CL message with success message" }
                run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build succeeded for ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
          delete_build_branch: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') && always() }}" }
            needs: (string){ "test" }
            steps: (#list){
              0: (#struct){
                run: (string){ "mkdir tmpgit\ncd tmpgit\ngit init\ngit config user.name cueckoo\ngit config user.email cueckoo@gmail.com\ngit config http.https://github.com/.extraheader \"AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)\"\ngit push https://github.com/cuelang/cue :${GITHUB_REF#refs/heads/}" }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
        }
        name: (string){ "Test" }
        on: (#struct){
          push: (#struct){
            branches: (#list){
              0: (string){ "**" }
            }
            "tags-ignore": (#list){
              0: (string){ "v*" }
            }
          }
        }
        _#isCLCITestBranch(:ci): (string){ "startsWith(github.ref, 'refs/heads/ci/')" }
        _#isMaster(:ci): (string){ "github.ref == 'refs/heads/master'" }
        _#pullThroughProxy(:ci): (#struct){
          name: (string){ "Pull this commit through the proxy on master" }
          run: (string){ "v=$(git rev-parse HEAD)\ncd $(mktemp -d)\ngo mod init mod.com\nGOPROXY=https://proxy.golang.org go get -d cuelang.org/go/cmd/cue@$v" }
          if: (string){ "${{ github.ref == 'refs/heads/master' }}" }
        }
        _#startCLBuild(:ci): (#struct){
          name: (string){ "Update Gerrit CL message with starting message" }
          run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Started the build... see progress at ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":0}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
        }
        _#failCLBuild(:ci): (#struct){
          if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') && failure() }}" }
          name: (string){ "Post any failures for this matrix entry" }
          run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build failed for ${{ runner.os }}-${{ matrix.go-version }}; see ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} for more details\",\"labels\":{\"Code-Review\":-1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
        }
        _#passCLBuild(:ci): (#struct){
          name: (string){ "Update Gerrit CL message with success message" }
          run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build succeeded for ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
        }
        _#gerrit(:ci): (#struct){
          _#setCodeReview(:ci): (#struct){
            #args: (#struct){
              tag: (string){ "trybot" }
              message: (string){ string }
              labels: (#struct){
                "Code-Review": (int){ int }
              }
            }
            res: (_|_){
              // [incomplete] invalid interpolation: cannot convert incomplete value "string" to JSON:
              //     ./workflows.cue:127:9
            }
          }
        }
      }
    }
    1: (struct){
      file: (string){ "repository_dispatch.yml" }
      schema: (#struct){
        #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
        #branch: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
          }, (list){
          }) }
        #container: (#struct){
          image: (string){ string }
        }
        #defaults: (#struct){
        }
        #env: (#struct){
        }
        #environment: (#struct){
          name: (string){ string }
        }
        #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
        #eventObject: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
        #globs: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
        #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
        #path: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #ref: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
        #types: (list){
          0: (_){ _ }
        }
        #: (#struct){
          "working-directory": (string){ string }
        }
        jobs: (#struct){
          runtrybot: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            _#type(:ci): (string){ "runtrybot" }
            if: (string){ "${{ github.event.client_payload.type == 'runtrybot' }}" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Trigger trybot" }
                run: (string){ "mkdir tmpgit\ncd tmpgit\ngit init\ngit config user.name cueckoo\ngit config user.email cueckoo@gmail.com\ngit config http.https://github.com/.extraheader \"AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)\"\ngit fetch https://cue-review.googlesource.com/cue ${{ github.event.client_payload.payload.ref }}\ngit checkout -b ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }} FETCH_HEAD\ngit push https://github.com/cuelang/cue ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }}" }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
          mirror: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            _#type(:ci): (string){ "mirror" }
            if: (string){ "${{ github.event.client_payload.type == 'mirror' }}" }
            steps: (#list){
              _#name(:ci): (string){ "Mirror Gerrit to GitHub" }
              _#cmd(:ci): (string){ "github" }
              0: (#struct){
                name: (string){ "Checkout code" }
                uses: (string){ "actions/checkout@v2" }
              }
              1: (#struct){
                name: (string){ "Mirror Gerrit to GitHub" }
                run: (string){
                  "cd _scripts\ndocker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint=\"\" cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c bash -c \" \\\n\tset -eu; \\\n\techo \\\"${{ secrets.gerritCookie }}\\\" > ~/.gitcookies; \\\n\tchmod 600 ~/.gitcookies; \\\n\tgit config --global user.name cueckoo; \\\n\tgit config --global user.email cueckoo@gmail.com; \\\n\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\\n  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\\n\tchmod 600 ~/.git-credentials; \\\n\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky github; \\\n\t\""
                  _#cmd(:ci): (string){ "github" }
                }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
          importpr: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            _#type(:ci): (string){ "importpr" }
            if: (string){ "${{ github.event.client_payload.type == 'importpr' }}" }
            steps: (#list){
              _#name(:ci): (string){ "Import PR #${{ github.event.client_payload.commit }} from GitHub to Gerrit" }
              _#cmd(:ci): (string){ "github-pr ${{ github.event.client_payload.payload.pr }}" }
              0: (#struct){
                name: (string){ "Checkout code" }
                uses: (string){ "actions/checkout@v2" }
              }
              1: (#struct){
                name: (string){ "Import PR #${{ github.event.client_payload.commit }} from GitHub to Gerrit" }
                run: (string){
                  "cd _scripts\ndocker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint=\"\" cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c bash -c \" \\\n\tset -eu; \\\n\techo \\\"${{ secrets.gerritCookie }}\\\" > ~/.gitcookies; \\\n\tchmod 600 ~/.gitcookies; \\\n\tgit config --global user.name cueckoo; \\\n\tgit config --global user.email cueckoo@gmail.com; \\\n\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\\n  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\\n\tchmod 600 ~/.git-credentials; \\\n\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky github-pr ${{ github.event.client_payload.payload.pr }}; \\\n\t\""
                  _#cmd(:ci): (string){ "github-pr ${{ github.event.client_payload.payload.pr }}" }
                }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
        }
        _#runtrybot(:ci): (string){ "runtrybot" }
        _#mirror(:ci): (string){ "mirror" }
        _#importpr(:ci): (string){ "importpr" }
        _#unity(:ci): (string){ "unity" }
        _#dispatchJob(:ci): (#struct){
          "runs-on": (string){ "ubuntu-18.04" }
          _#type(:ci): (string){ string }
          if: (_|_){
            // [incomplete] workflows.1.schema._#dispatchJob.if: invalid interpolation: non-concrete value string (type string):
            //     ./workflows.cue:140:14
          }
        }
        name: (string){ "Repository Dispatch" }
        on: (#list){
          0: (string){ "repository_dispatch" }
        }
      }
    }
    2: (struct){
      file: (string){ "release.yml" }
      schema: (#struct){
        #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
        #branch: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
          }, (list){
          }) }
        #container: (#struct){
          image: (string){ string }
        }
        #defaults: (#struct){
        }
        #env: (#struct){
        }
        #environment: (#struct){
          name: (string){ string }
        }
        #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
        #eventObject: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
        #globs: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
        #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
        #path: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #ref: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
        #types: (list){
          0: (_){ _ }
        }
        #: (#struct){
          "working-directory": (string){ string }
        }
        jobs: (#struct){
          goreleaser: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Checkout code" }
                uses: (string){ "actions/checkout@v2" }
                with: (#struct){
                  "fetch-depth": (int){ 0 }
                }
              }
              1: (#struct){
                name: (string){ "Install Go" }
                uses: (string){ "actions/setup-go@v2" }
                with: (#struct){
                  "go-version": (string){ |(*(string){ "${{ matrix.go-version }}" }, (string){ string }) }
                  stable: (bool){ false }
                  version: (string){ "1.15.8" }
                }
              }
              2: (#struct){
                name: (string){ "Run GoReleaser" }
                env: (#struct){
                  GITHUB_TOKEN: (string){ "${{ secrets.ACTIONS_GITHUB_TOKEN }}" }
                }
                uses: (string){ "goreleaser/goreleaser-action@v2" }
                with: (#struct){
                  args: (string){ "release --rm-dist" }
                  version: (string){ "v0.155.1" }
                }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
          docker: (#struct){
            name: (string){ "docker" }
            "runs-on": (string){ "ubuntu-18.04" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Checkout code" }
                uses: (string){ "actions/checkout@v2" }
              }
              1: (#struct){
                name: (string){ "Set version environment" }
                run: (string){ "CUE_VERSION=$(echo ${GITHUB_REF##refs/tags/v})\necho \"CUE_VERSION=$CUE_VERSION\"\necho \"CUE_VERSION=$(echo $CUE_VERSION)\" >> $GITHUB_ENV" }
              }
              2: (#struct){
                name: (string){ "Push to Docker Hub" }
                env: (#struct){
                  DOCKER_BUILDKIT: (int){ 1 }
                  GOLANG_VERSION: (float){ 1.14 }
                  CUE_VERSION: (string){ "${{ env.CUE_VERSION }}" }
                }
                uses: (string){ "docker/build-push-action@v1" }
                with: (#struct){
                  tags: (string){ "${{ env.CUE_VERSION }},latest" }
                  repository: (string){ "cuelang/cue" }
                  username: (string){ "${{ secrets.DOCKER_USERNAME }}" }
                  password: (string){ "${{ secrets.DOCKER_PASSWORD }}" }
                  tag_with_ref: (bool){ false }
                  tag_with_sha: (bool){ false }
                  target: (string){ "cue" }
                  always_pull: (bool){ true }
                  build_args: (string){ "GOLANG_VERSION=${{ env.GOLANG_VERSION }},CUE_VERSION=v${{ env.CUE_VERSION }}" }
                  add_git_labels: (bool){ true }
                }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
        }
        name: (string){ "Release" }
        on: (#struct){
          push: (#struct){
            tags: (#list){
              0: (string){ "v*" }
            }
          }
        }
      }
    }
    3: (struct){
      file: (string){ "rebuild_tip_cuelang_org.yml" }
      schema: (#struct){
        #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
        #branch: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
          }, (list){
          }) }
        #container: (#struct){
          image: (string){ string }
        }
        #defaults: (#struct){
        }
        #env: (#struct){
        }
        #environment: (#struct){
          name: (string){ string }
        }
        #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
        #eventObject: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
        #globs: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
        #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
        #path: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #ref: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
        #types: (list){
          0: (_){ _ }
        }
        #: (#struct){
          "working-directory": (string){ string }
        }
        jobs: (#struct){
          push: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            steps: (#list){
              0: (#struct){
                name: (string){ "Rebuild tip.cuelang.org" }
                run: (string){ "curl -f -X POST -d {} https://api.netlify.com/build_hooks/${{ secrets.CuelangOrgTipRebuildHook }}" }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
        }
        name: (string){ "Push to tip" }
        on: (#struct){
          push: (#struct){
            branches: (#list){
              0: (string){ "master" }
            }
          }
        }
      }
    }
    4: (struct){
      file: (string){ "mirror.yml" }
      schema: (#struct){
        #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
        #branch: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
          }, (list){
          }) }
        #container: (#struct){
          image: (string){ string }
        }
        #defaults: (#struct){
        }
        #env: (#struct){
        }
        #environment: (#struct){
          name: (string){ string }
        }
        #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
        #eventObject: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
        #globs: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
        #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
        #path: (list){
          0: (string){ strings.MinRunes(1) }
        }
        #ref: ((null|struct)){ |((null){ null }, (#struct){
          }) }
        #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
        #types: (list){
          0: (_){ _ }
        }
        #: (#struct){
          "working-directory": (string){ string }
        }
        jobs: (#struct){
          mirror: (#struct){
            "runs-on": (string){ "ubuntu-18.04" }
            steps: (#list){
              _#name(:ci): (string){ "Mirror Gerrit to GitHub" }
              _#cmd(:ci): (string){ "github" }
              0: (#struct){
                name: (string){ "Checkout code" }
                uses: (string){ "actions/checkout@v2" }
              }
              1: (#struct){
                name: (string){ "Mirror Gerrit to GitHub" }
                run: (string){
                  "cd _scripts\ndocker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint=\"\" cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c bash -c \" \\\n\tset -eu; \\\n\techo \\\"${{ secrets.gerritCookie }}\\\" > ~/.gitcookies; \\\n\tchmod 600 ~/.gitcookies; \\\n\tgit config --global user.name cueckoo; \\\n\tgit config --global user.email cueckoo@gmail.com; \\\n\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\\n  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\\n\tchmod 600 ~/.git-credentials; \\\n\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky github; \\\n\t\""
                  _#cmd(:ci): (string){ "github" }
                }
              }
            }
            defaults: (#struct){
              run: (#struct){
                shell: (string){ "bash" }
              }
            }
          }
        }
        name: (string){ "Scheduled repo mirror" }
        on: (#struct){
          schedule: (#list){
            0: (#struct){
              cron: (string){ "*/30 * * * *" }
            }
          }
        }
      }
    }
  }
  test: (#struct){
    #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
    #branch: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
      }, (list){
      }) }
    #container: (#struct){
      image: (string){ string }
    }
    #defaults: (#struct){
    }
    #env: (#struct){
    }
    #environment: (#struct){
      name: (string){ string }
    }
    #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
    #eventObject: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
    #globs: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
    #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
    #path: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #ref: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
    #types: (list){
      0: (_){ _ }
    }
    #: (#struct){
      "working-directory": (string){ string }
    }
    jobs: (#struct){
      start: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Write the gitcookies file" }
            run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
            if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') }}" }
          }
          1: (#struct){
            name: (string){ "Update Gerrit CL message with starting message" }
            run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Started the build... see progress at ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":0}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
            if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') }}" }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
      test: (#struct){
        needs: (string){ "start" }
        strategy: (#struct){
          "fail-fast": (bool){ false }
          matrix: (#struct){
            "go-version": (#list){
              0: (string){ "1.14.14" }
              1: (string){ "1.15.8" }
              2: (string){ "1.16" }
            }
            os: (#list){
              0: (string){ "ubuntu-18.04" }
              1: (string){ "macos-10.15" }
              2: (string){ "windows-2019" }
            }
          }
        }
        "runs-on": (string){ "${{ matrix.os }}" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Write the gitcookies file" }
            run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
          }
          1: (#struct){
            name: (string){ "Install Go" }
            uses: (string){ "actions/setup-go@v2" }
            with: (#struct){
              "go-version": (string){ |(*(string){ "${{ matrix.go-version }}" }, (string){ string }) }
              stable: (bool){ false }
            }
          }
          2: (#struct){
            name: (string){ "Checkout code" }
            uses: (string){ "actions/checkout@v2" }
          }
          3: (#struct){
            name: (string){ "Cache Go modules" }
            uses: (string){ "actions/cache@v1" }
            with: (#struct){
              path: (string){ "~/go/pkg/mod" }
              key: (string){ "${{ runner.os }}-${{ matrix.go-version }}-go-${{ hashFiles('**/go.sum') }}" }
              "restore-keys": (string){ "${{ runner.os }}-${{ matrix.go-version }}-go-" }
            }
          }
          4: (#struct){
            _#tags(:ci): (string){ "long" }
            name: (string){ "Set go build tags" }
            run: (string){ "go env -w GOFLAGS=-tags=long" }
            if: (string){ "${{ github.ref == 'refs/heads/master' }}" }
          }
          5: (#struct){
            name: (string){ "Generate" }
            run: (string){ "go generate ./..." }
            if: (string){ "matrix.go-version == '1.14.14' && matrix.os != 'windows-2019'" }
          }
          6: (#struct){
            name: (string){ "Test" }
            run: (string){ "go test ./..." }
          }
          7: (#struct){
            name: (string){ "Test with -race" }
            run: (string){ "go test -race ./..." }
            if: (string){ "${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/ci/') && matrix.go-version == '1.15.8' && matrix.os == 'ubuntu-18.04' }}" }
          }
          8: (#struct){
            name: (string){ "gorelease check" }
            run: (string){ "go run golang.org/x/exp/cmd/gorelease" }
          }
          9: (#struct){
            name: (string){ "Check that git is clean post generate and tests" }
            run: (string){ "test -z \"$(git status --porcelain)\" || (git status; git diff; false)" }
          }
          10: (#struct){
            name: (string){ "Pull this commit through the proxy on master" }
            run: (string){ "v=$(git rev-parse HEAD)\ncd $(mktemp -d)\ngo mod init mod.com\nGOPROXY=https://proxy.golang.org go get -d cuelang.org/go/cmd/cue@$v" }
            if: (string){ "${{ github.ref == 'refs/heads/master' }}" }
          }
          11: (#struct){
            if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') && failure() }}" }
            name: (string){ "Post any failures for this matrix entry" }
            run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build failed for ${{ runner.os }}-${{ matrix.go-version }}; see ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} for more details\",\"labels\":{\"Code-Review\":-1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
      mark_ci_success: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') }}" }
        needs: (string){ "test" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Write the gitcookies file" }
            run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
          }
          1: (#struct){
            name: (string){ "Update Gerrit CL message with success message" }
            run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build succeeded for ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
      delete_build_branch: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') && always() }}" }
        needs: (string){ "test" }
        steps: (#list){
          0: (#struct){
            run: (string){ "mkdir tmpgit\ncd tmpgit\ngit init\ngit config user.name cueckoo\ngit config user.email cueckoo@gmail.com\ngit config http.https://github.com/.extraheader \"AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)\"\ngit push https://github.com/cuelang/cue :${GITHUB_REF#refs/heads/}" }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
    }
    name: (string){ "Test" }
    on: (#struct){
      push: (#struct){
        branches: (#list){
          0: (string){ "**" }
        }
        "tags-ignore": (#list){
          0: (string){ "v*" }
        }
      }
    }
    _#isCLCITestBranch(:ci): (string){ "startsWith(github.ref, 'refs/heads/ci/')" }
    _#isMaster(:ci): (string){ "github.ref == 'refs/heads/master'" }
    _#pullThroughProxy(:ci): (#struct){
      name: (string){ "Pull this commit through the proxy on master" }
      run: (string){ "v=$(git rev-parse HEAD)\ncd $(mktemp -d)\ngo mod init mod.com\nGOPROXY=https://proxy.golang.org go get -d cuelang.org/go/cmd/cue@$v" }
      if: (string){ "${{ github.ref == 'refs/heads/master' }}" }
    }
    _#startCLBuild(:ci): (#struct){
      name: (string){ "Update Gerrit CL message with starting message" }
      run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Started the build... see progress at ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":0}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
    }
    _#failCLBuild(:ci): (#struct){
      if: (string){ "${{ startsWith(github.ref, 'refs/heads/ci/') && failure() }}" }
      name: (string){ "Post any failures for this matrix entry" }
      run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build failed for ${{ runner.os }}-${{ matrix.go-version }}; see ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} for more details\",\"labels\":{\"Code-Review\":-1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
    }
    _#passCLBuild(:ci): (#struct){
      name: (string){ "Update Gerrit CL message with success message" }
      run: (string){ "curl -f -s -H \"Content-Type: application/json\" --request POST --data '{\"tag\":\"trybot\",\"message\":\"Build succeeded for ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}\",\"labels\":{\"Code-Review\":1}}' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review" }
    }
    _#gerrit(:ci): (#struct){
      _#setCodeReview(:ci): (#struct){
        #args: (#struct){
          tag: (string){ "trybot" }
          message: (string){ string }
          labels: (#struct){
            "Code-Review": (int){ int }
          }
        }
        res: (_|_){
          // [incomplete] invalid interpolation: cannot convert incomplete value "string" to JSON:
          //     ./workflows.cue:127:9
        }
      }
    }
  }
  repository_dispatch: (#struct){
    #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
    #branch: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
      }, (list){
      }) }
    #container: (#struct){
      image: (string){ string }
    }
    #defaults: (#struct){
    }
    #env: (#struct){
    }
    #environment: (#struct){
      name: (string){ string }
    }
    #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
    #eventObject: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
    #globs: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
    #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
    #path: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #ref: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
    #types: (list){
      0: (_){ _ }
    }
    #: (#struct){
      "working-directory": (string){ string }
    }
    jobs: (#struct){
      runtrybot: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        _#type(:ci): (string){ "runtrybot" }
        if: (string){ "${{ github.event.client_payload.type == 'runtrybot' }}" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Trigger trybot" }
            run: (string){ "mkdir tmpgit\ncd tmpgit\ngit init\ngit config user.name cueckoo\ngit config user.email cueckoo@gmail.com\ngit config http.https://github.com/.extraheader \"AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)\"\ngit fetch https://cue-review.googlesource.com/cue ${{ github.event.client_payload.payload.ref }}\ngit checkout -b ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }} FETCH_HEAD\ngit push https://github.com/cuelang/cue ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }}" }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
      mirror: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        _#type(:ci): (string){ "mirror" }
        if: (string){ "${{ github.event.client_payload.type == 'mirror' }}" }
        steps: (#list){
          _#name(:ci): (string){ "Mirror Gerrit to GitHub" }
          _#cmd(:ci): (string){ "github" }
          0: (#struct){
            name: (string){ "Checkout code" }
            uses: (string){ "actions/checkout@v2" }
          }
          1: (#struct){
            name: (string){ "Mirror Gerrit to GitHub" }
            run: (string){
              "cd _scripts\ndocker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint=\"\" cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c bash -c \" \\\n\tset -eu; \\\n\techo \\\"${{ secrets.gerritCookie }}\\\" > ~/.gitcookies; \\\n\tchmod 600 ~/.gitcookies; \\\n\tgit config --global user.name cueckoo; \\\n\tgit config --global user.email cueckoo@gmail.com; \\\n\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\\n  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\\n\tchmod 600 ~/.git-credentials; \\\n\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky github; \\\n\t\""
              _#cmd(:ci): (string){ "github" }
            }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
      importpr: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        _#type(:ci): (string){ "importpr" }
        if: (string){ "${{ github.event.client_payload.type == 'importpr' }}" }
        steps: (#list){
          _#name(:ci): (string){ "Import PR #${{ github.event.client_payload.commit }} from GitHub to Gerrit" }
          _#cmd(:ci): (string){ "github-pr ${{ github.event.client_payload.payload.pr }}" }
          0: (#struct){
            name: (string){ "Checkout code" }
            uses: (string){ "actions/checkout@v2" }
          }
          1: (#struct){
            name: (string){ "Import PR #${{ github.event.client_payload.commit }} from GitHub to Gerrit" }
            run: (string){
              "cd _scripts\ndocker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint=\"\" cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c bash -c \" \\\n\tset -eu; \\\n\techo \\\"${{ secrets.gerritCookie }}\\\" > ~/.gitcookies; \\\n\tchmod 600 ~/.gitcookies; \\\n\tgit config --global user.name cueckoo; \\\n\tgit config --global user.email cueckoo@gmail.com; \\\n\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\\n  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\\n\tchmod 600 ~/.git-credentials; \\\n\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky github-pr ${{ github.event.client_payload.payload.pr }}; \\\n\t\""
              _#cmd(:ci): (string){ "github-pr ${{ github.event.client_payload.payload.pr }}" }
            }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
    }
    _#runtrybot(:ci): (string){ "runtrybot" }
    _#mirror(:ci): (string){ "mirror" }
    _#importpr(:ci): (string){ "importpr" }
    _#unity(:ci): (string){ "unity" }
    _#dispatchJob(:ci): (#struct){
      "runs-on": (string){ "ubuntu-18.04" }
      _#type(:ci): (string){ string }
      if: (_|_){
        // [incomplete] repository_dispatch._#dispatchJob.if: invalid interpolation: non-concrete value string (type string):
        //     ./workflows.cue:140:14
      }
    }
    name: (string){ "Repository Dispatch" }
    on: (#list){
      0: (string){ "repository_dispatch" }
    }
  }
  mirror: (#struct){
    #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
    #branch: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
      }, (list){
      }) }
    #container: (#struct){
      image: (string){ string }
    }
    #defaults: (#struct){
    }
    #env: (#struct){
    }
    #environment: (#struct){
      name: (string){ string }
    }
    #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
    #eventObject: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
    #globs: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
    #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
    #path: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #ref: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
    #types: (list){
      0: (_){ _ }
    }
    #: (#struct){
      "working-directory": (string){ string }
    }
    jobs: (#struct){
      mirror: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        steps: (#list){
          _#name(:ci): (string){ "Mirror Gerrit to GitHub" }
          _#cmd(:ci): (string){ "github" }
          0: (#struct){
            name: (string){ "Checkout code" }
            uses: (string){ "actions/checkout@v2" }
          }
          1: (#struct){
            name: (string){ "Mirror Gerrit to GitHub" }
            run: (string){
              "cd _scripts\ndocker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint=\"\" cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c bash -c \" \\\n\tset -eu; \\\n\techo \\\"${{ secrets.gerritCookie }}\\\" > ~/.gitcookies; \\\n\tchmod 600 ~/.gitcookies; \\\n\tgit config --global user.name cueckoo; \\\n\tgit config --global user.email cueckoo@gmail.com; \\\n\tgit config --global http.cookiefile \\$HOME/.gitcookies; \\\n  \techo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \\\n\tchmod 600 ~/.git-credentials; \\\n\tjava -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky github; \\\n\t\""
              _#cmd(:ci): (string){ "github" }
            }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
    }
    name: (string){ "Scheduled repo mirror" }
    on: (#struct){
      schedule: (#list){
        0: (#struct){
          cron: (string){ "*/30 * * * *" }
        }
      }
    }
  }
  release: (#struct){
    #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
    #branch: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
      }, (list){
      }) }
    #container: (#struct){
      image: (string){ string }
    }
    #defaults: (#struct){
    }
    #env: (#struct){
    }
    #environment: (#struct){
      name: (string){ string }
    }
    #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
    #eventObject: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
    #globs: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
    #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
    #path: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #ref: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
    #types: (list){
      0: (_){ _ }
    }
    #: (#struct){
      "working-directory": (string){ string }
    }
    jobs: (#struct){
      goreleaser: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Checkout code" }
            uses: (string){ "actions/checkout@v2" }
            with: (#struct){
              "fetch-depth": (int){ 0 }
            }
          }
          1: (#struct){
            name: (string){ "Install Go" }
            uses: (string){ "actions/setup-go@v2" }
            with: (#struct){
              "go-version": (string){ |(*(string){ "${{ matrix.go-version }}" }, (string){ string }) }
              stable: (bool){ false }
              version: (string){ "1.15.8" }
            }
          }
          2: (#struct){
            name: (string){ "Run GoReleaser" }
            env: (#struct){
              GITHUB_TOKEN: (string){ "${{ secrets.ACTIONS_GITHUB_TOKEN }}" }
            }
            uses: (string){ "goreleaser/goreleaser-action@v2" }
            with: (#struct){
              args: (string){ "release --rm-dist" }
              version: (string){ "v0.155.1" }
            }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
      docker: (#struct){
        name: (string){ "docker" }
        "runs-on": (string){ "ubuntu-18.04" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Checkout code" }
            uses: (string){ "actions/checkout@v2" }
          }
          1: (#struct){
            name: (string){ "Set version environment" }
            run: (string){ "CUE_VERSION=$(echo ${GITHUB_REF##refs/tags/v})\necho \"CUE_VERSION=$CUE_VERSION\"\necho \"CUE_VERSION=$(echo $CUE_VERSION)\" >> $GITHUB_ENV" }
          }
          2: (#struct){
            name: (string){ "Push to Docker Hub" }
            env: (#struct){
              DOCKER_BUILDKIT: (int){ 1 }
              GOLANG_VERSION: (float){ 1.14 }
              CUE_VERSION: (string){ "${{ env.CUE_VERSION }}" }
            }
            uses: (string){ "docker/build-push-action@v1" }
            with: (#struct){
              tags: (string){ "${{ env.CUE_VERSION }},latest" }
              repository: (string){ "cuelang/cue" }
              username: (string){ "${{ secrets.DOCKER_USERNAME }}" }
              password: (string){ "${{ secrets.DOCKER_PASSWORD }}" }
              tag_with_ref: (bool){ false }
              tag_with_sha: (bool){ false }
              target: (string){ "cue" }
              always_pull: (bool){ true }
              build_args: (string){ "GOLANG_VERSION=${{ env.GOLANG_VERSION }},CUE_VERSION=v${{ env.CUE_VERSION }}" }
              add_git_labels: (bool){ true }
            }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
    }
    name: (string){ "Release" }
    on: (#struct){
      push: (#struct){
        tags: (#list){
          0: (string){ "v*" }
        }
      }
    }
  }
  rebuild_tip_cuelang_org: (#struct){
    #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
    #branch: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
      }, (list){
      }) }
    #container: (#struct){
      image: (string){ string }
    }
    #defaults: (#struct){
    }
    #env: (#struct){
    }
    #environment: (#struct){
      name: (string){ string }
    }
    #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
    #eventObject: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
    #globs: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
    #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
    #path: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #ref: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
    #types: (list){
      0: (_){ _ }
    }
    #: (#struct){
      "working-directory": (string){ string }
    }
    jobs: (#struct){
      push: (#struct){
        "runs-on": (string){ "ubuntu-18.04" }
        steps: (#list){
          0: (#struct){
            name: (string){ "Rebuild tip.cuelang.org" }
            run: (string){ "curl -f -X POST -d {} https://api.netlify.com/build_hooks/${{ secrets.CuelangOrgTipRebuildHook }}" }
          }
        }
        defaults: (#struct){
          run: (#struct){
            shell: (string){ "bash" }
          }
        }
      }
    }
    name: (string){ "Push to tip" }
    on: (#struct){
      push: (#struct){
        branches: (#list){
          0: (string){ "master" }
        }
      }
    }
  }
  _#bashWorkflow(:ci): (#struct){
    #architecture: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
    #branch: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #configuration: ((bool|string|list|struct|number)){ |((string){ string }, (number){ number }, (bool){ bool }, (#struct){
      }, (list){
      }) }
    #container: (#struct){
      image: (string){ string }
    }
    #defaults: (#struct){
    }
    #env: (#struct){
    }
    #environment: (#struct){
      name: (string){ string }
    }
    #event: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
    #eventObject: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #expressionSyntax: (string){ =~"^\\$\\{\\{.*\\}\\}$" }
    #globs: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #machine: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
    #name: (string){ =~"^[_a-zA-Z][a-zA-Z0-9_-]*$" }
    #path: (list){
      0: (string){ strings.MinRunes(1) }
    }
    #ref: ((null|struct)){ |((null){ null }, (#struct){
      }) }
    #shell: (string){ |((string){ string }, (string){ "bash" }, (string){ "pwsh" }, (string){ "python" }, (string){ "sh" }, (string){ "cmd" }, (string){ "powershell" }) }
    #types: (list){
      0: (_){ _ }
    }
    #: (#struct){
      "working-directory": (string){ string }
    }
    jobs: (#struct){
    }
    on: ((string|list|struct)){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }, (list){
        0: (string){ |((string){ "check_run" }, (string){ "check_suite" }, (string){ "create" }, (string){ "delete" }, (string){ "deployment" }, (string){ "deployment_status" }, (string){ "fork" }, (string){ "gollum" }, (string){ "issue_comment" }, (string){ "issues" }, (string){ "label" }, (string){ "member" }, (string){ "milestone" }, (string){ "page_build" }, (string){ "project" }, (string){ "project_card" }, (string){ "project_column" }, (string){ "public" }, (string){ "pull_request" }, (string){ "pull_request_review" }, (string){ "pull_request_review_comment" }, (string){ "pull_request_target" }, (string){ "push" }, (string){ "registry_package" }, (string){ "release" }, (string){ "status" }, (string){ "watch" }, (string){ "workflow_dispatch" }, (string){ "workflow_run" }, (string){ "repository_dispatch" }) }
      }, (#struct){
      }) }
  }
  _#job(:ci): (#struct){
    "runs-on": ((string|list)){ |((string){ "macos-10.15" }, (string){ "macos-11.0" }, (string){ "macos-latest" }, (string){ "self-hosted" }, (string){ "ubuntu-16.04" }, (string){ "ubuntu-18.04" }, (string){ "ubuntu-20.04" }, (string){ "ubuntu-latest" }, (string){ "windows-2016" }, (string){ "windows-2019" }, (string){ "windows-latest" }, (#list){
        0: (string){ "self-hosted" }
      }, (#list){
        0: (string){ "self-hosted" }
        1: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
      }, (#list){
        0: (string){ "self-hosted" }
        1: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
      }, (#list){
        0: (string){ "self-hosted" }
        1: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
        2: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
      }, (#list){
        0: (string){ "self-hosted" }
        1: (string){ |((string){ "ARM32" }, (string){ "x64" }, (string){ "x86" }) }
        2: (string){ |((string){ "linux" }, (string){ "macos" }, (string){ "windows" }) }
      }, (string){ =~"^\\$\\{\\{.*\\}\\}$" }) }
  }
  _#step(:ci): (#struct){
  }
  _#codeGenGo(:ci): (string){ "1.14.14" }
  _#latestStableGo(:ci): (string){ "1.15.8" }
  _#linuxMachine(:ci): (string){ "ubuntu-18.04" }
  _#macosMachine(:ci): (string){ "macos-10.15" }
  _#windowsMachine(:ci): (string){ "windows-2019" }
  _#testStrategy(:ci): (#struct){
    "fail-fast": (bool){ false }
    matrix: (#struct){
      "go-version": (#list){
        0: (string){ "1.14.14" }
        1: (string){ "1.15.8" }
        2: (string){ "1.16" }
      }
      os: (#list){
        0: (string){ "ubuntu-18.04" }
        1: (string){ "macos-10.15" }
        2: (string){ "windows-2019" }
      }
    }
  }
  _#setGoBuildTags(:ci): (#struct){
    _#tags(:ci): (string){ string }
    name: (string){ "Set go build tags" }
    run: (_|_){
      // [incomplete] _#setGoBuildTags.run: invalid interpolation: non-concrete value string (type string):
      //     ./workflows.cue:286:10
    }
  }
  _#installGo(:ci): (#struct){
    name: (string){ "Install Go" }
    uses: (string){ "actions/setup-go@v2" }
    with: (#struct){
      "go-version": (string){ |(*(string){ "${{ matrix.go-version }}" }, (string){ string }) }
      stable: (bool){ false }
    }
  }
  _#checkoutCode(:ci): (#struct){
    name: (string){ "Checkout code" }
    uses: (string){ "actions/checkout@v2" }
  }
  _#cacheGoModules(:ci): (#struct){
    name: (string){ "Cache Go modules" }
    uses: (string){ "actions/cache@v1" }
    with: (#struct){
      path: (string){ "~/go/pkg/mod" }
      key: (string){ "${{ runner.os }}-${{ matrix.go-version }}-go-${{ hashFiles('**/go.sum') }}" }
      "restore-keys": (string){ "${{ runner.os }}-${{ matrix.go-version }}-go-" }
    }
  }
  _#goGenerate(:ci): (#struct){
    name: (string){ "Generate" }
    run: (string){ "go generate ./..." }
    if: (string){ "matrix.go-version == '1.14.14' && matrix.os != 'windows-2019'" }
  }
  _#goTest(:ci): (#struct){
    name: (string){ "Test" }
    run: (string){ "go test ./..." }
  }
  _#goTestRace(:ci): (#struct){
    name: (string){ "Test with -race" }
    run: (string){ "go test -race ./..." }
  }
  _#goReleaseCheck(:ci): (#struct){
    name: (string){ "gorelease check" }
    run: (string){ "go run golang.org/x/exp/cmd/gorelease" }
  }
  _#checkGitClean(:ci): (#struct){
    name: (string){ "Check that git is clean post generate and tests" }
    run: (string){ "test -z \"$(git status --porcelain)\" || (git status; git diff; false)" }
  }
  _#writeCookiesFile(:ci): (#struct){
    name: (string){ "Write the gitcookies file" }
    run: (string){ "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies" }
  }
  _#branchRefPrefix(:ci): (string){ "refs/heads/" }
  _#tempCueckooGitDir(:ci): (string){ "mkdir tmpgit\ncd tmpgit\ngit init\ngit config user.name cueckoo\ngit config user.email cueckoo@gmail.com\ngit config http.https://github.com/.extraheader \"AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)\"" }
  _#cueckooCopybaraImage(:ci): (string){ "cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c" }
  _#copybaraCmd(:ci): (_|_){
    // [incomplete] _#copybaraCmd: invalid interpolation: non-concrete value string (type string):
    //     ./workflows.cue:353:2
    _#cmd(:ci): (string){ string }
  }
  _#copybaraSteps(:ci): (#list){
    _#name(:ci): (string){ string }
    _#cmd(:ci): (string){ string }
    0: (#struct){
      name: (string){ "Checkout code" }
      uses: (string){ "actions/checkout@v2" }
    }
    1: (#struct){
      name: (string){ string }
      run: (_|_){
        // [incomplete] _#copybaraSteps.1.run: invalid interpolation: non-concrete value string (type string):
        //     ./workflows.cue:353:2
        _#cmd(:ci): (string){ string }
      }
    }
  }
}
-- out/compile --
--- workflows.cue
{
  workflowsDir: (*"./"|string)
  _#masterBranch: "master"
  _#releaseTagPattern: "v*"
  workflows: ([
    ...{
      file: string
      schema: 〈import;"github.com/SchemaStore/schemastore/src/schemas/json"〉.#Workflow
    },
  ] & [
    {
      file: "test.yml"
      schema: 〈1;test〉
    },
    {
      file: "repository_dispatch.yml"
      schema: 〈1;repository_dispatch〉
    },
    {
      file: "release.yml"
      schema: 〈1;release〉
    },
    {
      file: "rebuild_tip_cuelang_org.yml"
      schema: 〈1;rebuild_tip_cuelang_org〉
    },
    {
      file: "mirror.yml"
      schema: 〈1;mirror〉
    },
  ])
  test: (〈0;_#bashWorkflow〉 & {
    name: "Test"
    on: {
      push: {
        branches: [
          "**",
        ]
        "tags-ignore": [
          〈3;_#releaseTagPattern〉,
        ]
      }
    }
    jobs: {
      start: {
        "runs-on": 〈3;_#linuxMachine〉
        steps: ([
          ...(_ & {
            if: "${{ \(〈3;_#isCLCITestBranch〉) }}"
          }),
        ] & [
          〈3;_#writeCookiesFile〉,
          〈2;_#startCLBuild〉,
        ])
      }
      test: {
        needs: "start"
        strategy: 〈3;_#testStrategy〉
        "runs-on": "${{ matrix.os }}"
        steps: [
          〈3;_#writeCookiesFile〉,
          〈3;_#installGo〉,
          〈3;_#checkoutCode〉,
          〈3;_#cacheGoModules〉,
          (〈3;_#setGoBuildTags〉 & {
            _#tags: "long"
            if: "${{ \(〈3;_#isMaster〉) }}"
          }),
          〈3;_#goGenerate〉,
          〈3;_#goTest〉,
          (〈3;_#goTestRace〉 & {
            if: "${{ \(〈3;_#isMaster〉) || \(〈3;_#isCLCITestBranch〉) && matrix.go-version == '\(〈4;_#latestStableGo〉)' && matrix.os == '\(〈4;_#linuxMachine〉)' }}"
          }),
          〈3;_#goReleaseCheck〉,
          〈3;_#checkGitClean〉,
          〈2;_#pullThroughProxy〉,
          〈2;_#failCLBuild〉,
        ]
      }
      mark_ci_success: {
        "runs-on": 〈3;_#linuxMachine〉
        if: "${{ \(〈2;_#isCLCITestBranch〉) }}"
        needs: "test"
        steps: [
          〈3;_#writeCookiesFile〉,
          〈2;_#passCLBuild〉,
        ]
      }
      delete_build_branch: {
        "runs-on": 〈3;_#linuxMachine〉
        if: "${{ \(〈2;_#isCLCITestBranch〉) && always() }}"
        needs: "test"
        steps: [
          (〈3;_#step〉 & {
            run: "\(〈4;_#tempCueckooGitDir〉)
            git push https://github.com/cuelang/cue :${GITHUB_REF#\(〈4;_#branchRefPrefix〉)}"
          }),
        ]
      }
    }
    _#isCLCITestBranch: "startsWith(github.ref, '\(〈1;_#branchRefPrefix〉)ci/')"
    _#isMaster: "github.ref == '\((〈1;_#branchRefPrefix〉 + 〈1;_#masterBranch〉))'"
    _#pullThroughProxy: (〈1;_#step〉 & {
      name: "Pull this commit through the proxy on \(〈2;_#masterBranch〉)"
      run: "v=$(git rev-parse HEAD)\ncd $(mktemp -d)\ngo mod init mod.com\nGOPROXY=https://proxy.golang.org go get -d cuelang.org/go/cmd/cue@$v"
      if: "${{ \(〈1;_#isMaster〉) }}"
    })
    _#startCLBuild: (〈1;_#step〉 & {
      name: "Update Gerrit CL message with starting message"
      run: (〈1;_#gerrit〉._#setCodeReview & {
        #args: {
          message: "Started the build... see progress at ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}"
          labels: {
            "Code-Review": 0
          }
        }
      }).res
    })
    _#failCLBuild: (〈1;_#step〉 & {
      if: "${{ \(〈1;_#isCLCITestBranch〉) && failure() }}"
      name: "Post any failures for this matrix entry"
      run: (〈1;_#gerrit〉._#setCodeReview & {
        #args: {
          message: "Build failed for ${{ runner.os }}-${{ matrix.go-version }}; see ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} for more details"
          labels: {
            "Code-Review": -1
          }
        }
      }).res
    })
    _#passCLBuild: (〈1;_#step〉 & {
      name: "Update Gerrit CL message with success message"
      run: (〈1;_#gerrit〉._#setCodeReview & {
        #args: {
          message: "Build succeeded for ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}"
          labels: {
            "Code-Review": 1
          }
        }
      }).res
    })
    _#gerrit: {
      _#setCodeReview: {
        #args: {
          tag: "trybot"
          message: string
          labels: {
            "Code-Review": int
          }
        }
        res: "curl -f -s -H "Content-Type: application/json" --request POST --data '\(〈import;"encoding/json"〉.Marshal(〈0;#args〉))' -b ~/.gitcookies https://cue-review.googlesource.com/a/changes/$(basename $(dirname $GITHUB_REF))/revisions/$(basename $GITHUB_REF)/review"
      }
    }
  })
  repository_dispatch: (〈0;_#bashWorkflow〉 & {
    _#runtrybot: "runtrybot"
    _#mirror: "mirror"
    _#importpr: "importpr"
    _#unity: "unity"
    _#dispatchJob: (〈1;_#job〉 & {
      _#type: string
      "runs-on": 〈2;_#linuxMachine〉
      if: "${{ github.event.client_payload.type == '\(〈0;_#type〉)' }}"
    })
    name: "Repository Dispatch"
    on: [
      "repository_dispatch",
    ]
    jobs: {
      "\(〈1;_#runtrybot〉)": (〈1;_#dispatchJob〉 & {
        _#type: 〈2;_#runtrybot〉
        steps: [
          (〈3;_#step〉 & {
            name: "Trigger trybot"
            run: "\(〈4;_#tempCueckooGitDir〉)
            git fetch https://cue-review.googlesource.com/cue ${{ github.event.client_payload.payload.ref }}
            git checkout -b ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }} FETCH_HEAD
            git push https://github.com/cuelang/cue ci/${{ github.event.client_payload.payload.changeID }}/${{ github.event.client_payload.payload.commit }}"
          }),
        ]
      })
      "\(〈1;_#mirror〉)": (〈1;_#dispatchJob〉 & {
        _#type: 〈2;_#mirror〉
        steps: (〈3;_#copybaraSteps〉 & {
          _
          _#name: "Mirror Gerrit to GitHub"
          _#cmd: "github"
        })
      })
      "\(〈1;_#importpr〉)": (〈1;_#dispatchJob〉 & {
        _#type: 〈2;_#importpr〉
        steps: (〈3;_#copybaraSteps〉 & {
          _
          _#name: "Import PR #${{ github.event.client_payload.commit }} from GitHub to Gerrit"
          _#cmd: "github-pr ${{ github.event.client_payload.payload.pr }}"
        })
      })
    }
  })
  mirror: (〈0;_#bashWorkflow〉 & {
    name: "Scheduled repo mirror"
    on: {
      schedule: [
        {
          cron: "*/30 * * * *"
        },
      ]
    }
    jobs: {
      mirror: {
        "runs-on": 〈3;_#linuxMachine〉
        steps: (〈3;_#copybaraSteps〉 & {
          _
          _#name: "Mirror Gerrit to GitHub"
          _#cmd: "github"
        })
      }
    }
  })
  release: (〈0;_#bashWorkflow〉 & {
    name: "Release"
    on: {
      push: {
        tags: [
          〈3;_#releaseTagPattern〉,
        ]
      }
    }
    jobs: {
      goreleaser: {
        "runs-on": 〈3;_#linuxMachine〉
        steps: [
          (〈3;_#checkoutCode〉 & {
            with: {
              "fetch-depth": 0
            }
          }),
          (〈3;_#installGo〉 & {
            with: {
              version: 〈5;_#latestStableGo〉
            }
          }),
          (〈3;_#step〉 & {
            name: "Run GoReleaser"
            env: {
              GITHUB_TOKEN: "${{ secrets.ACTIONS_GITHUB_TOKEN }}"
            }
            uses: "goreleaser/goreleaser-action@v2"
            with: {
              args: "release --rm-dist"
              version: "v0.155.1"
            }
          }),
        ]
      }
      docker: {
        name: "docker"
        "runs-on": 〈3;_#linuxMachine〉
        steps: [
          〈3;_#checkoutCode〉,
          (〈3;_#step〉 & {
            name: "Set version environment"
            run: "CUE_VERSION=$(echo ${GITHUB_REF##refs/tags/v})\necho \"CUE_VERSION=$CUE_VERSION\"\necho \"CUE_VERSION=$(echo $CUE_VERSION)\" >> $GITHUB_ENV"
          }),
          (〈3;_#step〉 & {
            name: "Push to Docker Hub"
            env: {
              DOCKER_BUILDKIT: 1
              GOLANG_VERSION: 1.14
              CUE_VERSION: "${{ env.CUE_VERSION }}"
            }
            uses: "docker/build-push-action@v1"
            with: {
              tags: "${{ env.CUE_VERSION }},latest"
              repository: "cuelang/cue"
              username: "${{ secrets.DOCKER_USERNAME }}"
              password: "${{ secrets.DOCKER_PASSWORD }}"
              tag_with_ref: false
              tag_with_sha: false
              target: "cue"
              always_pull: true
              build_args: "GOLANG_VERSION=${{ env.GOLANG_VERSION }},CUE_VERSION=v${{ env.CUE_VERSION }}"
              add_git_labels: true
            }
          }),
        ]
      }
    }
  })
  rebuild_tip_cuelang_org: (〈0;_#bashWorkflow〉 & {
    name: "Push to tip"
    on: {
      push: {
        branches: [
          〈3;_#masterBranch〉,
        ]
      }
    }
    jobs: {
      push: {
        "runs-on": 〈3;_#linuxMachine〉
        steps: [
          {
            name: "Rebuild tip.cuelang.org"
            run: "curl -f -X POST -d {} https://api.netlify.com/build_hooks/${{ secrets.CuelangOrgTipRebuildHook }}"
          },
        ]
      }
    }
  })
  _#bashWorkflow: (〈import;"github.com/SchemaStore/schemastore/src/schemas/json"〉.#Workflow & {
    jobs: {
      [string]: {
        defaults: {
          run: {
            shell: "bash"
          }
        }
      }
    }
  })
  _#job: ((〈import;"github.com/SchemaStore/schemastore/src/schemas/json"〉.#Workflow & {}).jobs & {
    x: _
  }).x
  _#step: ((〈0;_#job〉 & {
    steps: _
  }).steps & [
    _,
  ])[0]
  _#codeGenGo: "1.14.14"
  _#latestStableGo: "1.15.8"
  _#linuxMachine: "ubuntu-18.04"
  _#macosMachine: "macos-10.15"
  _#windowsMachine: "windows-2019"
  _#testStrategy: {
    "fail-fast": false
    matrix: {
      "go-version": [
        〈2;_#codeGenGo〉,
        〈2;_#latestStableGo〉,
        "1.16",
      ]
      os: [
        〈2;_#linuxMachine〉,
        〈2;_#macosMachine〉,
        〈2;_#windowsMachine〉,
      ]
    }
  }
  _#setGoBuildTags: (〈0;_#step〉 & {
    _#tags: string
    name: "Set go build tags"
    run: "go env -w GOFLAGS=-tags=\(〈0;_#tags〉)"
  })
  _#installGo: (〈0;_#step〉 & {
    name: "Install Go"
    uses: "actions/setup-go@v2"
    with: {
      "go-version": (*"${{ matrix.go-version }}"|string)
      stable: false
    }
  })
  _#checkoutCode: (〈0;_#step〉 & {
    name: "Checkout code"
    uses: "actions/checkout@v2"
  })
  _#cacheGoModules: (〈0;_#step〉 & {
    name: "Cache Go modules"
    uses: "actions/cache@v1"
    with: {
      path: "~/go/pkg/mod"
      key: "${{ runner.os }}-${{ matrix.go-version }}-go-${{ hashFiles('**/go.sum') }}"
      "restore-keys": "${{ runner.os }}-${{ matrix.go-version }}-go-"
    }
  })
  _#goGenerate: (〈0;_#step〉 & {
    name: "Generate"
    run: "go generate ./..."
    if: "matrix.go-version == '\(〈1;_#codeGenGo〉)' && matrix.os != '\(〈1;_#windowsMachine〉)'"
  })
  _#goTest: (〈0;_#step〉 & {
    name: "Test"
    run: "go test ./..."
  })
  _#goTestRace: (〈0;_#step〉 & {
    name: "Test with -race"
    run: "go test -race ./..."
  })
  _#goReleaseCheck: (〈0;_#step〉 & {
    name: "gorelease check"
    run: "go run golang.org/x/exp/cmd/gorelease"
  })
  _#checkGitClean: (〈0;_#step〉 & {
    name: "Check that git is clean post generate and tests"
    run: "test -z \"$(git status --porcelain)\" || (git status; git diff; false)"
  })
  _#writeCookiesFile: (〈0;_#step〉 & {
    name: "Write the gitcookies file"
    run: "echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies"
  })
  _#branchRefPrefix: "refs/heads/"
  _#tempCueckooGitDir: "mkdir tmpgit\ncd tmpgit\ngit init\ngit config user.name cueckoo\ngit config user.email cueckoo@gmail.com\ngit config http.https://github.com/.extraheader \"AUTHORIZATION: basic $(echo -n cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }} | base64)\""
  _#cueckooCopybaraImage: "cueckoo/copybara:afc4ae03eed00b0c9d7415141cd1b5dfa583da7c"
  _#copybaraCmd: {
    "cd _scripts
    docker run --rm -v $PWD/cache:/root/copybara/cache -v $PWD:/usr/src/app --entrypoint="" \(〈1;_#cueckooCopybaraImage〉) bash -c " \
    	set -eu; \
    	echo \"${{ secrets.gerritCookie }}\" > ~/.gitcookies; \
    	chmod 600 ~/.gitcookies; \
    	git config --global user.name cueckoo; \
    	git config --global user.email cueckoo@gmail.com; \
    	git config --global http.cookiefile \$HOME/.gitcookies; \
      	echo https://cueckoo:${{ secrets.CUECKOO_GITHUB_PAT }}@github.com > ~/.git-credentials; \
    	chmod 600 ~/.git-credentials; \
    	java -jar /opt/copybara/copybara_deploy.jar migrate copy.bara.sky \(〈0;_#cmd〉); \
    	""
    _#cmd: string
  }
  _#copybaraSteps: {
    [
      〈1;_#checkoutCode〉,
      (〈1;_#step〉 & {
        name: 〈1;_#name〉
        run: (〈2;_#copybaraCmd〉 & {
          _
          _#cmd: 〈2;let cmdCmd〉
        })
      }),
    ]
    _#name: string
    _#cmd: string
  }
}
