Skip to content

stop tracking optimisation result view #107

stop tracking optimisation result view

stop tracking optimisation result view #107

Workflow file for this run

name: Main Branch CI - Test, Build, Push and Deploy
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Configure Git
run: |
git config --global user.email "github-actions@github.com"
git config --global user.name "GitHub Actions"
mkdir -p ~/.ssh
ssh-keyscan github.com >> ~/.ssh/known_hosts
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'recursive'
ssh-key: ${{ secrets.SUBMODULE_SSH_KEY }}
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Run tests with Maven
run: mvn clean test
build-and-push:
runs-on: ubuntu-latest
needs: test
steps:
- name: Configure Git
run: |
git config --global user.email "github-actions@github.com"
git config --global user.name "GitHub Actions"
mkdir -p ~/.ssh
ssh-keyscan github.com >> ~/.ssh/known_hosts
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'recursive'
ssh-key: ${{ secrets.SUBMODULE_SSH_KEY }}
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: Build Java Applications
run: mvn clean package -DskipTests
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push backtest-api image
uses: docker/build-push-action@v2
with:
context: ./algotrade4j-backtest-api
push: true
tags: joshwatley/algotrade4j-backtest-api:latest
- name: Build and push live-api image
uses: docker/build-push-action@v2
with:
context: ./algotrade4j-live-api
push: true
tags: joshwatley/algotrade4j-live-api:latest
- name: Build and push Frontend image
uses: docker/build-push-action@v2
with:
context: ./v2-frontend
push: true
tags: joshwatley/algotrade4j-frontend:latest
build-args: |
VITE_NODE_ENV=${{ vars.VITE_NODE_ENV }}
VITE_ENABLE_SIGNUP=${{ vars.VITE_ENABLE_SIGNUP }}
VITE_MAIN_API_HOST=${{ vars.VITE_MAIN_API_HOST }}
VITE_LIVE_API_HOST=${{ vars.VITE_LIVE_API_HOST }}
VITE_LOG_LEVEL=${{ vars.VITE_LOG_LEVEL }}
deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Copy infra configuration to remote.
uses: appleboy/scp-action@master
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
source: "infra-config/nginx.prod.conf, docker-compose.yml, infra-config/newrelic-infra.dockerfile"
target: "/opt/algotrade4j"
- name: Configure and reload infra
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
sudo mv /opt/algotrade4j/infra-config/nginx.prod.conf /etc/nginx/sites-available/algotrade4j
sudo ln -sf /etc/nginx/sites-available/algotrade4j /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
- name: Deploy with Docker Compose
uses: appleboy/ssh-action@v1.0.0
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
script: |
cd /opt/algotrade4j
export OANDA_API_URL=${{vars.OANDA_API_URL}}
export OANDA_API_KEY=${{secrets.OANDA_API_KEY}}
export JWT_SECRET=${{secrets.JWT_SECRET}}
export SPRING_DATASOURCE_URL=${{secrets.SPRING_DATASOURCE_URL}}
export SPRING_DATASOURCE_USERNAME=${{secrets.SPRING_DATASOURCE_USERNAME}}
export SPRING_DATASOURCE_PASSWORD=${{secrets.SPRING_DATASOURCE_PASSWORD}}
export ADDITIONAL_JAVA_OPTS=${{vars.ADDITIONAL_JAVA_OPTS}}
export TELEGRAM_BOT_TOKEN=${{secrets.TELEGRAM_BOT_TOKEN}}
export TELEGRAM_SYSTEM_CHAT_ID=${{secrets.TELEGRAM_SYSTEM_CHAT_ID}}
export VITE_NODE_ENV=${{vars.VITE_NODE_ENV}}
export VITE_ENABLE_DEBUG_LOGS=${{vars.VITE_ENABLE_DEBUG_LOGS}}
export VITE_ENABLE_SIGNUP=${{vars.VITE_ENABLE_SIGNUP}}
export VITE_MAIN_API_HOST=${{vars.VITE_MAIN_API_HOST}}
export VITE_LIVE_API_HOST=${{vars.VITE_LIVE_API_HOST}}
export NEW_RELIC_LICENSE_KEY=${{secrets.NEW_RELIC_LICENSE_KEY}}
export MARKETDATA_API_KEY=${{secrets.MARKETDATA_API_KEY}}
export DEFAULT_OANDA_ACCOUNT_ID=${{secrets.DEFAULT_OANDA_ACCOUNT_ID}}
export MT5_API_URL=${{secrets.MT5_API_URL}}
export MT5_API_KEY=${{secrets.MT5_API_KEY}}
export SECURITY_ENCRYPTION_KEY=${{secrets.SECURITY_ENCRYPTION_KEY}}
docker compose pull
docker compose down
docker compose up -d