updating #4
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: 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 }} |