move Linux & Mac tests to Buildkite

This commit is contained in:
Damien Elmes 2020-12-07 21:26:52 +10:00
parent 9d9452ee2e
commit 0afdbdf7e0
5 changed files with 148 additions and 109 deletions

17
.buildkite/linux/entrypoint Executable file
View file

@ -0,0 +1,17 @@
#!/bin/bash
set -e
set -x
BAZEL="bazel --output_user_root=/state/bazel --output_base=/state/bazel/anki"
BUILDARGS="--config=ci --experimental_convenience_symlinks=ignore"
# move existing node_modules into tree
test -e /state/node_modules && mv /state/node_modules ts/
$BAZEL build $BUILDARGS ...
$BAZEL test $BUILDARGS ...
# if tests succeed, back up node_modules folder
mv ts/node_modules /state/

16
.buildkite/mac/entrypoint Executable file
View file

@ -0,0 +1,16 @@
#!/bin/bash
set -e
set -x
BAZEL="bazel --output_user_root=~/bazel --output_base=~/bazel/anki"
BUILDARGS="--config=ci --experimental_convenience_symlinks=ignore"
# move existing node_modules into tree
test -e ~/node_modules && mv ~/node_modules ts/
$BAZEL build $BUILDARGS ...
$BAZEL test $BUILDARGS ...
# if tests succeed, back up node_modules folder
mv ts/node_modules ~/

View file

@ -0,0 +1,41 @@
set BAZEL=\bazel\bazel.exe --output_user_root=\bazel\anki --output_base=\bazel\anki\base
set BUILDARGS=--config=ci
if exist \bazel\node_modules (
move \bazel\node_modules ts\node_modules
)
echo Building...
:: rollup may fail on the first build, so we build once without checking return code
call %BAZEL% build %BUILDARGS% ... -k
:: now build/test
echo Running tests...
call %BAZEL% test %BUILDARGS% ...
IF %ERRORLEVEL% NEQ 0 exit /B 1
:: build the wheels
@REM call %BAZEL% build %BUILDARGS% pylib/anki:wheel qt/aqt:wheel
@REM IF %ERRORLEVEL% NEQ 0 exit /B 1
@REM :: install them into a new venv
@REM echo Creating venv...
@REM \python\python.exe -m venv venv
@REM IF %ERRORLEVEL% NEQ 0 exit /B 1
@REM call venv\scripts\activate
@REM :: expand wildcards
@REM for %%i in (bazel-bin/pylib/anki/*.whl) do set "pylib=%%~i"
@REM for %%i in (bazel-bin/qt/aqt/*.whl) do set "qt=%%~i"
@REM echo Installing wheels...
@REM venv\scripts\pip install bazel-bin/pylib/anki/%pylib% bazel-bin/qt/aqt/%qt%
@REM IF %ERRORLEVEL% NEQ 0 exit /B 1
@REM echo Importing...
@REM python -c "import aqt"
@REM IF %ERRORLEVEL% NEQ 0 exit /B 1
@REM echo Import succesful.
move ts\node_modules \bazel\node_modules
echo All tests pass.

View file

@ -1,6 +1,6 @@
name: Checks name: GH
on: [push, pull_request] on: [pull_request]
jobs: jobs:
################################ ################################
@ -21,87 +21,87 @@ jobs:
# Tests # Tests
################################ ################################
tests: # tests:
name: ${{ matrix.name }} ${{ matrix.python }} # name: ${{ matrix.name }} ${{ matrix.python }}
runs-on: ${{ matrix.os }} # runs-on: ${{ matrix.os }}
strategy: # strategy:
matrix: # matrix:
os: [macos-latest, ubuntu-20.04] # os: [macos-latest, ubuntu-20.04]
python: [3.8] # python: [3.8]
include: # include:
- os: macos-latest # - os: macos-latest
name: Mac # name: Mac
SEP: / # SEP: /
BAZEL_REPO: "~/.cache/bazelrepo" # BAZEL_REPO: "~/.cache/bazelrepo"
BAZEL_DISK: "~/.cache/bazeldisk" # BAZEL_DISK: "~/.cache/bazeldisk"
- os: ubuntu-20.04 # - os: ubuntu-20.04
name: Linux # name: Linux
SEP: / # SEP: /
BAZEL_REPO: "~/.cache/bazelrepo" # BAZEL_REPO: "~/.cache/bazelrepo"
BAZEL_DISK: "~/.cache/bazeldisk" # BAZEL_DISK: "~/.cache/bazeldisk"
fail-fast: false # fail-fast: false
steps: # steps:
- uses: actions/checkout@v2 # - uses: actions/checkout@v2
- name: Set up python # - name: Set up python
uses: actions/setup-python@v2 # uses: actions/setup-python@v2
with: # with:
python-version: ${{ matrix.python }} # python-version: ${{ matrix.python }}
- name: Cache disk # - name: Cache disk
uses: actions/cache@v2 # uses: actions/cache@v2
with: # with:
path: ${{ matrix.BAZEL_DISK }} # path: ${{ matrix.BAZEL_DISK }}
key: ${{ runner.os }}-disk-2-${{ hashFiles('ts/yarn.lock') }}-${{ hashFiles('pip/requirements.txt') }}-${{ hashFiles('Cargo.lock') }}-${{ hashFiles('**/BUILD.bazel') }}-${{ hashFiles('**/*.bzl') }} # key: ${{ runner.os }}-disk-2-${{ hashFiles('ts/yarn.lock') }}-${{ hashFiles('pip/requirements.txt') }}-${{ hashFiles('Cargo.lock') }}-${{ hashFiles('**/BUILD.bazel') }}-${{ hashFiles('**/*.bzl') }}
- name: Cache repo # - name: Cache repo
uses: actions/cache@v2 # uses: actions/cache@v2
with: # with:
path: ${{ matrix.BAZEL_REPO }} # path: ${{ matrix.BAZEL_REPO }}
key: ${{ runner.os }}-repo-2-${{ hashFiles('ts/yarn.lock') }}-${{ hashFiles('pip/requirements.txt') }}-${{ hashFiles('Cargo.lock') }}-${{ hashFiles('**/BUILD.bazel') }}-${{ hashFiles('**/*.bzl') }} # key: ${{ runner.os }}-repo-2-${{ hashFiles('ts/yarn.lock') }}-${{ hashFiles('pip/requirements.txt') }}-${{ hashFiles('Cargo.lock') }}-${{ hashFiles('**/BUILD.bazel') }}-${{ hashFiles('**/*.bzl') }}
################################ # ################################
# Linux # # Linux
################################ # ################################
- name: Linux # - name: Linux
if: matrix.os == 'ubuntu-20.04' # if: matrix.os == 'ubuntu-20.04'
run: | # run: |
# disable command workflow processing # # disable command workflow processing
echo "::stop-commands::`echo -n ${{ github.token }} | sha256sum | head -c 64`" # echo "::stop-commands::`echo -n ${{ github.token }} | sha256sum | head -c 64`"
set -x # set -x
sudo apt update # sudo apt update
sudo apt install portaudio19-dev # sudo apt install portaudio19-dev
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.7.4/bazelisk-linux-amd64 -o ./bazel && \ # curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.7.4/bazelisk-linux-amd64 -o ./bazel && \
chmod +x ./bazel # chmod +x ./bazel
BAZEL="./bazel" # BAZEL="./bazel"
ARGS="--show_timestamps --isatty=0 --color=yes --disk_cache=${{ matrix.BAZEL_DISK }} --repository_cache=${{ matrix.BAZEL_REPO }}" # ARGS="--show_timestamps --isatty=0 --color=yes --disk_cache=${{ matrix.BAZEL_DISK }} --repository_cache=${{ matrix.BAZEL_REPO }}"
$BAZEL test ... $ARGS # $BAZEL test ... $ARGS
$BAZEL build qt:runanki $ARGS # $BAZEL build qt:runanki $ARGS
ANKI_IMPORT_ONLY=1 $BAZEL run qt:runanki # ANKI_IMPORT_ONLY=1 $BAZEL run qt:runanki
################################ # ################################
# Mac # # Mac
################################ # ################################
- name: Mac # - name: Mac
if: matrix.os == 'macos-latest' # if: matrix.os == 'macos-latest'
run: | # run: |
# disable command workflow processing # # disable command workflow processing
echo "::stop-commands::`echo -n ${{ github.token }} | sha256sum | head -c 64`" # echo "::stop-commands::`echo -n ${{ github.token }} | sha256sum | head -c 64`"
set -x # set -x
brew install portaudio gnu-tar # brew install portaudio gnu-tar
# gnu tar for cache issue # # gnu tar for cache issue
echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH # echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH
BAZEL="bazel" # BAZEL="bazel"
ARGS="--show_timestamps --isatty=0 --color=yes --disk_cache=${{ matrix.BAZEL_DISK }} --repository_cache=${{ matrix.BAZEL_REPO }}" # ARGS="--show_timestamps --isatty=0 --color=yes --disk_cache=${{ matrix.BAZEL_DISK }} --repository_cache=${{ matrix.BAZEL_REPO }}"
$BAZEL test ... $ARGS # $BAZEL test ... $ARGS
$BAZEL build qt:runanki $ARGS # $BAZEL build qt:runanki $ARGS
# the rsync workaround is not required in CI, as it's working # # the rsync workaround is not required in CI, as it's working
# around a webengine issue # # around a webengine issue
ANKI_IMPORT_ONLY=1 $BAZEL run qt:runanki # ANKI_IMPORT_ONLY=1 $BAZEL run qt:runanki

View file

@ -1,35 +0,0 @@
set BAZEL=\bazel\bazel.exe --output_user_root=\bazel\anki --output_base=\bazel\anki\base
set BUILDARGS=--config=ci
echo Building...
:: rollup may fail on the first build, so we build once without checking return code
call %BAZEL% build %BUILDARGS% ... -k
:: now build/test
echo Running tests...
call %BAZEL% test %BUILDARGS% ...
IF %ERRORLEVEL% NEQ 0 exit /B 1
:: build the wheels
call %BAZEL% build %BUILDARGS% pylib/anki:wheel qt/aqt:wheel
IF %ERRORLEVEL% NEQ 0 exit /B 1
:: install them into a new venv
echo Creating venv...
\python\python.exe -m venv venv
IF %ERRORLEVEL% NEQ 0 exit /B 1
call venv\scripts\activate
:: expand wildcards
for %%i in (bazel-bin/pylib/anki/*.whl) do set "pylib=%%~i"
for %%i in (bazel-bin/qt/aqt/*.whl) do set "qt=%%~i"
echo Installing wheels...
venv\scripts\pip install bazel-bin/pylib/anki/%pylib% bazel-bin/qt/aqt/%qt%
IF %ERRORLEVEL% NEQ 0 exit /B 1
echo Importing...
python -c "import aqt"
IF %ERRORLEVEL% NEQ 0 exit /B 1
echo Import succesful.
echo All tests pass.