A social knowledge tool for researchers built on ATProto
at main 142 lines 3.4 kB view raw
1name: Tests 2 3on: 4 push: 5 branches: [main, development] 6 pull_request: 7 branches: [main, development] 8 9jobs: 10 dependencies: 11 name: Install Dependencies 12 runs-on: ubuntu-latest 13 outputs: 14 cache-hit: ${{ steps.cache-deps.outputs.cache-hit }} 15 steps: 16 - name: Checkout code 17 uses: actions/checkout@v4 18 19 - name: Setup Node.js 20 uses: actions/setup-node@v4 21 with: 22 node-version: '20' 23 24 - name: Cache dependencies 25 id: cache-deps 26 uses: actions/cache@v4 27 with: 28 path: | 29 node_modules 30 src/webapp/node_modules 31 src/types/node_modules 32 key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }} 33 restore-keys: | 34 ${{ runner.os }}-deps- 35 36 - name: Install dependencies 37 if: steps.cache-deps.outputs.cache-hit != 'true' 38 run: npm ci 39 40 build: 41 name: Build 42 runs-on: ubuntu-latest 43 needs: dependencies 44 steps: 45 - name: Checkout code 46 uses: actions/checkout@v4 47 48 - name: Setup Node.js 49 uses: actions/setup-node@v4 50 with: 51 node-version: '20' 52 53 - name: Restore dependencies 54 uses: actions/cache@v4 55 with: 56 path: | 57 node_modules 58 src/webapp/node_modules 59 src/types/node_modules 60 key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }} 61 62 - name: Install dependencies (if cache miss) 63 run: | 64 if [ ! -d "node_modules" ]; then 65 npm ci 66 fi 67 68 - name: Build project 69 run: | 70 npm run build:types 71 npm run build 72 73 unit-tests: 74 name: Unit Tests 75 runs-on: ubuntu-latest 76 needs: dependencies 77 steps: 78 - name: Checkout code 79 uses: actions/checkout@v4 80 81 - name: Setup Node.js 82 uses: actions/setup-node@v4 83 with: 84 node-version: '20' 85 86 - name: Restore dependencies 87 uses: actions/cache@v4 88 with: 89 path: | 90 node_modules 91 src/webapp/node_modules 92 src/types/node_modules 93 key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }} 94 95 - name: Install dependencies (if cache miss) 96 run: | 97 if [ ! -d "node_modules" ]; then 98 npm ci 99 fi 100 101 - name: Run unit tests 102 run: npm run test:unit -- --maxWorkers=2 103 104 integration-tests: 105 name: Integration Tests 106 runs-on: ubuntu-latest 107 needs: dependencies 108 109 services: 110 docker: 111 image: docker:24-dind 112 options: --privileged 113 114 steps: 115 - name: Checkout code 116 uses: actions/checkout@v4 117 118 - name: Setup Node.js 119 uses: actions/setup-node@v4 120 with: 121 node-version: '20' 122 123 - name: Restore dependencies 124 uses: actions/cache@v4 125 with: 126 path: | 127 node_modules 128 src/webapp/node_modules 129 src/types/node_modules 130 key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }} 131 132 - name: Install dependencies (if cache miss) 133 run: | 134 if [ ! -d "node_modules" ]; then 135 npm ci 136 fi 137 138 - name: Run database integration tests 139 run: npm run test:integration:db -- --maxWorkers=2 140 env: 141 # Testcontainers needs Docker 142 TESTCONTAINERS_RYUK_DISABLED: true