Развертывание приложения Django на виртуальной машине Azure с помощью Github Actions

Я создал приложение Django и докеризировал его с помощью Nginx, я также создал рабочий процесс на GitHub для создания образа докера и отправки его на ghcr.io.

Теперь я хочу развернуть образ docker (с ghcr.io) на виртуальной машине Azure (ubuntu). Но я не смог найти, как подключить виртуальную машину azure к рабочему процессу GitHub и выполнить некоторые команды из него.

name: CI and CD

on: [push]

env:
  DOMAIN_NAME: ${{ secrets.DOMAIN_NAME }}

jobs:
  build:
    name: Build Docker Images
    runs-on: ubuntu-latest
    steps:
      - name: Checkout master
        uses: actions/checkout@v1
      - name: Add environment variables to .env
        run: |
          echo DJANGO_SECRET_KEY=${{ secrets.DJANGO_SECRET_KEY }} >> .env
          echo DJANGO_ALLOWED_HOSTS=${{ secrets.DJANGO_ALLOWED_HOSTS }} >> .env
          echo DATABASE=postgres >> .env
          echo DB_NAME=${{ secrets.DB_NAME }} >> .env
          echo DB_USER=${{ secrets.DB_USER }} >> .env
          echo DB_PASS='${{ secrets.DB_PASS }}' >> .env
          echo DB_HOST=${{ secrets.DB_HOST }} >> .env
          echo DB_PORT=${{ secrets.DB_PORT }} >> .env
          echo VIRTUAL_HOST=$DOMAIN_NAME >> .env
          echo VIRTUAL_PORT=8000 >> .env
          echo LETSENCRYPT_HOST=$DOMAIN_NAME >> .env
          echo EMAIL_HOST_USER=${{ secrets.EMAIL_HOST_USER }} >> .env
          echo EMAIL_HOST_PASSWORD=${{ secrets.EMAIL_HOST_PASSWORD }} >> .env
          echo DEFAULT_EMAIL=${{ secrets.DEFAULT_EMAIL }} >> .env
          echo NGINX_PROXY_CONTAINER=nginx-proxy >> .env
      - name: Set environment variables
        run: |
          echo WEB_IMAGE=ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/web >> $GITHUB_ENV
          echo NGINX_IMAGE=ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/nginx >> $GITHUB_ENV
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ secrets.NAMESPACE }}
          password: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
      - name: Pull images
        run: |
          docker pull $WEB_IMAGE || true
          docker pull $NGINX_IMAGE || true
      - name: Build images
        run: docker-compose build
      - name: Push images
        run: |
          docker push $WEB_IMAGE
          docker push $NGINX_IMAGE

Вы можете настроить самораспространяемый бегун GitHub Action на Azure VM для запуска GitHub Actions на Azure VM для развертывания приложения Django

Сначала необходимо установить самораспространяемый бегун GitHub Action на Azure VM, подключившись по SSH к VM и выполнив следующие команды:

mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64-2.278.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.278.0/actions-runner-linux-x64-2.278.0.tar.gz #Extract the installer
tar xzf ./actions-runner-linux-x64-2.278.0.tar.gz

Теперь вам нужно настроить VM для связи с вашей учетной записью GitHub, используя следующую команду:

./config.sh --url https://github.com/{{Yourorganization}} --token <YOURTOKENFROMGITHUB>

Вам будет предложено пройти процесс регистрации вашего самостоятельного бегуна GitHub Action

Затем установите необходимые зависимости для вашего приложения Django на VM

Теперь вы можете запустить свой рабочий процесс GitHub Action Workflow

Реферат: Использование самораспространяющегося бегуна GitHub и виртуальных машин Azure для входа в систему с помощью назначенной системой управляемой идентификации | Cloud With Chris

Вернуться на верх