summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
blob: 1bcf8ff2103ee9a8089ac7e7eeab88d2a9008f22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
name: build

on: [push, pull_request]

jobs:
  build:
    name: ${{ matrix.kind }} ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macOS-10.14, windows-2016, ubuntu-16.04]
        kind: ['test', 'bench']
        exclude:
          - os: windows-2016
            kind: 'bench'
          - os: macOS-10.14
            kind: 'bench'
    steps:
      - name: Configure git
        run: git config --global core.symlinks true

      - name: Clone repository
        uses: actions/checkout@v1
        with:
          fetch-depth: 1
          submodules: true

      - name: Install rust
        uses: hecrj/setup-rust-action@v1
        with:
          rust-version: "1.37.0"

      - name: Install python
        uses: actions/setup-python@v1
        with:
          python-version: "2.7.16"
          architecture: x64

      - name: Environment (common)
        run: |
          echo ::set-env name=GH_ACTIONS::1
          echo ::set-env name=RUSTC_WRAPPER::sccache
          echo ::set-env name=DENO_BUILD_MODE::release

      - name: Environment (linux)
        if: startsWith(matrix.os, 'ubuntu')
        run: |
          echo ::add-path::`pwd`/prebuilt/linux64

      - name: Environment (mac)
        if: startsWith(matrix.os, 'macOS')
        run: |
          echo ::add-path::`pwd`/prebuilt/mac

      - name: Environment (windows)
        if: startsWith(matrix.os, 'windows')
        run: |
          echo ::add-path::%cd%\prebuilt\win

      - name: Log versions
        run: |
          node -v
          python --version
          rustc --version
          cargo --version

      - name: Run setup.py
        run: python ./tools/setup.py

      - name: Start sccache
        env:
          AWS_ACCESS_KEY_ID: AKIAIVRN52PLDBP55LBQ
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          SCCACHE_BUCKET: deno-sccache
          SCCACHE_IDLE_TIMEOUT: 0
        run: sccache --start-server

      - name: Build
        run: cargo build --release --locked --all-targets

      - name: Test
        if: matrix.kind == 'test'
        run: cargo test --release --locked --all-targets

      - name: Run Benchmarks
        if: matrix.kind == 'bench'
        run: python ./tools/benchmark.py target/release

      - name: Post Benchmarks
        if: matrix.kind == 'bench' && github.ref == 'refs/heads/master'
        env:
          DENOBOT_PAT: ${{ secrets.DENOBOT_PAT }}
        run: |
          # Note gh-pages branch is cloned into //gh-pages/ by
          # tools/benchmark.py, hence the following copy is ok:
          cp -r website/* gh-pages/
          cd gh-pages
          git remote add origin2 https://${DENOBOT_PAT}@github.com/denoland/deno.git
          git config user.email "propelml@gmail.com"
          git config user.name "denobot"
          git add .
          git commit --message "Update benchmarks"
          git push origin2 gh-pages

      - name: Worker info
        if: matrix.kind == 'bench'
        run: |
          cat /proc/cpuinfo
          cat /proc/meminfo

      - name: Stop sccache
        run: sccache --stop-server