Skip to content
66 linesCodeBlameRaw
1name: Detect a g1t.page project
2description: 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.
3author: g1t
4
5inputs:
6 root-dir:
7 description: Where the project is in the checkout. The checkout itself unless you say.
8 required: false
9 default: ""
10 build-command:
11 description: A build command of your own, as g1t/deploy takes it.
12 required: false
13 default: ""
14 output-dir:
15 description: An output folder of your own, as g1t/deploy takes it.
16 required: false
17 default: ""
18 build-as:
19 description: What it is built as, auto, static, workers or docker, as g1t/deploy takes it.
20 required: false
21 default: ""
22 dockerfile:
23 description: A Dockerfile's path of your own, as g1t/deploy takes it.
24 required: false
25 default: ""
26
27outputs:
28 kind:
29 description: workers (a Wrangler config, or a framework's Cloudflare adapter), static (a site a build writes), html (the files as they are), container (a Dockerfile, a framework set up to need a server, or a server g1t writes a Dockerfile for) or none (nothing to serve).
30 value: ${{ steps.detect.outputs.kind }}
31 install:
32 description: How its dependencies are installed, such as npm ci. Empty without a package.json.
33 value: ${{ steps.detect.outputs.install }}
34 build:
35 description: What builds it. Empty when nothing does.
36 value: ${{ steps.detect.outputs.build }}
37 output-dir:
38 description: The folder that is served, relative to the project (. for the project itself). Empty when a build has yet to write it.
39 value: ${{ steps.detect.outputs.output-dir }}
40 framework:
41 description: The framework it is built with, such as vite, astro, nextjs, sveltekit or hugo; for a container without one, dockerfile or the server g1t writes a Dockerfile for (node, flask, rails…). Empty when there is none.
42 value: ${{ steps.detect.outputs.framework }}
43 dockerfile:
44 description: A container's own Dockerfile, relative to the project. Empty when g1t writes one, or for anything else.
45 value: ${{ steps.detect.outputs.dockerfile }}
46 port:
47 description: The port a container listens on, its Dockerfile's EXPOSE or 8080. Empty for anything else.
48 value: ${{ steps.detect.outputs.port }}
49
50runs:
51 using: composite
52 steps:
53 - id: detect
54 shell: bash
55 env:
56 ROOT_DIR: ${{ inputs.root-dir }}
57 BUILD_COMMAND: ${{ inputs.build-command }}
58 OUTPUT_DIR: ${{ inputs.output-dir }}
59 BUILD_AS: ${{ inputs.build-as }}
60 DOCKERFILE: ${{ inputs.dockerfile }}
61 run: |
62 set -euo pipefail
63 runner="$(bash "$GITHUB_ACTION_PATH/runner.sh")"
64 found="$("$runner" detect)"
65 echo "$found"
66 echo "$found" >> "$GITHUB_OUTPUT"