diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..a2752f4 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,71 @@ +--- + +kind: pipeline +name: deployment + +steps: +- name: deploy + image: appleboy/drone-ssh + settings: + host: 192.168.68.121 + username: vylpes + password: + from_secret: ssh_password + port: 22 + script: + - sh /home/vylpes/scripts/card-drop/deploy_prod.sh + +trigger: + event: + - tag + +--- + +kind: pipeline +name: staging + +steps: +- name: stage + image: appleboy/drone-ssh + settings: + host: 192.168.68.121 + username: vylpes + password: + from_secret: ssh_password + port: 22 + script: + - sh /home/vylpes/scripts/card-drop/deploy_stage.sh + +trigger: + branch: + - develop + event: + - push + +--- + +kind: pipeline +name: integration + +steps: +- name: build + image: node + commands: + - yarn install --frozen-lockfile + - yarn build + +- name: test + image: node + commands: + - yarn install --frozen-lockfile + - yarn test + +trigger: + branch: + - main + - develop + - hotfix/* + - feature/* + - renovate/* + event: + - push diff --git a/database/0.1/1693769942868-CreateBase/Up/01-table/Inventory.sql b/database/0.1/1693769942868-CreateBase/Up/01-table/Inventory.sql new file mode 100644 index 0000000..09adb8b --- /dev/null +++ b/database/0.1/1693769942868-CreateBase/Up/01-table/Inventory.sql @@ -0,0 +1,10 @@ +CREATE TABLE `inventory` ( + `Id` varchar(255) NOT NULL, + `WhenCreated` datetime NOT NULL, + `WhenUpdated` datetime NOT NULL, + `UserId` varchar(255) NOT NULL, + `CardNumber` varchar(255) NOT NULL, + `Quantity` int NOT NULL, + `ClaimId` varchar(255) NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; \ No newline at end of file diff --git a/package.json b/package.json index 44d32c2..7d94d89 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,10 @@ "clean": "rm -rf node_modules/ dist/", "build": "tsc", "start": "node ./dist/bot.js", - "test": "jest", + "test": "jest --passWithNoTests", "db:up": "typeorm migration:run -d dist/database/dataSources/appDataSource.js", "db:down": "typeorm migration:revert -d dist/database/dataSources/appDataSource.js", + "db:create": "typeorm migration:create ./src/database/migrations/app/new", "release": "np --no-publish" }, "repository": "https://gitea.vylpes.xyz/External/card-drop.git", diff --git a/scripts/deploy_prod.sh b/scripts/deploy_prod.sh new file mode 100644 index 0000000..c768956 --- /dev/null +++ b/scripts/deploy_prod.sh @@ -0,0 +1,23 @@ +#! /bin/bash + +export PATH="$HOME/.yarn/bin:$PATH" +export PATH="$HOME/.nodeuse/bin:$PATH" + +export BOT_TOKEN=$(cat $HOME/scripts/card-drop/prod_key.txt) + +cd ~/apps/card-drop/card-drop_prod \ +&& git checkout main \ +&& git fetch \ +&& git pull \ +&& docker compose --file docker-compose.prod.yml down \ +&& (pm2 stop card-drop_prod || true) \ +&& (pm2 delete card-drop_prod || true) \ +&& cp .prod.env .env \ +&& yarn clean \ +&& yarn install --frozen-lockfile \ +&& yarn build \ +&& docker compose --file docker-compose.prod.yml up -d \ +&& echo "Sleeping for 10 seconds to let database load..." \ +&& sleep 10 \ +&& yarn run db:up \ +&& NODE_ENV=production pm2 start --name card-drop_prod dist/bot.js \ No newline at end of file diff --git a/scripts/deploy_stage.sh b/scripts/deploy_stage.sh new file mode 100644 index 0000000..5638ba7 --- /dev/null +++ b/scripts/deploy_stage.sh @@ -0,0 +1,23 @@ +#! /bin/bash + +export PATH="$HOME/.yarn/bin:$PATH" +export PATH="$HOME/.nodeuse/bin:$PATH" + +export BOT_TOKEN=$(cat $HOME/scripts/card-drop/stage_key.txt) + +cd ~/apps/card-drop/card-drop_stage \ +&& git checkout develop \ +&& git fetch \ +&& git pull \ +&& docker compose --file docker-compose.stage.yml down \ +&& (pm2 stop card-drop_stage || true) \ +&& (pm2 delete card-drop_stage || true) \ +&& cp .stage.env .env \ +&& yarn clean \ +&& yarn install --frozen-lockfile \ +&& yarn build \ +&& docker compose --file docker-compose.stage.yml up -d \ +&& echo "Sleeping for 10 seconds to let database load..." \ +&& sleep 10 \ +&& yarn run db:up \ +&& NODE_ENV=production pm2 start --name card-drop_stage dist/bot.js \ No newline at end of file diff --git a/src/database/dataSources/cardDataSource.ts b/src/database/dataSources/cardDataSource.ts index b6d64af..f32a7f2 100644 --- a/src/database/dataSources/cardDataSource.ts +++ b/src/database/dataSources/cardDataSource.ts @@ -6,7 +6,7 @@ dotenv.config(); const CardDataSource = new DataSource({ type: "sqlite", database: process.env.DB_CARD_FILE!, - synchronize: process.env.DB_SYNC == "true", + synchronize: true, logging: process.env.DB_LOGGING == "true", entities: [ "dist/database/entities/card/**/*.js", diff --git a/src/database/migrations/app/.gitkeep b/src/database/migrations/app/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/database/migrations/app/0.1/1693769942868-CreateBase.ts b/src/database/migrations/app/0.1/1693769942868-CreateBase.ts new file mode 100644 index 0000000..709cd3d --- /dev/null +++ b/src/database/migrations/app/0.1/1693769942868-CreateBase.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm" +import MigrationHelper from "../../../../helpers/MigrationHelper" + +export class CreateBase1693769942868 implements MigrationInterface { + + public async up(queryRunner: QueryRunner): Promise { + MigrationHelper.Up('1693769942868-CreateBase', '0.1', [ + "01-table/Inventory", + ], queryRunner); + } + + public async down(queryRunner: QueryRunner): Promise { + } + +}