-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loading status checks…
First commit
0 parents
commit 65ac897
Showing
47 changed files
with
24,567 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
DATABASE_URL="file:./dev.db" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
module.exports = { | ||
env: { | ||
browser: true, | ||
es2021: true, | ||
}, | ||
extends: ['standard-with-typescript', 'prettier'], | ||
overrides: [], | ||
parserOptions: { | ||
ecmaVersion: 'latest', | ||
sourceType: 'module', | ||
project: ['./tsconfig.json'], | ||
}, | ||
rules: { | ||
semi: 'off', | ||
'@typescript-eslint/semi': ['error', 'always'], | ||
'@typescript-eslint/strict-boolean-expressions': 'off', | ||
'@typescript-eslint/restrict-template-expressions': 'off', | ||
'comma-dangle': 'off', | ||
'@typescript-eslint/comma-dangle': ['error', 'always-multiline'], | ||
'@typescript-eslint/no-misused-promises': 'off', | ||
'@typescript-eslint/promise-function-async': 'off', | ||
'@typescript-eslint/no-floating-promises': 'off', | ||
'@typescript-eslint/require-array-sort-compare': 'off', | ||
'no-lone-blocks': 'off', | ||
'no-useless-return': 'off', | ||
'@typescript-eslint/member-delimiter-style': 'off', | ||
'@typescript-eslint/indent': 'off', | ||
'@typescript-eslint/space-before-function-paren': [ | ||
'error', | ||
{ | ||
anonymous: 'always', | ||
named: 'never', | ||
asyncArrow: 'always', | ||
}, | ||
], | ||
}, | ||
ignorePatterns: ['codegen.ts', 'src/graphql/generated.ts'], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,218 @@ | ||
name: Build and deploy cdapp block-ingestor docker image | ||
|
||
on: | ||
|
||
workflow_dispatch: # Allows manual workflow trigger | ||
repository_dispatch: # Allows API workflow trigger | ||
types: [cdapp-block-ingestor] | ||
|
||
push: | ||
branches: | ||
- master # Automatically deploy on commits to master | ||
paths-ignore: | ||
- '.github/**' | ||
- '**.md' | ||
|
||
concurrency: | ||
group: cdapp-block-ingestor | ||
cancel-in-progress: true | ||
|
||
# Set global env variables | ||
env: | ||
AWS_REGION: eu-west-2 | ||
ECR_REPOSITORY: ${{ secrets.AWS_ACCOUNT_ID_QA }}.dkr.ecr.eu-west-2.amazonaws.com/cdapp/block-ingestor | ||
COMMIT_HASH: ${{ github.event.client_payload.COMMIT_HASH != null && github.event.client_payload.COMMIT_HASH || github.sha }} | ||
|
||
jobs: | ||
|
||
# Build cdapp block-ingestor and push to AWS ECR | ||
buildAndPush: | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
|
||
- name: Echo Env Vars through Context | ||
run: | | ||
echo "$GITHUB_CONTEXT" | ||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v2 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_QA }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_QA }} | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v1 | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Checkout relevant branch | ||
run: | ||
git checkout ${{ github.event.client_payload.COMMIT_HASH != null && github.event.client_payload.COMMIT_HASH || github.sha }} | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Build and push | ||
uses: docker/build-push-action@v3 | ||
with: | ||
context: ${{ github.workspace }} | ||
file: ./Dockerfile | ||
push: true | ||
tags: | | ||
${{ env.ECR_REPOSITORY }}:run-${{ github.run_number }} | ||
${{ env.ECR_REPOSITORY }}:${{ env.COMMIT_HASH }} | ||
- uses: sarisia/actions-status-discord@c193626e5ce172002b8161e116aa897de7ab5383 | ||
if: always() | ||
with: | ||
webhook: ${{ secrets.DISCORD_WEBHOOK }} | ||
title: "Build and push cdapp block-ingestor" | ||
|
||
# Deploy cdapp block-ingestor to QA environment | ||
deployQA: | ||
|
||
needs: buildAndPush | ||
|
||
runs-on: ubuntu-latest | ||
|
||
env: | ||
NAMESPACE: cdapp | ||
CLUSTER_NAME: qa-cluster | ||
ENVIRONMENT_TAG: qa | ||
REPOSITORY_NAME: cdapp/block-ingestor | ||
|
||
steps: | ||
|
||
- name: Configure AWS credentials for ECR | ||
uses: aws-actions/configure-aws-credentials@v2 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_QA }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_QA }} | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v1 | ||
|
||
- name: Echo current image and tag new image | ||
run: | | ||
echo -e "Getting image info...\n" | ||
echo -e "###### Current image being used ######\n" | ||
SHA256=$(aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageTag=${{ env.ENVIRONMENT_TAG }} --output json | jq '.images[].imageId.imageDigest') | ||
aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageDigest=$SHA256 --output json | jq '.images[].imageId' | ||
echo -e "\n###### Tagging new image with environment tag ######" | ||
MANIFEST=$(aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageTag=${{ env.COMMIT_HASH }} --output json | jq --raw-output --join-output '.images[0].imageManifest') | ||
aws ecr put-image --repository-name ${{ env.REPOSITORY_NAME }} --image-tag ${{ env.ENVIRONMENT_TAG }} --image-manifest "$MANIFEST" | ||
echo -e "\n###### New image being used ######\n" | ||
SHA256=$(aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageTag=${{ env.ENVIRONMENT_TAG }} --output json | jq '.images[].imageId.imageDigest') | ||
aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageDigest=$SHA256 --output json | jq '.images[].imageId' | ||
- name: Configure AWS credentials for EKS | ||
uses: aws-actions/configure-aws-credentials@v2 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_QA }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_QA }} | ||
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID_QA }}:role/eks-admin | ||
role-session-name: github-cicd | ||
role-duration-seconds: 1200 | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Configure AWS EKS | ||
run: | | ||
aws eks --region ${{ env.AWS_REGION }} update-kubeconfig --name ${{ env.CLUSTER_NAME }} | ||
- name: Deploy to Kubernetes cluster | ||
run: | | ||
kubectl rollout restart deployment/cdapp-block-ingestor-${{ env.ENVIRONMENT_TAG }} -n ${{ env.NAMESPACE }} | ||
- name: Validate Kubernetes deployment | ||
run: | | ||
kubectl rollout status deployment/cdapp-block-ingestor-${{ env.ENVIRONMENT_TAG }} -n ${{ env.NAMESPACE }} | ||
- uses: sarisia/actions-status-discord@c193626e5ce172002b8161e116aa897de7ab5383 | ||
if: always() | ||
with: | ||
webhook: ${{ secrets.DISCORD_WEBHOOK }} | ||
title: "Deploy cdapp block-ingestor to ${{ env.ENVIRONMENT_TAG }}" | ||
|
||
# Deploy cdapp block-ingestor to Prod environment | ||
deployProd: | ||
|
||
needs: deployQA | ||
|
||
environment: prod | ||
|
||
runs-on: ubuntu-latest | ||
|
||
env: | ||
NAMESPACE: cdapp | ||
CLUSTER_NAME: prod-cluster | ||
ENVIRONMENT_TAG: prod | ||
REPOSITORY_NAME: cdapp/block-ingestor | ||
|
||
steps: | ||
|
||
- name: Configure AWS credentials for ECR | ||
uses: aws-actions/configure-aws-credentials@v2 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_QA }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_QA }} | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v1 | ||
|
||
- name: Echo current image and tag new image | ||
run: | | ||
echo -e "Getting image info...\n" | ||
echo -e "###### Current image being used ######\n" | ||
SHA256=$(aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageTag=${{ env.ENVIRONMENT_TAG }} --output json | jq '.images[].imageId.imageDigest') | ||
aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageDigest=$SHA256 --output json | jq '.images[].imageId' | ||
echo -e "\n###### Tagging new image with environment tag ######" | ||
MANIFEST=$(aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageTag=${{ env.COMMIT_HASH }} --output json | jq --raw-output --join-output '.images[0].imageManifest') | ||
aws ecr put-image --repository-name ${{ env.REPOSITORY_NAME }} --image-tag ${{ env.ENVIRONMENT_TAG }} --image-manifest "$MANIFEST" | ||
echo -e "\n###### New image being used ######\n" | ||
SHA256=$(aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageTag=${{ env.ENVIRONMENT_TAG }} --output json | jq '.images[].imageId.imageDigest') | ||
aws ecr batch-get-image --repository-name ${{ env.REPOSITORY_NAME }} --image-ids imageDigest=$SHA256 --output json | jq '.images[].imageId' | ||
- name: Configure AWS credentials for EKS | ||
uses: aws-actions/configure-aws-credentials@v2 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} | ||
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID_PROD }}:role/eks-admin | ||
role-session-name: github-cicd | ||
role-duration-seconds: 1200 | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Configure AWS EKS | ||
run: | | ||
aws eks --region ${{ env.AWS_REGION }} update-kubeconfig --name ${{ env.CLUSTER_NAME }} | ||
- name: Deploy to Kubernetes cluster | ||
run: | | ||
kubectl rollout restart deployment/cdapp-block-ingestor-${{ env.ENVIRONMENT_TAG }} -n ${{ env.NAMESPACE }} | ||
- name: Validate Kubernetes deployment | ||
run: | | ||
kubectl rollout status deployment/cdapp-block-ingestor-${{ env.ENVIRONMENT_TAG }} -n ${{ env.NAMESPACE }} | ||
- uses: sarisia/actions-status-discord@c193626e5ce172002b8161e116aa897de7ab5383 | ||
if: always() | ||
with: | ||
webhook: ${{ secrets.DISCORD_WEBHOOK }} | ||
title: "Deploy cdapp block-ingestor to ${{ env.ENVIRONMENT_TAG }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
lerna-debug.log* | ||
|
||
# Diagnostic reports (https://nodejs.org/api/report.html) | ||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | ||
|
||
# Runtime data | ||
pids | ||
*.pid | ||
*.seed | ||
*.pid.lock | ||
|
||
# Directory for instrumented libs generated by jscoverage/JSCover | ||
lib-cov | ||
|
||
# Coverage directory used by tools like istanbul | ||
coverage | ||
*.lcov | ||
|
||
# nyc test coverage | ||
.nyc_output | ||
|
||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
# Bower dependency directory (https://bower.io/) | ||
bower_components | ||
|
||
# node-waf configuration | ||
.lock-wscript | ||
|
||
# Compiled binary addons (https://nodejs.org/api/addons.html) | ||
build/Release | ||
|
||
# Dependency directories | ||
node_modules/ | ||
jspm_packages/ | ||
|
||
# TypeScript v1 declaration files | ||
typings/ | ||
|
||
# TypeScript cache | ||
*.tsbuildinfo | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
# Optional eslint cache | ||
.eslintcache | ||
|
||
# Microbundle cache | ||
.rpt2_cache/ | ||
.rts2_cache_cjs/ | ||
.rts2_cache_es/ | ||
.rts2_cache_umd/ | ||
|
||
# Optional REPL history | ||
.node_repl_history | ||
|
||
# Output of 'npm pack' | ||
*.tgz | ||
|
||
# Yarn Integrity file | ||
.yarn-integrity | ||
|
||
# dotenv environment variables file | ||
.env | ||
.env.test | ||
|
||
# parcel-bundler cache (https://parceljs.org/) | ||
.cache | ||
|
||
# Next.js build output | ||
.next | ||
|
||
# Nuxt.js build / generate output | ||
.nuxt | ||
dist | ||
|
||
# Gatsby files | ||
.cache/ | ||
# Comment in the public line in if your project uses Gatsby and *not* Next.js | ||
# https://nextjs.org/blog/next-9-1#public-directory-support | ||
# public | ||
|
||
# vuepress build output | ||
.vuepress/dist | ||
|
||
# Serverless directories | ||
.serverless/ | ||
|
||
# FuseBox cache | ||
.fusebox/ | ||
|
||
# DynamoDB Local files | ||
.dynamodb/ | ||
|
||
# TernJS port file | ||
.tern-port | ||
|
||
stats.txt | ||
./prisma/dev.db | ||
config.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env sh | ||
. "$(dirname -- "$0")/_/husky.sh" | ||
|
||
npx lint-staged --allow-empty |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env sh | ||
. "$(dirname -- "$0")/_/husky.sh" | ||
|
||
npm run typecheck |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"src/**/*.ts": ["eslint --fix", "prettier --write --ignore-unknown"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
20.11 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"singleQuote": true, | ||
"trailingComma": "all" | ||
} |
Oops, something went wrong.