Packages
caffeine_lang
6.2.1
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@codegen@relay_workflow.erl
-module(caffeine_lang@codegen@relay_workflow).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/codegen/relay_workflow.gleam").
-export([generate/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/codegen/relay_workflow.gleam", 23).
?DOC(
" Codegen for the GitHub Actions workflow that runs the bundled relay.\n"
"\n"
" The output is a static YAML file the compiler dumps verbatim at\n"
" `.github/workflows/caffeine-relay.yml` whenever any expectation uses\n"
" external-signal indicators. The workflow:\n"
"\n"
" - fires every 5 minutes (cron) and on `workflow_dispatch`\n"
" - uses a single-slot concurrency group so a slow run doesn't overlap\n"
" itself\n"
" - installs Erlang + Gleam via `erlef/setup-beam`\n"
" - restores the cursor file from GHA cache, then saves it back on exit\n"
" so each run picks up where the last one stopped\n"
" - invokes the bundled relay project via `gleam run`\n"
" - pulls Langfuse and Datadog credentials from repo secrets\n"
"\n"
" Paths assume the layout from `codegen/relay` (Task #5) and the bundled\n"
" relay project from Task #7: `build/relay/signals.json` for the routing\n"
" table and `build/relay/relay/` for the Gleam project itself.\n"
" Returns `None` when no relay is needed (the compiler decides based on\n"
" whether any IR uses external-signal indicators). The wrapped string is\n"
" the literal YAML the compiler writes to disk.\n"
).
-spec generate() -> binary().
generate() ->
<<"name: caffeine-relay
on:
schedule:
- cron: \"*/5 * * * *\"
workflow_dispatch: {}
concurrency:
group: caffeine-relay
cancel-in-progress: false
jobs:
relay:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: \"27\"
gleam-version: \"1.x\"
- uses: actions/cache/restore@v4
with:
path: .caffeine/cursor.json
key: caffeine-cursor-${{ github.run_id }}
restore-keys: caffeine-cursor-
- run: gleam run -- --config ../signals.json --cursor ../../.caffeine/cursor.json
working-directory: build/relay/relay
env:
LANGFUSE_PUBLIC_KEY: ${{ secrets.LANGFUSE_PUBLIC_KEY }}
LANGFUSE_SECRET_KEY: ${{ secrets.LANGFUSE_SECRET_KEY }}
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- if: always()
uses: actions/cache/save@v4
with:
path: .caffeine/cursor.json
key: caffeine-cursor-${{ github.run_id }}
"/utf8>>.