Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - about aiogram
Added 14 Jul 2024

about aiogram

@about_aiogram
Number of subscribers: 193
Photos: 2
Links: 27
Description:
✏️ Про розробку телеграм ботів з використанням aiogram та інших бібліотек і технологій 🔍 Навігатор (inline mode) - @aiotipbot 🙃 Канал ведуть @Shaonis + @wakaree #aiogram #bots #python
Source

about aiogram | ‍💻 CI/CD з Github Actions💭 Зараз зробимо CI/CD автоматизацію, яка при ...

Telegram community logo - about aiogram about aiogram @about_aiogram
613 Views/Reach 2024-11-04 07:05 Message №49
👩‍💻 CI/CD з Github Actions💭 Зараз зробимо CI/CD автоматизацію, яка при кожному оновленні коду в GitHub репозиторії буде переносити зміни на сервер🛠 Інструменти🔀 GitHub Actions - CI/CD платформа, що дозволяє автоматизувати твій build-test-deploy pipeline👩‍💻 Docker - відкрита платформа для розробки, доставки та запуску додатків (розбирали в пості)📁 Github Container Registry - зберігає image контейнерів в межах організації чи особистого акаунту, а також дозволяє пов'язати image із репозиторіємСама концепція CI/CD набагато ширша, але в рамках даного посту все спрощено: CI - це build контейнера, CD - його release і deploy• GitHub Actions - в ролі вебхуку на push подію для репозиторію, який буде виконувати наші інструкції • Docker - для побудови образу (але можна і без нього, наприклад запускати бота з systemd)• Github Container Registry - для збереження образів (для приватної видимості, в DockerHub на це сильніші обмеження)✏️ Пишемо конфігураціюЩоб скористатись GitHub Actions пишуть workflow файли, а вони налаштовані для запуску однієї чи декількох задач• YAML формат файлу• Мають знаходитись в .github/workflows/• Основна структура: події, змінні середовища та завдання• І workflows і actions можна публікувати та перевикористовуватиДавай розберемо готовий прикладname: Deploy to serveron: push: branches: [ "main" ]env: REGISTRY: ghcr.io IMAGE_NAME: <your-nick>/<image-name>:latestpermissions: contents: read packages: writejobs: publish: name: Publish image runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Login run: | echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build and Push run: | docker build . -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} deploy: needs: publish name: Deploy app runs-on: ubuntu-latest steps: - name: Setup ssh keys run: | install -m 600 -D /dev/null ~/.ssh/id_rsa echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts - name: Connect-pull-up run: | ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << EOF echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin cd ${{ secrets.WORK_DIR }} docker compose pull docker compose up -d EOF - name: Cleanup run: rm -rf ~/.ssh • Вказуємо події, при яких він буде працювати workflow (тут це push)📌 За замовчуванням події будуть застосовані до всіх гілок, тому краще вказати конкретну (наприклад main, тоді dev може бути як чорнетка)• Блок env, як не дивно, служить для вказання змінних середовища👩‍💻 Ім'я Docker образів мають бути в нижньому реєстрі. Також тут очікується, що в docker-compose.yaml ім'я образу: <registry>/<your-nick>/<image-name>• Блок permission встановлює права для GITHUB_TOKEN (також доступний через контекст github.token). Це спеціальний токен для автентифікації, що створюється для кожної job• Блок jobs містить завдання, сприймай їх як етапи. Також вони можуть мати залежності, наприклад тут deploy чекає поки завершиться publish (needs). За замовчуванням завдання виконуються паралельно!📌 Кожний job працює на окремій віртуальній машині. GitHub-hosted рішення пропонує один із трьох варіантів: Ubuntu, Mac, Windows• checkout - офіційний action, його можна розуміти як git pull, щоб задача мала доступ до твого коду (використовує GITHUB_TOKEN)🤫 Тепер про secrets. Їх можна додати в settings репозиторію, щоб використати як змінні середовища📌 Якщо не хочеш давати GitHub приватний SSH ключ, є ідея посилати серверу запит, щоб він сам завантажив і запустив оновлений Docker образ з регістру🐱 GitHub Actions | Billing📁 Publish Docker Images📝 Workflows syntax