Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
8564f67
setup
enisdenjo Dec 24, 2024
7d8f967
refactor and convert mesh.config.ts serviceports
enisdenjo Dec 24, 2024
f21889b
transform mesh config
enisdenjo Dec 24, 2024
9971019
log a lot
enisdenjo Dec 24, 2024
a1ba36e
throw, no silence
enisdenjo Dec 24, 2024
97f7de2
lockfile
enisdenjo Dec 24, 2024
5fae15a
transform services
enisdenjo Dec 24, 2024
85def33
dest and write file
enisdenjo Dec 24, 2024
5dbf035
logs
enisdenjo Dec 24, 2024
9554e22
unused
enisdenjo Dec 24, 2024
ec5b733
package json
enisdenjo Dec 24, 2024
08b1cf2
internal proc pkg
enisdenjo Dec 25, 2024
14693d2
type module internal pks
enisdenjo Dec 25, 2024
b8e608a
scripts install and try
enisdenjo Dec 25, 2024
918b43e
proc from proc and wait for port in proc
enisdenjo Dec 25, 2024
b6e4d86
test with waitforport
enisdenjo Dec 25, 2024
de8af19
dest must not exist
enisdenjo Dec 25, 2024
d778367
no prettify examples
enisdenjo Dec 25, 2024
06c64f0
convert directly e2e and no zod
enisdenjo Dec 25, 2024
82a212a
optionally start services and compose also in series
enisdenjo Dec 25, 2024
4a0de58
comment
enisdenjo Dec 25, 2024
4e5420b
workflow
enisdenjo Dec 25, 2024
69db75f
shorter name
enisdenjo Dec 25, 2024
690ea60
bin directly with tsx
enisdenjo Dec 25, 2024
530c9a0
format and commit and only examples*
enisdenjo Dec 25, 2024
d376948
lockfile
enisdenjo Dec 25, 2024
ab15032
format
enisdenjo Dec 25, 2024
c4c9cc9
__dirname
enisdenjo Dec 25, 2024
0dda049
from url
enisdenjo Dec 25, 2024
0588efb
retain path when downloading
enisdenjo Dec 25, 2024
85c9502
docs(examples): converted from e2es
enisdenjo Dec 25, 2024
552bf90
sandbox config
enisdenjo Dec 25, 2024
914912d
devbox
enisdenjo Dec 25, 2024
4bf2683
try with sandbox config
enisdenjo Dec 25, 2024
8dc3914
disable coommit
enisdenjo Dec 25, 2024
9fe4177
devcontainer forces devbox
enisdenjo Dec 25, 2024
ae333f4
no run at start
enisdenjo Dec 25, 2024
2b26335
run services in background
enisdenjo Dec 25, 2024
2156a5e
sleep 3
enisdenjo Dec 25, 2024
f559ee5
remove extra quotes
enisdenjo Dec 25, 2024
194feb9
runatstart
enisdenjo Dec 25, 2024
9cab1de
run gateway
enisdenjo Dec 25, 2024
273dc6f
service one by one and wait
enisdenjo Dec 25, 2024
4fa5eb3
foo then bar
enisdenjo Dec 25, 2024
0fda2b9
more retries
enisdenjo Dec 25, 2024
ea54c8c
ignore examples specifically
enisdenjo Dec 25, 2024
40601b5
tasks, test, dispose and friends
enisdenjo Dec 25, 2024
7ba4b3b
commit and clean
enisdenjo Dec 25, 2024
840b82f
writefilemkdir codesandbox tasks
enisdenjo Dec 25, 2024
8ce4e50
no commit author
enisdenjo Dec 25, 2024
37cd2d1
docs(examples): converted from e2es
enisdenjo Dec 25, 2024
9638cfb
longer service availability retry wait
enisdenjo Dec 25, 2024
e1f9c5b
resetauthor
enisdenjo Dec 25, 2024
b96e5e2
proper aborts on proper procs
enisdenjo Dec 25, 2024
7ce86ee
more abort timeout for setup tasks
enisdenjo Dec 25, 2024
78c3914
all files in examples are subject to commiting
enisdenjo Dec 25, 2024
aa081cf
diff and examples/
enisdenjo Dec 25, 2024
ad80295
include hidden files
enisdenjo Dec 25, 2024
e268da0
root examples
enisdenjo Dec 25, 2024
6d1d49a
supergraph from root examples
enisdenjo Dec 25, 2024
3a6dbd9
no leading slash
enisdenjo Dec 25, 2024
fd1b8b5
ommit author
enisdenjo Dec 25, 2024
fc1ff21
docs(examples): converted from e2es
github-actions[bot] Dec 25, 2024
8dd87a5
transform service ports and begin with testing
enisdenjo Dec 26, 2024
3361360
using opts directly
enisdenjo Dec 26, 2024
0c6a284
we have lines, no need for numbering
enisdenjo Dec 26, 2024
566e19b
use test files and better stuff
enisdenjo Dec 26, 2024
c563a74
waitforport needs protocol
enisdenjo Dec 26, 2024
48bc2fb
docs(examples): converted from e2es
github-actions[bot] Dec 26, 2024
32eb91e
typecheck internal tests
enisdenjo Dec 27, 2024
995cd37
detect create example setup
enisdenjo Dec 27, 2024
2dc0dd3
wip
enisdenjo Dec 28, 2024
065bcc0
use ts parser and parse
enisdenjo Dec 28, 2024
a680259
convert example files
enisdenjo Dec 28, 2024
2a38aa4
only copy non js files
enisdenjo Dec 28, 2024
86655e5
no return
enisdenjo Dec 28, 2024
e28f177
copy mkdir
enisdenjo Dec 28, 2024
22d7b83
has example setup
enisdenjo Dec 28, 2024
d46be2b
composes with apollo
enisdenjo Dec 28, 2024
889778a
empty devdeps once moved
enisdenjo Dec 28, 2024
e23aca2
specify federation_version
enisdenjo Dec 28, 2024
f19f4eb
add federation-example
enisdenjo Dec 28, 2024
f3df1bc
break after finding services
enisdenjo Dec 28, 2024
4c02b6f
perform healthcheck
enisdenjo Dec 28, 2024
d06da5c
transform gatway config
enisdenjo Dec 28, 2024
cb834be
custom parser
enisdenjo Dec 28, 2024
16bcd8b
more examples
enisdenjo Dec 28, 2024
3be395d
composes with apollo if not with mesh
enisdenjo Dec 28, 2024
29f3f00
resolve workspace versions
enisdenjo Dec 28, 2024
0bc260f
copy extras
enisdenjo Dec 28, 2024
58d2d41
cpmkdir
enisdenjo Dec 28, 2024
c4391ee
run custom scripts
enisdenjo Dec 28, 2024
25a6bfb
support https protocol
enisdenjo Dec 28, 2024
0026ec7
apollo server in e2e hmac auth https
enisdenjo Dec 28, 2024
ae315f3
dont copy dockerfiles
enisdenjo Dec 28, 2024
3425370
moreeee examples
enisdenjo Dec 28, 2024
ce00332
disclaimer
enisdenjo Dec 28, 2024
b307ecf
ignore internal tests for leaks
enisdenjo Dec 28, 2024
1340de7
use 0.0.0.0 instead of localhost
enisdenjo Dec 28, 2024
5adc80c
accept elv2 license
enisdenjo Dec 28, 2024
a1f68e0
dont fail fast for now
enisdenjo Dec 28, 2024
cf392bc
distinct names for artifact uploads
enisdenjo Dec 28, 2024
8f43d37
no fail fast
enisdenjo Dec 28, 2024
eec6672
use pattern instead
enisdenjo Dec 28, 2024
ff539ea
merge multiple
enisdenjo Dec 28, 2024
c06384c
bot commits, inspect and skip
enisdenjo Dec 28, 2024
57064b5
skip node_modules when uploading
enisdenjo Dec 28, 2024
fc79706
commit using bot
enisdenjo Dec 28, 2024
0a871b9
docs(examples): converted from e2es
theguild-bot Dec 28, 2024
eed1b73
proc uses stack and missed replacer
enisdenjo Dec 28, 2024
c58dcef
custom interval
enisdenjo Dec 28, 2024
05ca2cd
rename hmac-auth-https
enisdenjo Dec 28, 2024
498c3e7
proper package name in e2e
enisdenjo Dec 28, 2024
3dfd03d
use spawn from tenv
enisdenjo Dec 28, 2024
7ae57e8
use whatwgnode fetch
enisdenjo Dec 28, 2024
885c2fb
docs(examples): converted from e2es
theguild-bot Dec 28, 2024
c3a8763
ignore benchs
enisdenjo Dec 28, 2024
349aa09
ignore .pem files globally
enisdenjo Dec 29, 2024
27743c6
docs(examples): converted from e2es
theguild-bot Dec 29, 2024
b7e5223
no snaps
enisdenjo Dec 29, 2024
65b6440
thanks windows
enisdenjo Dec 29, 2024
429e38c
docs(examples): converted from e2es
theguild-bot Dec 29, 2024
74c7088
remove stuff
enisdenjo Dec 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions .github/workflows/examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Examples

on:
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
# NOTE: github.event.head_commit.message is not available on pull_request events
head-commit:
name: Inspect head commit
runs-on: ubuntu-latest
outputs:
message: ${{ steps.commit.outputs.message }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{github.event.pull_request.head.sha}}
- name: Inspect
id: commit
run: echo "message=$(git show -s --format=%s)" >> "$GITHUB_OUTPUT"

convert:
needs: [head-commit]
if: "${{needs.head-commit.outputs.message != 'docs(examples): converted from e2es'}}"
strategy:
matrix:
e2e:
- extra-fields
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will create workflows for each example which might cause a bigger queue. But instead maybe we can run this once and configure converted e2es in a file, no?

- federation-example
- federation-mixed
- file-upload
- apq-subgraphs
- federation-subscriptions-passthrough
- hmac-auth-https
- interface-additional-resolvers
- json-schema-subscriptions
- openapi-additional-resolvers
- openapi-arg-rename
- openapi-javascript-wiki
- openapi-subscriptions
- programmatic-batching
- subscriptions-with-transforms
- type-merging-batching
name: Convert ${{matrix.e2e}}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up env
uses: the-guild-org/shared-config/setup@v1
- name: Convert
run: yarn workspace @internal/examples run start ${{matrix.e2e}} true
- name: Upload
uses: actions/upload-artifact@v4
with:
name: example-${{matrix.e2e}}
# include all files and folders starting with a dot (.)
include-hidden-files: true
# > If multiple paths are provided as input, the least common ancestor of all the search paths will be used as the root directory of the artifact.
# https://github.com/actions/upload-artifact#upload-using-multiple-paths-and-exclusions
#
# Because of this, we include the root README.md to maintain the paths during artifact downloads
path: |
README.md
examples/${{matrix.e2e}}
!examples/${{matrix.e2e}}/node_modules

commit:
needs: [convert]
name: Commit
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{secrets.BOT_GITHUB_TOKEN}}
- name: Download
uses: actions/download-artifact@v4
with:
pattern: example-*
merge-multiple: true
- name: Diff
run: git diff --pretty
- name: Commit
uses: stefanzweifel/git-auto-commit-action@v5
with:
file_pattern: examples/
commit_message: 'docs(examples): converted from e2es'
commit_user_name: theguild-bot
commit_user_email: [email protected]
commit_author: theguild-bot <[email protected]> # dont use the actor as an author
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ tsconfig.tsbuildinfo
sea-prep.blob
hive-gateway
.cache/
*.pem
/examples/**/*/supergraph.graphql
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ __generated__
!.changeset/config.json
.wrangler/
*.Dockerfile
/examples/
1 change: 0 additions & 1 deletion e2e/hmac-auth-https/.gitignore

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { createTenv } from '@internal/e2e';
import { describe, expect, it } from 'vitest';

describe('HMAC Signature', async () => {
execSync('yarn workspace hmac-auth-https generate-users-cert');
execSync('yarn workspace @e2e/hmac-auth-https generate-users-cert');
const { service, gateway, gatewayRunner } = createTenv(__dirname);
const localCertFile = join(__dirname, 'users_cert.pem');
const dockerCertFile = '/gateway/users_cert.pem';
Expand Down
3 changes: 2 additions & 1 deletion e2e/hmac-auth-https/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"name": "hmac-auth-https",
"name": "@e2e/hmac-auth-https",
"version": "0.0.0",
"private": true,
"scripts": {
"generate-users-cert": "openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout ./services/users/key.pem -out ./services/users/cert.pem -subj \"/CN=users_subgraph\" -addext \"subjectAltName=DNS:users_subgraph,DNS:localhost,IP:172.17.0.1,DNS:host.docker.internal\" && cp ./services/users/cert.pem ./users_cert.pem"
},
"dependencies": {
"@apollo/server": "^4.10.3",
"@apollo/subgraph": "^2.9.3",
"@graphql-hive/gateway": "workspace:^",
"@graphql-mesh/compose-cli": "^1.3.3",
Expand Down
2 changes: 2 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
> [!CAUTION]
> These examples are auto-generated using the [e2e](/e2e) tests, do NOT modify them directly!
30 changes: 30 additions & 0 deletions examples/apq-subgraphs/.codesandbox/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"setupTasks": [
{
"name": "Install",
"command": "npm i"
},
{
"name": "Start service greetings",
"command": "npm run service:greetings &"
},
{
"name": "Wait for service greetings",
"command": "curl --retry-connrefused --retry 10 --retry-delay 3 http://0.0.0.0:4001"
},
{
"name": "Compose",
"command": "npm run compose"
}
],
"tasks": {
"gateway": {
"name": "Hive Gateway",
"runAtStart": true,
"command": "npm run gateway",
"preview": {
"port": 4000
}
}
}
}
4 changes: 4 additions & 0 deletions examples/apq-subgraphs/.devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "Node.js",
"image": "mcr.microsoft.com/devcontainers/javascript-node:20"
}
20 changes: 20 additions & 0 deletions examples/apq-subgraphs/gateway.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { defineConfig } from '@graphql-hive/gateway';

let fetchCnt = 0;
export const gatewayConfig = defineConfig({
transportEntries: {
greetings: {
options: {
apq: true,
},
},
},
plugins: () => [
{
onFetch({ options }) {
fetchCnt++;
process.stdout.write(`fetch ${fetchCnt} ${options.body}\n`);
},
},
],
});
14 changes: 14 additions & 0 deletions examples/apq-subgraphs/mesh.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {
defineConfig,
loadGraphQLHTTPSubgraph,
} from '@graphql-mesh/compose-cli';

export const composeConfig = defineConfig({
subgraphs: [
{
sourceHandler: loadGraphQLHTTPSubgraph('greetings', {
endpoint: `http://localhost:${4001}/graphql`,
}),
},
],
});
Loading
Loading