Skip to content

Says what a g1t.page build of this checkout would find, without building anything. Its kind and framework, how it installs, what builds it and where its output is.

54 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

g1t has actions of its own: g1t/deploy builds the checkout a job is in and puts it on g1t.page, opening the build with the job's token, masking the build's token and the project's secrets, and running g1t-runner deploy, with the app's url, the deployment's id and its kind as outputs; g1t/detect says what such a build would find (kind, install, build and output-dir) without building anything. Both use the g1t-runner on the machine, or download the newest release from g1t.sh/downloads/runner and check it against its SHA256SUMS. They live under actions/, and the Actions release workflow pushes each folder to its own repository in the g1t workspace and moves its v1 tag whenever main changes them, with the G1T_ACTIONS_PUBLISH_TOKEN secret its header describes.1#!/usr/bin/env bash
2# Finds g1t-runner for the g1t/deploy and g1t/detect actions and prints its
3# path: G1T_RUNNER if it names one, else the one on PATH (g1t's machines
4# have it at /usr/local/bin/g1t-runner), else the newest release from
5# g1t.sh/downloads/runner, checked against that release's SHA256SUMS, as
6# docs.g1t.sh/guides/self-hosted-runners/ downloads it.
7#
8# actions/deploy/runner.sh and actions/detect/runner.sh are the same file:
9# each action is published as a repository of its own.
10set -euo pipefail
11
12if [ -n "${G1T_RUNNER:-}" ] && [ -x "${G1T_RUNNER}" ]; then
13 echo "${G1T_RUNNER}"
14 exit 0
15fi
16if found="$(command -v g1t-runner 2>/dev/null)"; then
17 echo "${found}"
18 exit 0
19fi
20
21case "$(uname -s)-$(uname -m)" in
22 Linux-x86_64 | Linux-amd64) platform=linux-x64 ;;
23 Linux-aarch64 | Linux-arm64) platform=linux-arm64 ;;
24 Darwin-arm64) platform=macos-arm64 ;;
25 Darwin-x86_64) platform=macos-x64 ;;
26 *)
27 echo "::error::g1t-runner is not on PATH, and g1t has no release of it for $(uname -s) $(uname -m)." >&2
28 exit 1
29 ;;
30esac
31
32downloads="${G1T_RUNNER_DOWNLOADS:-https://g1t.sh/downloads/runner/latest}"
33dir="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/g1t-runner-${platform}"
34file="g1t-runner-${platform}"
35if [ ! -x "${dir}/g1t-runner" ]; then
36 mkdir -p "${dir}"
37 echo "Downloading ${file} from ${downloads}" >&2
38 curl -fsSL --retry 3 -o "${dir}/${file}" "${downloads}/${file}"
39 curl -fsSL --retry 3 -o "${dir}/SHA256SUMS" "${downloads}/SHA256SUMS"
40 expected="$(awk -v name="${file}" '$2 == name { print $1 }' "${dir}/SHA256SUMS")"
41 if command -v sha256sum >/dev/null 2>&1; then
42 actual="$(sha256sum "${dir}/${file}" | awk '{ print $1 }')"
43 else
44 actual="$(shasum -a 256 "${dir}/${file}" | awk '{ print $1 }')"
45 fi
46 if [ -z "${expected}" ] || [ "${expected}" != "${actual}" ]; then
47 echo "::error::The downloaded ${file} does not match the release's SHA256SUMS." >&2
48 rm -f "${dir}/${file}"
49 exit 1
50 fi
51 chmod +x "${dir}/${file}"
52 mv "${dir}/${file}" "${dir}/g1t-runner"
53fi
54echo "${dir}/g1t-runner"