name: Continuous Integration on: push: paths-ignore: - "**.md" pull_request: paths-ignore: - "**.md" schedule: - cron: 0 11 * * 1-5 jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@master - name: Setup node uses: actions/setup-node@v2-beta with: node-version: 14 - name: Store node version variable id: node run: | echo "::set-output name=version::$(node -v)" - name: Cache node_modules uses: actions/cache@v2 id: node_modules with: path: node_modules key: ${{ runner.os }}-node_modules-${{ hashFiles('package.json') }}-${{ steps.node.outputs.version }} - name: Install dependencies run: npx panva/npm-install-retry if: ${{ steps.node_modules.outputs.cache-hit != 'true' }} - name: Cache dist uses: actions/cache@v2 id: dist with: path: dist key: dist-${{ hashFiles('src/**/*.ts') }}-${{ hashFiles('tsconfig/*.json') }} - run: sed -i -e "s/-i ''/-i/g" package.json - name: Build run: npm run build-all if: ${{ steps.dist.outputs.cache-hit != 'true' }} - run: git reset HEAD --hard test: env: NODE_OPTIONS: --enable-source-maps needs: - build strategy: matrix: node-version: - 12.19.0 - 12 - 14.15.0 - 14 - 15.0.1 - 15 runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@master - name: Setup node uses: actions/setup-node@v2-beta with: node-version: ${{ matrix.node-version }} - name: Store node version variable id: node run: | echo "::set-output name=version::$(node -v)" - name: Cache node_modules uses: actions/cache@v2 id: node_modules with: path: node_modules key: ${{ runner.os }}-node_modules-${{ hashFiles('package.json') }}-${{ steps.node.outputs.version }} - name: Install dependencies run: npx panva/npm-install-retry if: ${{ steps.node_modules.outputs.cache-hit != 'true' }} - name: Load cached dist uses: actions/cache@v2 id: dist with: path: dist key: dist-${{ hashFiles('src/**/*.ts') }}-${{ hashFiles('tsconfig/*.json') }} - run: npm install working-directory: ./test - name: Test Node.js crypto run: npm run test - name: Test Web Cryptography API run: npm run test-webcrypto if: ${{ !startsWith(matrix.node-version, '14') && !startsWith(matrix.node-version, '12') }} - run: git reset HEAD --hard browserstack: env: BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} needs: - build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@master - name: Setup node uses: actions/setup-node@v2-beta with: node-version: 14 - name: Store node version variable id: node run: | echo "::set-output name=version::$(node -v)" - name: Cache node_modules uses: actions/cache@v2 id: node_modules with: path: node_modules key: ${{ runner.os }}-node_modules-${{ hashFiles('package.json') }}-${{ steps.node.outputs.version }} - name: Install dependencies run: npx panva/npm-install-retry if: ${{ steps.node_modules.outputs.cache-hit != 'true' }} - name: Load cached dist uses: actions/cache@v2 id: dist with: path: dist key: dist-${{ hashFiles('src/**/*.ts') }}-${{ hashFiles('tsconfig/*.json') }} - name: Turnstyle uses: softprops/turnstyle@v1 with: same-branch-only: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: npm run test-browser env: CI: true - run: git reset HEAD --hard