-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ca49969
commit 0324073
Showing
2,377 changed files
with
2,908 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,7 @@ | ||
node_modules | ||
.github | ||
cache | ||
dist | ||
docker-compose* | ||
.env* | ||
Dockerfile |
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,236 @@ | ||
name: API CI | ||
|
||
on: | ||
push: | ||
|
||
jobs: | ||
buildAndTest: | ||
name: CI Pipeline | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
node-version: [20.x] # Add other versions if needed | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v1 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
aws-region: us-east-1 | ||
|
||
- name: Install Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
|
||
- name: Restore Node.js dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: ./node_modules | ||
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} | ||
restore-keys: | | ||
${{ runner.os }}-node- | ||
- name: Install Node.js dependencies | ||
run: yarn install --frozen-lockfile | ||
|
||
- name: Cache Node.js dependencies | ||
uses: actions/cache/save@v3 | ||
if: always() | ||
with: | ||
path: ./node_modules | ||
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} | ||
|
||
- name: Start Hardhat RPC | ||
working-directory: ./libs/contracts | ||
run: npx hardhat node --hostname 0.0.0.0 > /dev/null & | ||
|
||
- name: Start Safe Transaction Service | ||
run: | | ||
docker compose --env-file=.env.example -f docker-compose.safe.yml up -d --remove-orphans | ||
docker compose exec txs-web python manage.py insert_safe_master_copy --address "0xC44951780f195Ed71145e3d0d2F25726A097C348" | ||
sudo chmod -R a+rwx ./docker/data | ||
- name: Run Tests | ||
env: | ||
NODE_OPTIONS: --max-old-space-size=8192 | ||
run: | | ||
docker compose -f docker-compose.yml -f docker-compose.api.yml run \ | ||
-e AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} \ | ||
-e AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} \ | ||
-e NODE_OPTIONS='--max-old-space-size=8192' \ | ||
-T api \ | ||
npx nx run api:test --verbose | ||
- name: SonarCloud Scan | ||
uses: SonarSource/sonarcloud-github-action@master | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
with: | ||
projectBaseDir: apps/api | ||
|
||
bumpVersion: | ||
name: 'Bump Version on develop' | ||
runs-on: ubuntu-latest | ||
if: github.ref == 'refs/heads/develop' | ||
needs: buildAndTest | ||
outputs: | ||
newTag: ${{ steps.version-bump.outputs.newTag }} | ||
|
||
steps: | ||
- name: 'Checkout source code' | ||
uses: 'actions/checkout@v2' | ||
with: | ||
ref: ${{ github.ref }} | ||
|
||
- name: 'Automated Version Bump' | ||
id: version-bump | ||
uses: 'phips28/gh-action-bump-version@master' | ||
with: | ||
tag-prefix: 'v' | ||
tag-suffix: '-api' | ||
commit-message: 'CI: bumps version to {{version}}' | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PACKAGEJSON_DIR: 'apps/api' | ||
|
||
buildAndPushImage: | ||
name: Build and Push docker image | ||
runs-on: ubuntu-latest | ||
if: github.ref == 'refs/heads/develop' | ||
needs: bumpVersion | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
|
||
- name: Install Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v1 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
aws-region: eu-west-3 | ||
|
||
- name: Login to ECR | ||
uses: docker/login-action@v1 | ||
with: | ||
registry: 275440070213.dkr.ecr.eu-west-3.amazonaws.com | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v3 | ||
with: | ||
images: | | ||
275440070213.dkr.ecr.eu-west-3.amazonaws.com/api | ||
tags: | | ||
type=ref,event=branch | ||
type=sha | ||
type=semver,pattern={{version}},value=${{needs.bumpVersion.outputs.newTag}} | ||
type=semver,pattern={{major}}.{{minor}},value=${{needs.bumpVersion.outputs.newTag}} | ||
type=semver,pattern={{raw}},value=${{needs.bumpVersion.outputs.newTag}} | ||
- name: Set correct version | ||
run: npm version ${{needs.bumpVersion.outputs.newTag}} --allow-same-version=true --git-tag-version=false | ||
working-directory: ./apps/api | ||
|
||
- name: Build | ||
uses: docker/build-push-action@v2 | ||
with: | ||
context: . | ||
file: apps/api/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
buildAndPushHotfixImage: | ||
name: Build and Push hotfix docker image | ||
runs-on: ubuntu-latest | ||
if: startsWith(github.ref,'refs/heads/hotfix/') | ||
needs: buildAndTest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
|
||
- name: Install Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v1 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
aws-region: eu-west-3 | ||
|
||
- name: Login to ECR | ||
uses: docker/login-action@v1 | ||
with: | ||
registry: 275440070213.dkr.ecr.eu-west-3.amazonaws.com | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v3 | ||
with: | ||
images: | | ||
275440070213.dkr.ecr.eu-west-3.amazonaws.com/api | ||
tags: | | ||
type=ref,event=branch | ||
type=sha | ||
- name: Build | ||
uses: docker/build-push-action@v2 | ||
with: | ||
context: . | ||
file: apps/api/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
autodeploy: | ||
name: Auto deploy develop to dev.api.thx.network | ||
runs-on: ubuntu-latest | ||
if: github.ref == 'refs/heads/develop' | ||
needs: [buildAndPushImage, bumpVersion] | ||
steps: | ||
- name: Install Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
|
||
- name: Install deploy-scripts | ||
run: npm install -g thxprotocol/deploy-scripts | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v1 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
aws-region: eu-west-3 | ||
|
||
- name: Deploy-script | ||
run: thx-deploy ApiDev sha-$(echo ${{github.sha}} | cut -c1-7) | ||
|
||
discord: | ||
name: Update Discord | ||
runs-on: ubuntu-latest | ||
if: github.ref == 'refs/heads/develop' | ||
needs: [autodeploy, bumpVersion] | ||
steps: | ||
- name: Send message | ||
env: | ||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_AWS_WEBHOOK }} | ||
uses: Ilshidur/action-discord@master | ||
with: | ||
args: "${{ needs.autodeploy.result == 'success' && '✅' || '⛔' }} Released APIDev `${{ needs.bumpVersion.outputs.newTag }}`" |
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,32 @@ | ||
version: '3.8' | ||
|
||
# This compose file only works when used in conjunction with the default docker-compose file. | ||
# docker compose -f docker-compose.yml -f docker-compose.api.yml | ||
|
||
services: | ||
api: | ||
build: | ||
context: . | ||
dockerfile: apps/api/Dockerfile | ||
target: develop | ||
volumes: | ||
- ./coverage/apps/api:/usr/src/app/coverage/apps/api | ||
extra_hosts: | ||
- "host.docker.internal:host-gateway" | ||
env_file: | ||
- ./apps/api/.env.example | ||
environment: | ||
MONGODB_URI: "mongodb://root:root@mongo:27017/api?authSource=admin&ssl=false" | ||
MONGODB_URI_TEST_OVERRIDE: "mongodb://root:root@mongo:27017/api_test?authSource=admin&ssl=false" | ||
AWS_S3_PUBLIC_BUCKET_NAME: "test-thx-storage-bucket" | ||
AWS_S3_PRIVATE_BUCKET_NAME: "test-thx-private-storage-bucket" | ||
HARDHAT_RPC: "http://host.docker.internal:8545" | ||
HARDHAT_RPC_TEST_OVERRIDE: "http://host.docker.internal:8545" | ||
SAFE_TXS_SERVICE: "http://host.docker.internal:8000/txs" | ||
LOCAL_CERT: "" | ||
LOCAL_CERT_KEY: "" | ||
CWD: "/usr/src/app/apps/api/src/" | ||
ports: | ||
- 3001:3000 | ||
depends_on: | ||
- mongo |
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,21 @@ | ||
version: '3.8' | ||
|
||
# This compose file only works when used in conjunction with the default docker-compose file. | ||
# docker compose -f docker-compose.yml -r docker-compose.auth.yml | ||
|
||
services: | ||
auth: | ||
container_name: thx_auth | ||
build: | ||
context: . | ||
dockerfile: apps/auth/Dockerfile | ||
target: develop | ||
volumes: | ||
- ./coverage/apps/auth:/usr/src/app/coverage/apps/auth | ||
env_file: | ||
- apps/auth/.env.example | ||
- apps/auth/.env.ci | ||
ports: | ||
- 3031:3030 | ||
depends_on: | ||
- mongo |
Oops, something went wrong.