211 lines
6.5 KiB
YAML
211 lines
6.5 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
# We currently use Python 3.7 for most things:
|
|
# - zstandard currently doesn't have 3.8 wheels,
|
|
# - we need to upgrade cryptography from version 2.4, which also doesn't have wheels
|
|
|
|
env:
|
|
# Codecov
|
|
CODECOV_TOKEN: "0409bdfd-57a4-477d-a8af-f6172ef431d3"
|
|
|
|
jobs:
|
|
lint-pr:
|
|
if: github.event_name == 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: TrueBrain/actions-flake8@v1.2
|
|
lint-local:
|
|
# do not use external action when secrets are exposed.
|
|
if: github.event_name == 'push'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
- run: pip install flake8
|
|
- run: flake8 mitmproxy pathod examples test release
|
|
mypy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
- run: pip install mypy
|
|
- run: mypy .
|
|
test:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- run: printenv
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.7'
|
|
- run: pip install tox
|
|
- run: tox -e py37
|
|
# codecov's GitHub action only supports Linux. https://github.com/codecov/codecov-action/issues/7
|
|
# codecov's Python uploader has no github actions support yet. https://github.com/codecov/codecov-python/pull/214
|
|
- name: Extract branch name # https://stackoverflow.com/a/58035262/934719
|
|
shell: bash
|
|
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
|
id: extract_branch
|
|
- run: pip install codecov
|
|
- run: >
|
|
codecov -f coverage.xml
|
|
--name python-${{ matrix.os }}
|
|
--commit ${{ github.sha }}
|
|
--slug ${{ github.repository }}
|
|
--branch ${{ steps.extract_branch.outputs.branch }}
|
|
test-py35:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.5'
|
|
- run: pip install tox
|
|
- run: tox -e py35
|
|
build-wheel:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
CI_BUILD_WHEEL: 1
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.7'
|
|
- run: pip install tox
|
|
- run: tox -e cibuild -- build
|
|
- uses: actions/upload-artifact@master
|
|
with:
|
|
name: wheel
|
|
path: release/dist
|
|
build-binaries:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# Old Ubuntu version for old glibc
|
|
os: [macos-latest, windows-latest, ubuntu-16.04]
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
CI_BUILD_PYINSTALLER: 1
|
|
CI_BUILD_WININSTALLER: ${{ matrix.os == 'windows-latest' }}
|
|
CI_BUILD_KEY: ${{ secrets.CI_BUILD_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.7'
|
|
- if: matrix.os == 'windows-latest'
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: release/installbuilder/setup
|
|
key: installbuilder
|
|
- run: pip install tox
|
|
- run: tox -e cibuild -- build
|
|
# artifacts must have different names, see https://github.com/actions/upload-artifact/issues/24
|
|
- uses: actions/upload-artifact@master
|
|
with:
|
|
name: binaries.${{ matrix.os }}
|
|
path: release/dist
|
|
|
|
test-web-ui:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- run: git rev-parse --abbrev-ref HEAD
|
|
- uses: actions/setup-node@v1
|
|
- id: yarn-cache
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
- uses: actions/cache@v1
|
|
with:
|
|
path: ${{ steps.yarn-cache.outputs.dir }}
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- working-directory: ./web
|
|
run: yarn
|
|
- working-directory: ./web
|
|
run: npm test
|
|
- run: bash <(curl -s https://codecov.io/bash)
|
|
|
|
docs:
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.7'
|
|
- run: pip install tox
|
|
- run: |
|
|
wget https://github.com/gohugoio/hugo/releases/download/v0.59.1/hugo_0.59.1_Linux-64bit.deb
|
|
sudo dpkg -i hugo*.deb
|
|
- run: tox -e docs
|
|
|
|
# Separate from everything else because slow.
|
|
build-and-deploy-docker:
|
|
if: github.repository == 'mitmproxy/mitmproxy' && github.event_name == 'push'
|
|
needs: [test, test-web-ui, build-wheel]
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
CI_BUILD_DOCKER: 1
|
|
DOCKER_USERNAME: mitmbot
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.7'
|
|
- run: pip install tox
|
|
- uses: actions/download-artifact@master
|
|
with:
|
|
name: wheel
|
|
path: release/dist
|
|
- run: tox -e cibuild -- build
|
|
- run: tox -e cibuild -- upload
|
|
|
|
deploy:
|
|
if: github.repository == 'mitmproxy/mitmproxy' && github.event_name == 'push'
|
|
runs-on: ubuntu-latest
|
|
needs: [test, test-web-ui, build-wheel, build-binaries]
|
|
env:
|
|
CI_BUILD_WHEEL: 1
|
|
CI_BUILD_PYINSTALLER: 1
|
|
CI_BUILD_WININSTALLER: 1
|
|
TWINE_USERNAME: mitmproxy
|
|
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- uses: actions/setup-python@v1
|
|
with:
|
|
python-version: '3.7'
|
|
# artifacts must be downloaded individually, see https://github.com/actions/download-artifact/issues/6
|
|
- uses: actions/download-artifact@master
|
|
with:
|
|
name: wheel
|
|
path: release/dist
|
|
- uses: actions/download-artifact@master
|
|
with:
|
|
name: binaries.windows-latest
|
|
path: release/dist
|
|
- uses: actions/download-artifact@master
|
|
with:
|
|
name: binaries.macos-latest
|
|
path: release/dist
|
|
- uses: actions/download-artifact@master
|
|
with:
|
|
name: binaries.ubuntu-16.04
|
|
path: release/dist
|
|
- run: ls release/dist
|
|
- run: pip install tox
|
|
- run: tox -e cibuild -- upload
|