Skip to Content
2️⃣ День 2Secrets and Variables

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_USER
  • DOCKER_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 умеет собирать и публиковать образы автоматически!


ℹ️ Полезные ссылки

Переменные Github Actions

Last updated on