Skip to content

updating

updating #4

Workflow file for this run

name: Deploy to Azure Storage and VM
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Azure CLI
run: |
sudo apt-get update
sudo apt-get install -y ca-certificates curl apt-transport-https lsb-release gnupg
curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null
AZ_REPO=$(lsb_release -cs)
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-get update
sudo apt-get install -y azure-cli
- name: Zip project
run: zip -r project_prod.zip .
- name: Upload to Azure Storage
run: |
az storage blob upload -f project_prod.zip -c esd -n project_prod.zip --account-name ${{ secrets.AZURE_STORAGE_ACCOUNT }} --account-key ${{ secrets.AZURE_STORAGE_KEY }} --overwrite
- name: Download from Azure Storage
run: |
az storage blob download -c esd -n project_prod.zip -f project_prod.zip --account-name ${{ secrets.AZURE_STORAGE_ACCOUNT }} --account-key ${{ secrets.AZURE_STORAGE_KEY }}
- name: Deploy to VM
run: |
echo "${{ secrets.VM_SSH_KEY }}" > vm_key.pem
chmod 400 vm_key.pem
# Create .ssh directory
mkdir -p ~/.ssh
# Add the VM to known hosts to avoid host key verification issues
ssh-keyscan -H ${{ secrets.VM_IP_ADDRESS }} >> ~/.ssh/known_hosts
# Copy the ZIP files to the VM
scp -i vm_key.pem project_prod.zip ${{ secrets.VM_USERNAME }}@${{ secrets.VM_IP_ADDRESS }}:/home/azureuser/esd/
# SSH into the VM, unzip files, delete ZIPs, and start the application
ssh -i vm_key.pem ${{ secrets.VM_USERNAME }}@${{ secrets.VM_IP_ADDRESS }} << 'EOF'
cd /home/azureuser/esd
touch .env
echo "${{ secrets.ENV_MAIN }}" > .env
unzip -o project_prod.zip
cd /home/azureuser/esd/server
touch .env
echo "${{ secrets.ENV_SERVER }}" > .env
cd /home/azureuser/esd
rm project_prod.zip
sudo systemctl stop web_app.service
sudo systemctl daemon-reload
sudo systemctl enable web_app.service
sudo systemctl start web_app.service
EOF
env:
AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }}