nukeop/nuclear

View on GitHub
.github/workflows/CI.yml

Summary

Maintainability
Test Coverage
name: CI job

on:
  push:
    branches-ignore:
      - crowdin
    paths-ignore:
      - "**/*.md"
  pull_request:
    branches-ignore:
      - crowdin
    paths-ignore:
      - "**/*.md"

env:
  PYTHON_VERSION: "3.11"

jobs:
  tests:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: ["ubuntu-latest", "macos-latest", "windows-latest"]
    timeout-minutes: 30

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Set up Python ${{ env.PYTHON_VERSION }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.PYTHON_VERSION }}
      - name: Cache npm packages
        uses: actions/cache@v3
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Use Node.js 20
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: "npm"
      - name: Cache Node modules
        uses: actions/cache@v3
        with:
          path: node_modules
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
      - name: add git binaries to PATH
        if: runner.os == 'Windows'
        run: |
          echo "C:\Program Files\Git\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
          echo "C:\Program Files\Git\mingw64\libexec\git-core" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
      - name: install setup tools
        if: runner.os == 'macOS'
        run: |
          sudo -H pip install setuptools
      - run: npm ci
      - run: npm run lint
      - run: npm test

  build:
    runs-on: ${{ matrix.platform.os }}
    needs: tests
    strategy:
      matrix:
        platform:
          [
            { os: "ubuntu-latest", cmd: "build:linux" },
            { os: "macos-11", cmd: "build:macos" },
            { os: "windows-latest", cmd: "build:windows" },
          ]
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Set up Python ${{ env.PYTHON_VERSION }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.PYTHON_VERSION }}
      - name: get-npm-version
        id: package-version
        uses: pchynoweth/action-get-npm-version@1.1.1
      - name: Cache npm packages
        uses: actions/cache@v3
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Use Node.js 20
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: "npm"
      - name: Cache Node modules
        uses: actions/cache@v3
        with:
          path: node_modules
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
      - name: add git binaries to PATH
        if: runner.os == 'Windows'
        run: |
          echo "C:\Program Files\Git\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
          echo "C:\Program Files\Git\mingw64\libexec\git-core" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
      - name: install setup tools
        if: runner.os == 'macOS'
        run: |
          sudo -H pip install setuptools
      - run: npm ci
      - run: npm run ${{ matrix.platform.cmd }}
        shell: bash
        env:
          VERSION: ${{ steps.package-version.outputs.version}}