Skip to content

Commit

Permalink
Docker build
Browse files Browse the repository at this point in the history
Scale settings

Fixses
  • Loading branch information
Boldizsar Mezei committed Oct 20, 2023
1 parent 5231fcd commit c20cef9
Show file tree
Hide file tree
Showing 221 changed files with 2,708 additions and 2,080 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
**/node_modules
**/lib
**/scripts
45 changes: 26 additions & 19 deletions .github/workflows/action_deploy-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,23 @@ jobs:
credentials_json: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_SOONAVERSE }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: 'Use gcloud CLI'
run: 'gcloud info'
- name: Install dependencies
run: npm install
- name: Build Instance
run: npm run build:api
- name: Deploy Instance
- name: Build image
run: |
cp packages/api/Dockerfile .
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/api
- name: Deploy
run: |
cd packages/api
npm run deploy:prod
gcloud run deploy api \
--image gcr.io/$GOOGLE_CLOUD_PROJECT/api \
--min-instances=3 \
--memory=1Gi \
--cpu=1 \
--concurrency=1000 \
--allow-unauthenticated \
--timeout=600 \
--ingress=internal-and-cloud-load-balancing \
--region=us-central1 \
deploy_functions:
runs-on: ubuntu-latest
environment: production
Expand All @@ -37,17 +44,17 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Set env vars
working-directory: packages/functions
run: echo "$FUNCTIONS_ENV_VARS" >> .env
env:
FUNCTIONS_ENV_VARS: ${{ secrets.FUNCTIONS_ENV_VARS_PROD }}
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
args: deploy --only functions,firestore:indexes -P soonaverse -f
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
credentials_json: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_SOONAVERSE_TEST }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: Build and deploy
run: |
npm run create-deploy-script
chmod 777 ./deploy.sh
./deploy.sh
deploy_to_npm:
runs-on: ubuntu-latest
Expand Down
45 changes: 26 additions & 19 deletions .github/workflows/action_deploy-wen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,23 @@ jobs:
credentials_json: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_SOONAVERSE_TEST }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: 'Use gcloud CLI'
run: 'gcloud info'
- name: Install dependencies
run: npm install
- name: Build Instance
run: npm run build:api
- name: Deploy Instance
- name: Build image
run: |
cp packages/api/Dockerfile .
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/api
- name: Deploy
run: |
cd packages/api
npm run deploy:prod
gcloud run deploy api \
--image gcr.io/$GOOGLE_CLOUD_PROJECT/api \
--min-instances=3 \
--memory=1Gi \
--cpu=1 \
--concurrency=1000 \
--allow-unauthenticated \
--timeout=600 \
--ingress=internal-and-cloud-load-balancing \
--region=us-central1 \
deploy_functions:
runs-on: ubuntu-latest
environment: staging
Expand All @@ -38,17 +45,17 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Set env vars
working-directory: packages/functions
run: echo "$FUNCTIONS_ENV_VARS" >> .env
env:
FUNCTIONS_ENV_VARS: ${{ secrets.FUNCTIONS_ENV_VARS_TEST }}
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
args: deploy --only functions,firestore:indexes -P soonaverse-test -f
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
credentials_json: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_SOONAVERSE_TEST }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: Build and deploy
run: |
npm run create-deploy-script
chmod 777 ./deploy.sh
./deploy.sh
roll-firestore:
runs-on: ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,6 @@ dist

package-lock.json
packages/functions/scripts/*.json

Dockerfile
deploy.sh
162 changes: 162 additions & 0 deletions data.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.events.cloud.firestore.v1;

import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/type/latlng.proto";

option csharp_namespace = "Google.Events.Protobuf.Cloud.Firestore.V1";
option php_namespace = "Google\\Events\\Cloud\\Firestore\\V1";
option ruby_package = "Google::Events::Cloud::Firestore::V1";

// The data within all Firestore document events.
message DocumentEventData {
// A Document object containing a post-operation document snapshot.
// This is not populated for delete events.
Document value = 1;

// A Document object containing a pre-operation document snapshot.
// This is only populated for update and delete events.
Document old_value = 2;

// A DocumentMask object that lists changed fields.
// This is only populated for update events.
DocumentMask update_mask = 3;
}

// A set of field paths on a document.
message DocumentMask {
// The list of field paths in the mask.
// See [Document.fields][google.cloud.firestore.v1.events.Document.fields]
// for a field path syntax reference.
repeated string field_paths = 1;
}

// A Firestore document.
message Document {
// The resource name of the document. For example:
// `projects/{project_id}/databases/{database_id}/documents/{document_path}`
string name = 1;

// The document's fields.
//
// The map keys represent field names.
//
// A simple field name contains only characters `a` to `z`, `A` to `Z`,
// `0` to `9`, or `_`, and must not start with `0` to `9`. For example,
// `foo_bar_17`.
//
// Field names matching the regular expression `__.*__` are reserved. Reserved
// field names are forbidden except in certain documented contexts. The map
// keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be
// empty.
//
// Field paths may be used in other contexts to refer to structured fields
// defined here. For `map_value`, the field path is represented by the simple
// or quoted field names of the containing fields, delimited by `.`. For
// example, the structured field
// `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
// represented by the field path `foo.x&y`.
//
// Within a field path, a quoted field name starts and ends with `` ` `` and
// may contain any character. Some characters, including `` ` ``, must be
// escaped using a `\`. For example, `` `x&y` `` represents `x&y` and
// `` `bak\`tik` `` represents `` bak`tik ``.
map<string, Value> fields = 2;

// The time at which the document was created.
//
// This value increases monotonically when a document is deleted then
// recreated. It can also be compared to values from other documents and
// the `read_time` of a query.
google.protobuf.Timestamp create_time = 3;

// The time at which the document was last changed.
//
// This value is initially set to the `create_time` then increases
// monotonically with each change to the document. It can also be
// compared to values from other documents and the `read_time` of a query.
google.protobuf.Timestamp update_time = 4;
}

// A message that can hold any of the supported value types.
message Value {
// Must have a value set.
oneof value_type {
// A null value.
google.protobuf.NullValue null_value = 11;

// A boolean value.
bool boolean_value = 1;

// An integer value.
int64 integer_value = 2;

// A double value.
double double_value = 3;

// A timestamp value.
//
// Precise only to microseconds. When stored, any additional precision is
// rounded down.
google.protobuf.Timestamp timestamp_value = 10;

// A string value.
//
// The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes.
// Only the first 1,500 bytes of the UTF-8 representation are considered by
// queries.
string string_value = 17;

// A bytes value.
//
// Must not exceed 1 MiB - 89 bytes.
// Only the first 1,500 bytes are considered by queries.
bytes bytes_value = 18;

// A reference to a document. For example:
// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
string reference_value = 5;

// An array value.
//
// Cannot directly contain another array value, though can contain an
// map which contains another array.
ArrayValue array_value = 9;

// A map value.
MapValue map_value = 6;
}
}

// An array value.
message ArrayValue {
// Values in the array.
repeated Value values = 1;
}

// A map value.
message MapValue {
// The map's fields.
//
// The map keys represent field names. Field names matching the regular
// expression `__.*__` are reserved. Reserved field names are forbidden except
// in certain documented contexts. The map keys, represented as UTF-8, must
// not exceed 1,500 bytes and cannot be empty.
map<string, Value> fields = 1;
}
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
"prettier:database": "npx prettier --write ./packages/database",
"prettier:api": "npx prettier --write ./packages/api",
"prettier": "npm run prettier:functions; npm run prettier:interfaces; npm run prettier:indexes; npm run prettier:lib; npm run prettier:database; npm run prettier:api",
"joi-to-types": "ts-node ./scripts/joi-generator-post.ts && ts-node ./scripts/joi-generator-tangle.ts && npm run prettier"
"joi-to-types": "ts-node ./scripts/joi-generator-post.ts && ts-node ./scripts/joi-generator-tangle.ts && npm run prettier",
"rebuild": "npm run clean && npm run build",
"create-deploy-script": "ts-node packages/functions/deploy.script.ts"
},
"devDependencies": {
"joi-to-typescript": "4.7.0"
Expand Down
12 changes: 0 additions & 12 deletions packages/api/build.js

This file was deleted.

12 changes: 4 additions & 8 deletions packages/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,13 @@
],
"private": "true",
"scripts": {
"build": "rm -rf lib && tsc && node build && cp -r ../database lib/database",
"start": "tsc && node lib/index",
"deploy:prod": "npm run build && npm run gceploy:prod",
"deploy:test": "npm run build && npm run gceploy:test",
"gceploy:prod": "gcloud run deploy api --min-instances=3 --memory=1Gi --cpu=1 --concurrency=1000 --allow-unauthenticated --timeout=600 --ingress=internal-and-cloud-load-balancing --region=us-central1 --source=lib",
"gceploy:test": "gcloud run deploy api --allow-unauthenticated --timeout=600 --ingress=internal-and-cloud-load-balancing --region=us-central1 --source=lib"
"build": "tsc",
"start": "tsc && node lib/index"
},
"dependencies": {
"@build-5/database": "*",
"@build-5/interfaces": "*",
"@iota/sdk": "^1.1.0",
"@iota/sdk": "1.1.1",
"cors": "^2.8.5",
"dayjs": "^1.11.9",
"express": "^4.18.2",
Expand All @@ -36,6 +32,6 @@
"@types/express": "^4.17.17",
"@types/lodash": "^4.14.197",
"@types/ws": "^8.5.5",
"typescript": "^5.2.2"
"typescript": "4.9.5"
}
}
6 changes: 2 additions & 4 deletions packages/api/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,12 @@ import { getNftMutableMetadata } from './metadataNft/getNftMutableMetadata';
import { getNftMutableMetadataHistory } from './metadataNft/getNftMutableMetadataHistory';
import { sendLiveUpdates } from './sendLiveUpdates';

const port = process.env.PORT || 3000;
const port = 8080;
const app = express();

app.use(cors());

Object.values(ApiRoutes).forEach((route) => {
app.get('/api' + route, (req, res) => onConnection(req.url, res));
});
app.get('/*', (req, res) => onConnection(req.url, res));

const wsServer = new ws.Server({ noServer: true });

Expand Down
2 changes: 1 addition & 1 deletion packages/database/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@
"@types/lodash": "^4.14.197",
"dotenv": "^16.3.1",
"glob": "8.0.3",
"typescript": "^5.2.2"
"typescript": "4.9.5"
}
}
Loading

0 comments on commit c20cef9

Please sign in to comment.