stop tracking optimisation result view #107
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: 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 |