Secrets and Variables
🔐 Что такое GitHub Secrets и Variables?
GitHub позволяет хранить секретные данные и переменные окружения, которые можно безопасно использовать в CI/CD пайплайнах. Это могут быть токены, пароли, ключи доступа и любые другие данные, которые не должны быть в коде.
🔧 Где задаются Secrets и Variables?
Перейдите в интерфейсе GitHub по пути:
Settings → Secrets and variables → ActionsТам есть два раздела:
- Secrets — шифруются и никогда не показываются в логах. Хорошо подходят для:
- API токенов
- Docker-паролей
- SSH-ключей
- Variables — видны в Actions, но скрыты из логов. Удобны для:
- URL-ов, путей, настроек окружения
- флагов конфигурации
✅ Как создать секреты
Создайте следующие примеры секретов:
DOCKER_USERDOCKER_PASS
✅ Как создать переменные
Создайте следующие примеры секретов:
NODE_ENV
🐳 Добавление Dockerfile
Для упаковки Node.js-приложения в контейнер создайте файл Dockerfile в корне проекта:
📄 Dockerfile
FROM node:20
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm ci
COPY . .
EXPOSE 4545
CMD ["node", "src/index.js"]💡 Как использовать в workflow
Пример использования:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Вход в Docker
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }}
- name: Использование переменной окружения
run: echo "Backend URL is ${{ vars.NODE_ENV }}"🧪 Советы
- Никогда не логгируй
secrets.*напрямую, даже черезecho - Можно использовать
env:для удобства:
env:
DB_URL: ${{ secrets.DOCKER_PASS }}❗ Частые ошибки
| Ошибка | Причина |
|---|---|
Process completed with exit code 1 | Забыт секрет или ошибка в имени переменной |
docker login failed | Неверные логин/пароль |
Пустой echo $VAR | Не передали env: или опечатка в имени |
📌 Как использовать локально
Для локального тестирования удобно использовать .env и пакет dotenv, но никогда не коммитьте .env в git!
Добавьте в .gitignore:
.envТеперь вы умеете работать с переменными окружения и секретами в GitHub Actions безопасно и эффективно.
🐳 Сборка и публикация Docker-образа
После того как вы задали DOCKER_USER и DOCKER_PASS в GitHub Secrets, вы можете собирать Docker-образ и публиковать его в Docker Hub прямо из GitHub Actions.
Добавьте в ваш workflow (.github/workflows/deploy.yml) следующие шаги:
- name: Логин в Docker Hub
run: echo "${{ secrets.DOCKER_PASS }}" | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin
- name: Сборка Docker-образа
run: docker build -t ${{ secrets.DOCKER_USER }}/my-node-app:${{ github.sha }} .
- name: Публикация Docker-образа
run: docker push ${{ secrets.DOCKER_USER }}/my-node-app:${{ github.sha }}📌 Используем ${{ github.sha }} для создания уникального тега образа при каждом пуше.
Убедитесь, что в корне проекта есть файл
Dockerfile. Пример:
FROM node:20
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 4545
CMD ["node", "src/index.js"]Теперь ваш workflow умеет собирать и публиковать образы автоматически!