Бесплатный хостинг приложений с Github Actions 🤯🚀

Бесплатный хостинг приложений с Github Actions 🤯🚀

Когда я впервые узнал, что могу бесплатно размещать свои приложения на GitHub, мое сознание было совершенно потрясено 🤯.

Давайте узнаем, как запланированные рабочие процессы могут свести ваш счет за облачный хостинг к $0

смешная гифка

Настройка

Я не хочу тратить ваше время — это работает только в том случае, если ваше приложение не должно работать круглосуточно, а скорее по фиксированному расписанию. Если ваше приложение основано на данных, которые вам нужно собирать ежедневно, или если вы хотите автоматически отправлять своей девушке сообщение с добрым утром, это отлично сработает! Не то чтобы я рекомендовал автоматизировать ваши отношения 🫠.

Для этого примера мы автоматизируем мой старый инструмент, который собирает данные с новостного сайта. В репозитории вы найдете очень простой скрипт на NodeJS (v18), имеющий несколько зависимостей и один шаг сборки. Если вы хотите запустить его, выполните npm install, npm run build и, наконец, npm run start. После этого скрипт соберет данные, обобщит их, отправит мне сообщение в Telegram и, наконец, остановится. Поскольку этот скрипт будет обобщать новости для меня, я хочу, чтобы он запускался каждое утро. С учетом этих требований мы можем построить наш рабочий процесс GitHub Action:


name: Daily Report

on:
  schedule:
    - cron: "0 6 * * *" # Use a tool like www.cronmaker.com
  workflow_dispatch: # Enable manual trigger

jobs:
  build-and-start:
    runs-on: ubuntu-latest # Base Image
    steps:
      - uses: actions/checkout@v3 # Get code from repo
      - uses: actions/setup-node@v3 # Install Node.JS
        with:
          node-version: 18.x # Use any major version 18
      - run: npm install # Install dependencies
      - run: npm run build # Compile Code

      - run: npm run start # Start Code
        env: # Runtime secrets are defined in Repository Settings
          GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
          GOOGLE_PROJECT_ID: ${{ secrets.GOOGLE_PROJECT_ID }}
          TELEGRAM_API_KEY: ${{ secrets.TELEGRAM_API_KEY }}
          TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

Если вы все сделали правильно, то теперь GitHub будет выполнять этот рабочий процесс каждый день. Вы увидите результаты и журналы в своем репозитории здесь

GitHub Actions Result

Заключение

Это было просто потрясающе, правда? Конечно, вы можете сделать это для своих собственных программ и даже использовать совершенно другие языки или настройки. Если вам нужна помощь в настройке, пожалуйста, сообщите мне об этом в комментариях! Всегда рад помочь :)

PS: Хотите недорого разместить свои долго работающие Docker-приложения? Обратите внимание на Sliplane!