ci #56
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ci | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: ${{ matrix.kind }} ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
os: [macOS-latest, windows-2019, ubuntu-16.04] | |
kind: ['test', 'test_debug', 'bench', 'lint'] | |
exclude: | |
- os: windows-2019 | |
kind: 'bench' | |
- os: macOS-latest | |
kind: 'bench' | |
- os: windows-2019 | |
kind: 'lint' | |
- os: macOS-latest | |
kind: 'lint' | |
- os: windows-2019 | |
kind: 'test_debug' | |
- os: macOS-latest | |
kind: 'test_debug' | |
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: Create source tarballs (release, linux) | |
if: startsWith(matrix.os, 'ubuntu') && matrix.kind == 'test' && startsWith(github.ref, 'refs/tags/') && github.repository == 'denoland/deno' | |
run: | | |
mkdir -p target/release | |
tar --exclude=".git*" --exclude=target --exclude=deno_typescript/typescript/tests --exclude=third_party/cpplint --exclude=third_party/node_modules --exclude=third_party/python_packages --exclude=third_party/prebuilt -czvf target/release/deno_src.tar.gz -C .. deno | |
- name: Install rust | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: "1.39.0" | |
- name: Install clippy and rustfmt | |
if: matrix.kind == 'lint' | |
run: | | |
rustup component add clippy | |
rustup component add rustfmt | |
- name: Install python | |
uses: actions/setup-python@v1 | |
with: | |
python-version: "2.7.16" | |
architecture: x64 | |
- name: Remove unused versions of Python | |
if: startsWith(matrix.os, 'windows') | |
run: |- | |
$env:PATH -split ";" | | |
Where-Object { Test-Path "$_\python.exe" } | | |
Select-Object -Skip 1 | | |
ForEach-Object { Move-Item "$_" "$_.disabled" } | |
- 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 | |
echo ::set-env name=RUST_BACKTRACE::full | |
- name: Environment (linux) | |
if: startsWith(matrix.os, 'ubuntu') | |
# In order to test the installer scripts in std we need a deno | |
# executable in the path. See | |
# https://github.com/denoland/deno/blob/27cd2c97f18c0392bc04c66b786717b2bc677315/std/installer/mod.ts#L185-L193 | |
# TODO(ry) This path modification should rather be done in "cargo test". | |
run: | | |
echo ::add-path::`pwd`/third_party/prebuilt/linux64 | |
echo ::add-path::`pwd`/target/release | |
- name: Environment (mac) | |
if: startsWith(matrix.os, 'macOS') | |
run: | | |
echo ::add-path::`pwd`/third_party/prebuilt/mac | |
echo ::add-path::`pwd`/target/release | |
- name: Environment (windows) | |
if: startsWith(matrix.os, 'windows') | |
run: | | |
echo ::add-path::$(pwd)\third_party\prebuilt\win | |
echo ::add-path::$(pwd)\target\release | |
- 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: lint.py | |
if: matrix.kind == 'lint' | |
run: python ./tools/lint.py | |
- name: test_format.py | |
if: matrix.kind == 'lint' | |
run: python ./tools/test_format.py | |
- name: Clippy | |
if: matrix.kind == 'lint' | |
run: cargo clippy --all-targets --release --locked -- -D clippy::all | |
- name: Build | |
if: matrix.kind == 'test' || matrix.kind == 'bench' | |
run: cargo build --release --locked --all-targets | |
- name: Test | |
if: matrix.kind == 'test' | |
run: cargo test --release --locked --all-targets | |
- name: Test debug | |
if: matrix.kind == 'test_debug' | |
run: | | |
echo ::set-env name=DENO_BUILD_MODE::debug | |
cargo test --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' && github.repository == 'denoland/deno' | |
env: | |
DENOBOT_PAT: ${{ secrets.DENOBOT_PAT }} | |
run: | | |
git clone --depth 1 -b gh-pages https://${DENOBOT_PAT}@github.com/denoland/deno.git gh-pages | |
python ./tools/build_benchmark_jsons.py | |
cd gh-pages | |
git config user.email "[email protected]" | |
git config user.name "denobot" | |
git add . | |
git commit --message "Update benchmarks" | |
git push origin gh-pages | |
- name: Worker info | |
if: matrix.kind == 'bench' | |
run: | | |
cat /proc/cpuinfo | |
cat /proc/meminfo | |
- name: Pre-release (linux) | |
if: startsWith(matrix.os, 'ubuntu') && matrix.kind == 'test' | |
run: gzip -f -S _linux_x64.gz target/release/deno | |
- name: Pre-release (mac) | |
if: startsWith(matrix.os, 'macOS') && matrix.kind == 'test' | |
run: gzip -f -S _osx_x64.gz target/release/deno | |
- name: Pre-release (windows) | |
if: startsWith(matrix.os, 'windows') && matrix.kind == 'test' | |
run: Compress-Archive -CompressionLevel Optimal -Force -Path target/release/deno.exe -DestinationPath target/release/deno_win_x64.zip | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
if: matrix.kind == 'test' && startsWith(github.ref, 'refs/tags/') && github.repository == 'denoland/deno' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: | | |
target/release/deno_win_x64.zip | |
target/release/deno_linux_x64.gz | |
target/release/deno_osx_x64.gz | |
target/release/deno_src.tar.gz | |
draft: true | |
- name: Stop sccache | |
run: sccache --stop-server |