Use GitHub Actions rather than Azure Pipelines

This commit is contained in:
Kovid Goyal 2019-10-02 19:18:10 +05:30
parent fa4e2d119d
commit 9c07cc7e82
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 69 additions and 118 deletions

61
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,61 @@
name: Continuous Integration
on: push
jobs:
test:
name: Test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-2016]
steps:
- name: Checkout source code
uses: actions/checkout@master
with:
fetch-depth: 10
- name: Set up Python
uses: actions/setup-python@master
with:
python-version: 3.7
- name: Install calibre dependencies
run:
python setup/unix-ci.py install
- name: Bootstrap calibre
run:
python setup/unix-ci.py bootstrap
- name: Test calibre
run:
python setup/unix-ci.py test
archtest:
name: Test on Arch
runs-on: ubuntu-latest
container:
image: 'archlinux/base:latest'
env:
CI: 'true'
CALIBRE_PY3_PORT: '1'
steps:
- name: Install calibre dependencies
run: |
set -xe
useradd -m ci
pacman -Syu --noconfirm
pacman -S --noconfirm --needed base-devel sudo git sip chmlib icu jxrlib hunspell libmtp libusbx libwmf optipng podofo python-apsw python-beautifulsoup4 python-cssselect python-css-parser python-dateutil python-dbus python-dnspython python-dukpy python-feedparser python-html2text python-html5-parser python-lxml python-markdown python-mechanize python-msgpack python-netifaces python-unrardll python-pillow python-psutil python-pygments python-pyqt5 python-regex python-zeroconf python-pyqtwebengine qt5-x11extras qt5-svg qt5-imageformats udisks2
- name: Checkout source code
uses: actions/checkout@master
with:
fetch-depth: 10
- name: Bootstrap calibre
run: |
chown -R ci:users $GITHUB_WORKSPACE
runuser -u ci -- python setup.py bootstrap --ephemeral
- name: Test calibre
run: runuser -u ci -- python setup.py test

View File

@ -10,7 +10,7 @@ reading. It is cross platform, running on Linux, Windows and macOS.
For more information, see the [calibre About page](https://calibre-ebook.com/about) For more information, see the [calibre About page](https://calibre-ebook.com/about)
[![Build Status](https://dev.azure.com/divok/calibre/_apis/build/status/kovidgoyal.calibre?branchName=master)](https://dev.azure.com/divok/calibre/_build/latest?definitionId=1&branchName=master) ![Build Status](https://github.com/kovidgoyal/calibre/workflows/Continuous%20Integration/badge.svg)
## Screenshots ## Screenshots

View File

@ -1,117 +0,0 @@
# https://aka.ms/yaml
trigger:
branches:
include:
- '*'
jobs:
- job: 'Python3'
pool:
vmImage: 'ubuntu-latest'
container:
image: 'archlinux/base:latest'
# See https://github.com/Microsoft/azure-pipelines-agent/issues/2043
# for why we need this hack to get root in the container
options: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
steps:
- script: |
set -xe
/tmp/docker exec -t -u 0 ci-container sh -c "pacman -Syu --noconfirm"
/tmp/docker exec -t -u 0 ci-container \
sh -c "pacman -S --noconfirm --needed base-devel sudo git sip chmlib icu jxrlib hunspell libmtp libusbx libwmf optipng podofo python-apsw python-beautifulsoup4 python-cssselect python-css-parser python-dateutil python-dbus python-dnspython python-dukpy python-feedparser python-html2text python-html5-parser python-lxml python-markdown python-mechanize python-msgpack python-netifaces python-unrardll python-pillow python-psutil python-pygments python-pyqt5 python-regex python-zeroconf python-pyqtwebengine qt5-x11extras qt5-svg qt5-imageformats udisks2"
displayName: 'Install calibre dependencies'
- checkout: self
fetchDepth: 10
- script: |
python setup.py bootstrap --ephemeral
displayName: 'Bootstrap calibre'
env: { 'CALIBRE_PY3_PORT': '1' }
- script: |
python setup.py test
displayName: 'Test calibre'
env: { 'CALIBRE_PY3_PORT': '1' }
- job: 'Linux'
pool:
vmImage: 'ubuntu-latest'
steps:
- checkout: self
fetchDepth: 10
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
architecture: 'x64'
- script: |
sudo apt-get install -y gettext libgl1-mesa-dev
displayName: 'Install needed OS libs'
- script: |
python3 setup/unix-ci.py install
displayName: 'Install calibre dependencies'
- script: |
python3 setup/unix-ci.py bootstrap
displayName: 'Bootstrap calibre'
- script: |
python3 setup/unix-ci.py test
displayName: 'Test calibre'
- job: 'macOS'
pool:
vmImage: 'macos-latest'
steps:
- checkout: self
fetchDepth: 10
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
architecture: 'x64'
- script: |
python3 setup/unix-ci.py install
displayName: 'Install calibre dependencies'
- script: |
python3 setup/unix-ci.py bootstrap
displayName: 'Bootstrap calibre'
- script: |
python3 setup/unix-ci.py test
displayName: 'Test calibre'
- job: 'Windows'
pool:
vmImage: 'vs2017-win2016'
steps:
- checkout: self
fetchDepth: 10
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
architecture: 'x64'
- script: |
python setup/win-ci.py install
displayName: 'Install calibre dependencies'
- script: |
python setup/win-ci.py bootstrap
displayName: 'Bootstrap calibre'
- script: |
python setup/win-ci.py test
displayName: 'Test calibre'

View File

@ -13,6 +13,7 @@ from tempfile import NamedTemporaryFile
_plat = sys.platform.lower() _plat = sys.platform.lower()
ismacos = 'darwin' in _plat ismacos = 'darwin' in _plat
iswindows = 'win32' in _plat or 'win64' in _plat
def setenv(key, val): def setenv(key, val):
@ -92,6 +93,10 @@ def run_python(*args):
def main(): def main():
if iswindows:
import runpy
m = runpy.run_path('setup/win-ci.py')
return m['main']()
action = sys.argv[1] action = sys.argv[1]
if action == 'install': if action == 'install':
run('sudo', 'mkdir', '-p', SW) run('sudo', 'mkdir', '-p', SW)
@ -101,6 +106,8 @@ def main():
download_and_decompress( download_and_decompress(
'https://download.calibre-ebook.com/ci/calibre/{}.tar.xz'.format(tball), SW 'https://download.calibre-ebook.com/ci/calibre/{}.tar.xz'.format(tball), SW
) )
if not ismacos:
run('sudo', 'apt-get', 'install', '-y', 'gettext', 'libgl1-mesa-dev')
elif action == 'bootstrap': elif action == 'bootstrap':
install_env() install_env()