name: CI on: push: branches: - 'main' - 'staging' - 'trying' pull_request: jobs: build_and_test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 with: submodules: 'recursive' - name: Get nim-waku HEAD id: nim-waku-head shell: bash run: cd nim-waku && echo "::set-output name=ref::$(git rev-parse HEAD)" - name: Cache nim-waku binary id: cache-nim-waku uses: actions/cache@v2 with: path: | ./nim-waku/build/wakunode2 ./nim-waku/vendor/rln/target/debug key: nim-waku-build-v3-${{ steps.nim-waku-head.outputs.ref }} - name: Install NodeJS uses: actions/setup-node@v2 with: node-version: '14' # This would have been done part of npm pretest but it gives better # visibility in the CI if done as a separate step - name: Build wakunode2 shell: bash run: (cd nim-waku && ./build/wakunode2 --help) || npm run nim-waku:build - name: Ensure wakunode2 is ready shell: bash run: cd nim-waku && ./build/wakunode2 --help - name: Install bufbuild uses: mu-io/setup-buf@v1beta with: buf-version: '0.39.1' - name: Install Protoc uses: arduino/setup-protoc@v1 with: version: '3.x' - name: Cache npm cache uses: actions/cache@v2 with: path: ~/.npm key: node-v1-${{ hashFiles('**/package-lock.json') }} - name: install using npm ci uses: bahmutov/npm-install@v1 - name: Generate protobuf code run: npm run proto - name: Check all protobuf code was committed shell: bash run: | [ $(git status --short --ignore-submodules|wc -l) -eq 0 ] - name: build run: npm run build - name: Check no proto files changed shell: bash run: | [ $(git status --short --ignore-submodules|wc -l) -eq 0 ] - name: test run: npm run test - name: Upload logs on failure uses: actions/upload-artifact@v2 if: failure() with: name: nim-waku-logs path: log/