name: CI on: [push, pull_request] jobs: lint-pr: if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: TrueBrain/actions-flake8@v1.4.1 lint-local: if: github.event_name == 'push' runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v2 - run: pip install tox - run: tox -e flake8 filename-matching: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v2 - run: pip install tox - run: tox -e filename_matching mypy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v2 - run: pip install tox - run: tox -e mypy individual-coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v2 - run: pip install tox - run: tox -e individual_coverage test: strategy: fail-fast: false matrix: include: - os: windows-latest py: 3.9 - os: macos-latest py: 3.9 - os: ubuntu-latest py: 3.9 - os: ubuntu-latest py: 3.8 runs-on: ${{ matrix.os }} steps: - run: printenv - uses: actions/checkout@v1 - uses: actions/setup-python@v2 with: python-version: ${{ matrix.py }} - run: pip install tox - run: tox -e py - uses: codecov/codecov-action@v1 with: file: ./coverage.xml name: ${{ matrix.os }} build-wheel: runs-on: ubuntu-latest env: CI_BUILD_WHEEL: 1 steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v2 with: python-version: '3.9' - run: pip install tox - run: tox -e cibuild -- build - uses: actions/upload-artifact@v2 with: name: wheel path: release/dist build-binaries: strategy: fail-fast: false matrix: # Old Ubuntu version for old glibc os: [macos-10.15, windows-2019, ubuntu-16.04] runs-on: ${{ matrix.os }} env: CI_BUILD_PYINSTALLER: 1 CI_BUILD_WININSTALLER: ${{ matrix.os == 'windows-2019' }} CI_BUILD_KEY: ${{ secrets.CI_BUILD_KEY }} steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v2 with: python-version: '3.9' - 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@v2 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 - uses: codecov/codecov-action@v1 with: file: ./web/coverage/coverage-final.json name: web 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@v2 with: python-version: '3.9' - run: pip install tox - run: | wget https://github.com/gohugoio/hugo/releases/download/v0.70.0/hugo_extended_0.70.0_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' environment: deploy-docker 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@v2 with: python-version: '3.9' - run: pip install tox - uses: actions/download-artifact@v2 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' environment: deploy 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@v2 with: python-version: '3.9' - uses: actions/download-artifact@v2 with: path: release/dist # move artifacts from their subfolders into release/dist - run: find release/dist -mindepth 2 -type f -exec mv {} release/dist \; # and then delete the empty folders - run: find release/dist -type d -empty -delete - run: ls release/dist - run: pip install tox - run: tox -e cibuild -- upload