diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..646af46 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,55 @@ +name: Node.js CI for Gitea + +on: + push: + branches: [ "main" ] + +jobs: + # 1. Этап проверки стиля кода (Линтер) + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install dependencies + run: npm ci + + - name: Run ESLint + run: npm run lint + + # 2. Этап запуска тестов (зависит от lint) + test: + runs-on: ubuntu-latest + needs: lint + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install dependencies + run: npm ci + + - name: Run Tests + run: npm run test + + # 3. Этап сборки Docker-образа (зависит от test) + build: + runs-on: ubuntu-latest + needs: test + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Прямая и надежная сборка через стандартную команду docker build + - name: Build Docker Image + run: docker build -t docker_lab:latest . diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9e57c55 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM node:18-alpine +WORKDIR /app +COPY package*.json ./ +RUN npm ci --only=production +COPY . . +CMD ["node", "index.js"]