1+ name : CI Test on AWS EC2
2+
3+ on :
4+ push :
5+ branches : [main]
6+ pull_request :
7+ branches : [main]
8+
9+ jobs :
10+ deploy-test :
11+ runs-on : ubuntu-latest
12+
13+ steps :
14+ - name : Checkout including submodules
15+ uses : actions/checkout@v3
16+ with :
17+ submodules : recursive
18+ fetch-depth : 0
19+
20+ - name : Set up SSH Key from base64
21+ run : |
22+ printf "%s" "${{ secrets.AWS_EC2_KEY_B64 }}" | base64 -d > key.pem
23+ chmod 600 key.pem
24+
25+ - name : load python
26+ uses : actions/setup-python@v4
27+ with :
28+ python-version : ' 3.12'
29+
30+ - name : Upload .env to EC2
31+ run : |
32+ echo "BINANCE_KEY=${{ secrets.BINANCE_KEY }}" > .env
33+ echo "BINANCE_SECRET=${{ secrets.BINANCE_SECRET }}" >> .env
34+ echo "TELEGRAM_TOKEN=${{ secrets.TELEGRAM_TOKEN }}" >> .env
35+ echo "TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }}" >> .env
36+
37+ scp -i key.pem -o StrictHostKeyChecking=no .env \
38+ ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/Trading-Automation/.env
39+
40+ ssh -i key.pem -o StrictHostKeyChecking=no ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} \
41+ "echo '.env' >> ~/Trading-Automation/.gitignore || true"
42+
43+ - name : Deploy EC2 Environment
44+ run : |
45+ ssh -i key.pem -o StrictHostKeyChecking=no ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
46+ if [ ! -f ~/.auriga_env_configured ]; then
47+ echo "alias python=/usr/bin/python3.12" >> ~/.profile
48+ echo "alias pip=/home/ubuntu/.local/bin/pip" >> ~/.profile
49+ source .profile
50+ sudo apt update && sudo apt upgrade
51+ sudo apt install locate
52+ sudo updatedb
53+ wget -O get-pip.py https://bootstrap.pypa.io/get-pip.py
54+ sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.old &>/dev/null
55+ python3 get-pip.py
56+ touch ~/.auriga_env_configured
57+ echo "✔️ Environment configured."
58+ else
59+ echo "ℹ️ Environment already configured. Skipping alias setup."
60+ fi
61+ EOF
62+ scp -o StrictHostKeyChecking=no -i key.pem -r "Trading-Automation" \
63+ ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/
64+ ssh -o StrictHostKeyChecking=no -i key.pem ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
65+ sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.old &>/dev/null
66+ cd Trading-Automation
67+ python3 -m pip install -r requirements.txt || true
68+ EOF
69+ - name : Deploy Trading Service
70+ run : |
71+ scp -o StrictHostKeyChecking=no -i key.pem trading.service ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/
72+ scp -o StrictHostKeyChecking=no -i key.pem symbols_update.service ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/
73+ ssh -o StrictHostKeyChecking=no -i key.pem ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
74+ pkill python*
75+ sudo mv ~/trading.service /etc/systemd/system/
76+ sudo mv ~/symbols_update.service /etc/systemd/system/
77+ sudo systemctl daemon-reload
78+ sudo systemctl enable symbols_update.service trading.service
79+ EOF
80+ - name : Restart Trading Service
81+ run : |
82+ ssh -o StrictHostKeyChecking=no -i key.pem ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
83+ sudo systemctl daemon-reload
84+ sudo systemctl restart symbols_update.service
85+ sudo systemctl restart trading.service
86+ sudo systemctl status trading.service --no-pager
87+ EOF
88+
0 commit comments