Merge branch 'develop' of github.com:thxprotocol/monorepo into develop #124
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
name: API CI | |
on: | |
push: | |
jobs: | |
buildAndTest: | |
if: "(github.ref != 'refs/heads/main' && !contains(github.event.head_commit.message, 'CI:'))" | |
name: 'Build & Test' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: ['18'] # 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@v4 | |
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: Override sharp lib | |
run: yarn add sharp --ignore-engines | |
- name: Start Hardhat RPC | |
run: | | |
yarn hardhat > /dev/null & | |
yarn hardhat-deploy | |
- 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 "0xd916a690676e925Ac9Faf2d01869c13Fd9757ef2" | |
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 \ | |
yarn 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' | |
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@v4 | |
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@v4 | |
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' | |
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@v4 | |
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_WEBHOOK_DEV }} | |
uses: Ilshidur/action-discord@master | |
with: | |
args: "${{ needs.autodeploy.result == 'success' && '✅' || '⛔' }} Released API `${{ needs.bumpVersion.outputs.newTag }}`" |