Skip to content

Commit

Permalink
Add CI
Browse files Browse the repository at this point in the history
  • Loading branch information
tbantle22 committed Oct 4, 2023
1 parent ba7505a commit bc51011
Show file tree
Hide file tree
Showing 8 changed files with 143 additions and 3 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Run CI
on:
pull_request:
workflow_dispatch:

concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
ci:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install and run CI
run: |
yarn
yarn run ci
13 changes: 13 additions & 0 deletions check-status.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

set -e

out=$(git status --porcelain)

if [ -z "$out" ]; then
exit 0
fi

echo "Found uncommitted changes during CI"
echo $out
exit 1
18 changes: 17 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@
"packages/*"
],
"scripts": {
"ci": "npm-run-all prettier compile lint test build check",
"build": "npm-run-all 'build:*'",
"build:graphql": "yarn workspace @dolt-sql-workbench/graphql-server build",
"build:web": "yarn workspace @dolt-sql-workbench/web build",
"check": "npm-run-all 'check:*'",
"check:graphql": "yarn workspace @dolt-sql-workbench/graphql-server run check-server",
"check:status": "./check-status.sh",
"compile": "npm-run-all 'compile:*'",
"compile:graphql": "yarn workspace @dolt-sql-workbench/graphql-server compile",
"compile:web": "tsc -b packages/web",
Expand All @@ -13,7 +20,16 @@
"lint:web": "yarn workspace @dolt-sql-workbench/web lint",
"clean": "npm-run-all 'clean:*'",
"clean:web": "tsc -b packages/web --clean",
"clean:misc": "rimraf node_modules 'packages/*/.eslintcache' 'packages/*/*.tsbuildinfo' 'packages/*/dist' 'packages/web/.next'"
"clean:misc": "rimraf node_modules 'packages/*/.eslintcache' 'packages/*/*.tsbuildinfo' 'packages/*/dist' 'packages/web/.next'",
"prettier": "npm-run-all 'prettier:*'",
"prettier-fix": "npm-run-all 'prettier-fix:*'",
"prettier:web": "yarn workspace @dolt-sql-workbench/web prettier",
"prettier-fix:web": "yarn workspace @dolt-sql-workbench/web prettier-fix",
"prettier:graphql": "yarn workspace @dolt-sql-workbench/graphql-server prettier",
"prettier-fix:graphql": "yarn workspace @dolt-sql-workbench/graphql-server prettier-fix",
"test": "npm-run-all 'test:*'",
"test:graphql": "yarn workspace @dolt-sql-workbench/graphql-server test",
"test:web": "yarn workspace @dolt-sql-workbench/web test"
},
"devDependencies": {
"@next/eslint-plugin-next": "^13.5.4",
Expand Down
59 changes: 59 additions & 0 deletions packages/graphql-server/check-server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
const util = require("util");
const { spawn, spawnSync } = require("child_process");

const setTimeoutPromise = util.promisify(setTimeout);

checkServer()
.then(() => {
console.log("server runs successfully");
process.exit(0);
})
.catch(err => {
console.log(err);
process.exit(1);
});

// checkServer checks the graphql-server can run without error
async function checkServer(waitTime = 25000) {
const server = runServer();
await setTimeoutPromise(waitTime);
try {
generateTypes();
} catch (err) {
if (!server.killed) server.kill();
// throw error to checkServer catch block
throw new Error(err);
}
if (!server.killed) server.kill();
}

// generateTypes runs the generate graphql types command in the web package
function generateTypes() {
return spawnSync("yarn", ["run", "generate-types"], {
cwd: `${__dirname}/web`,
stdio: "inherit",
});
}

// runServer runs the graphql server and exits with error if the
// server writes to stderr or recieves an error event
function runServer() {
const server = spawn("node", ["dist/main.js"], {
shell: true,
cwd: __dirname,
});
server.stdout.on("data", data => {
console.log(`${data}`);
});
server.stderr.on("data", data => {
console.log(`${data}`);
if (!server.killed) server.kill();
process.exit(1);
});
server.on("error", err => {
console.error(err);
if (!server.killed) server.kill();
process.exit(1);
});
return server;
}
28 changes: 28 additions & 0 deletions packages/graphql-server/ci-helper.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

set -e

if [ -z "$1" ]; then
echo "Must supply graphql-server package dir: ./ci-helper.sh ./packages/graphql-server"
exit 1
fi

# compile web
(
cd "$1"/../web
yarn run compile
)

# compile and build graphql
(
cd "$1"/../graphql-server
yarn run compile
yarn run build
)

# check server can run and type changes are committed
(
node "$1"/check-server.js
)

exit 0
2 changes: 1 addition & 1 deletion packages/graphql-server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"prettier-fix": "prettier --write 'src/**/*.{js,ts}'",
"lint": "eslint --cache --ext .ts,.js,.tsx,.jsx .",
"lint-errors": "eslint --quiet --cache --ext .ts,.js,.tsx,.jsx .",
"test": "jest"
"test": "jest --passWithNoTests"
},
"engines": {
"node": ">=10.3.0"
Expand Down
2 changes: 1 addition & 1 deletion packages/web/lib/nTimes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ test("withIndex collects results of doing an operation a given number of times w
"string 1",
"string 2",
"string 3",
"string 4"
"string 4",
]);
});
2 changes: 2 additions & 0 deletions packages/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"lint-css": "stylelint \"**/*.css\"",
"lint-fix": "eslint --quiet --fix --ext .ts,.js,.tsx,.jsx .",
"generate-types": "graphql-codegen --config codegen.yml",
"prettier": "prettier --check '{components,contexts,hooks,lib,pages}/**/*.{js,ts,jsx,tsx,css}'",
"prettier-fix": "prettier --write '{components,contexts,hooks,lib,pages}/**/*.{js,ts,jsx,tsx,css}'",
"test": "jest --env=jest-environment-jsdom"
},
"dependencies": {
Expand Down

0 comments on commit bc51011

Please sign in to comment.