Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-39041: Add GitHub Actions support #17594

Merged
merged 12 commits into from
Dec 16, 2019
85 changes: 85 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Tests

on:
#push:
# branches:
# - master
# - 3.8
# - 3.7
# paths-ignore:
# - 'Doc/**'
# - 'Misc/**'
pull_request:
branches:
- master
- 3.8
- 3.7
paths-ignore:
- 'Doc/**'
- 'Misc/**'

jobs:
build_win32:
name: 'Windows (x86)'
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Build CPython
run: .\PCbuild\build.bat -e -p Win32
- name: Display build info
run: .\python.bat -m test.pythoninfo
- name: Tests
run: .\PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0

build_win_amd64:
name: 'Windows (x64)'
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Build CPython
run: .\PCbuild\build.bat -e -p x64
- name: Display build info
run: .\python.bat -m test.pythoninfo
- name: Tests
run: .\PCbuild\rt.bat -x64 -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0

build_macos:
name: 'macOS'
runs-on: macos-latest
steps:
- uses: actions/checkout@v1
- name: Configure CPython
run: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-dev
- name: Build CPython
run: make -s -j4
- name: Display build info
run: make pythoninfo
- name: Tests
run: make buildbottest TESTOPTS="-j4 -uall,-cpu"

build_ubuntu:
name: 'Ubuntu'
runs-on: ubuntu-latest
env:
OPENSSL_VER: 1.1.1d
steps:
- uses: actions/checkout@v1
- name: Install Dependencies
run: sudo ./.github/workflows/posix-deps-apt.sh
- name: 'Restore OpenSSL build'
id: cache-openssl
uses: actions/cache@v1
with:
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
- name: Install OpenSSL
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $PWD/multissl --openssl $OPENSSL_VER --system Linux
- name: Configure CPython
run: ./configure --with-pydebug --with-openssl=$PWD/multissl/openssl/$OPENSSL_VER
- name: Build CPython
run: make -s -j4
- name: Display build info
run: make pythoninfo
- name: Tests
run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"
89 changes: 89 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Coverage

on:
push:
branches:
- master
- 3.8
- 3.7
paths-ignore:
- 'Doc/**'
- 'Misc/**'
#pull_request:
# branches:
# - master
# - 3.8
# - 3.7
# paths-ignore:
# - 'Doc/**'
# - 'Misc/**'

jobs:
coverage_ubuntu:
name: 'Ubuntu (Coverage)'
runs-on: ubuntu-latest
env:
OPENSSL_VER: 1.1.1d
steps:
- uses: actions/checkout@v1
- name: Install Dependencies
run: sudo ./.github/workflows/posix-deps-apt.sh
- name: 'Restore OpenSSL build'
id: cache-openssl
uses: actions/cache@v1
with:
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
- name: Install OpenSSL
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $PWD/multissl --openssl $OPENSSL_VER --system Linux
- name: Configure CPython
run: ./configure --with-openssl=$PWD/multissl/openssl/$OPENSSL_VER
- name: Build CPython
run: make -s -j4
- name: Display build info
run: make pythoninfo
- name: 'Coverage Preparation'
run: |
./python -m venv .venv
source ./.venv/bin/activate
python -m pip install -U coverage
python -m test.pythoninfo
- name: 'Tests with coverage'
run: >
source ./.venv/bin/activate &&
xvfb-run python -m coverage
run --branch --pylib
-m test
--fail-env-changed
-uall,-cpu
-x test_multiprocessing_fork
-x test_multiprocessing_forkserver
-x test_multiprocessing_spawn
-x test_concurrent_futures
|| true
- name: 'Publish code coverage results'
run: |
./.venv/bin/python -m coverage xml
bash <(curl -s https://codecov.io/bash)
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

c_coverage_ubuntu:
name: 'Ubuntu (C Coverage)'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Install Dependencies
run: sudo ./.github/workflows/posix-deps-apt.sh
- name: Configure CPython
run: ./configure
- name: 'Build CPython and measure coverage'
run: xvfb-run make -j4 coverage-report
- name: 'Publish code coverage results'
if: always()
run: |
make pythoninfo
bash <(curl -s https://codecov.io/bash)
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
40 changes: 40 additions & 0 deletions .github/workflows/doc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Docs

on:
#push:
# branches:
# - master
# - 3.8
# - 3.7
# paths:
# - 'Doc/**'
pull_request:
branches:
- master
- 3.8
- 3.7
paths:
- 'Doc/**'
- 'Misc/**'

jobs:
build_doc:
name: 'Docs'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v1
with:
python-version: '3.7'
architecture: 'x64'
- name: 'Install build dependencies'
run: python -m pip install sphinx==2.2.0 blurb python-docs-theme
- name: 'Build documentation'
run: |
cd Doc
make check suspicious html PYTHON=python
- name: Upload
uses: actions/upload-artifact@v1
with:
name: doc-html
path: Doc/build/html
21 changes: 21 additions & 0 deletions .github/workflows/posix-deps-apt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh
apt-get update

apt-get -yq install \
build-essential \
zlib1g-dev \
libbz2-dev \
liblzma-dev \
libncurses5-dev \
libreadline6-dev \
libsqlite3-dev \
libssl-dev \
libgdbm-dev \
tk-dev \
lzma \
lzma-dev \
liblzma-dev \
libffi-dev \
uuid-dev \
xvfb \
lcov
6 changes: 3 additions & 3 deletions Doc/make.bat
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ if not exist "%HTMLHELP%" (
)
:skiphhcsearch

if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v
if not defined DISTVERSION for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v

if "%BUILDDIR%" EQU "" set BUILDDIR=build
if not defined BUILDDIR set BUILDDIR=build

rem Targets that don't require sphinx-build
if "%1" EQU "" goto help
Expand Down Expand Up @@ -131,7 +131,7 @@ if exist ..\Misc\NEWS (
)
)

if NOT "%PAPER%" == "" (
if defined PAPER (
set SPHINXOPTS=-D latex_elements.papersize=%PAPER% %SPHINXOPTS%
)
if "%1" EQU "htmlhelp" (
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_py_compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def __new__(mcls, name, bases, dct, *, source_date_epoch):
class PyCompileTestsBase:

def setUp(self):
self.directory = tempfile.mkdtemp()
self.directory = tempfile.mkdtemp(dir=os.getcwd())
self.source_path = os.path.join(self.directory, '_test.py')
self.pyc_path = self.source_path + 'c'
self.cache_path = importlib.util.cache_from_source(self.source_path)
Expand Down