Repository: mozilla/mozdownload (language: python)

Issue:
Travis CI free usage ends Dec 3; mozilla repos should switch to other CI platforms
We're opening this issue because your project has used Travis CI within the last 6 months. If you have already migrated off it, you can close and ignore this issue.

Travis CI is ending free builds on public repositories. travis-ci.com [stopped providing](https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing)them in early November, and travis-ci.org [will stop](https://mailchi.mp/3d439eeb1098/travis-ciorg-is-moving-to-travis-cicom) after December 31, 2020. To avoid disruptions to your workflows, you must migrate to another CI service.

For production use cases, we recommend switching to [CircleCI](https://circleci.com/). This service is already widely used within Mozilla. There is a guide to migrating from Travis CI to CircleCI available [here](https://circleci.com/docs/2.0/migrating-from-travis/).

For non production use cases, we recommend either CircleCI or [Github Actions](https://github.com/features/actions). There is a guide to migrating from Travis CI to Github Actions available [here](https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/migrating-from-travis-ci-to-github-actions). Github Actions usage within Mozilla is new, and you will have to work with our github administrators to enable specific actions following [this process](https://wiki.mozilla.org/GitHub#How_do_I_hook_up_a_new_GitHub_Actions_or_3rd_party_application_to_a_repository_in_the_mozilla_org.3F).

If you have any questions, reach out in `#github-admin:mozilla.org` on [matrix](https://chat.mozilla.org/#/room/#github-admin:mozilla.org).



Discussion / hints:
@hwine not sure I understand. By reading the article for travis-ci.org I don't see that they stop offering free service for open source projects. As mentioned projects from that domain will be ported over to travis-ci.com, but will remain free. See this particular sentence:

> Open-source projects will be free as they always have, with lighting fast builds provided by partners like Packet.

So why should we move away from testing with Travis-CI?

Because they keep changing their story -- see "Building on a [sic] public repositories only" from their [2020-11-20 post](https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing). Since the credits are a global resource, we have no idea when they will be consumed. When they are, your CI stops.
Here is how mozregression transitioned over to Github Action: https://github.com/mozilla/mozregression/pull/834.
Hey whimboo! I can take up the task for moving the CI to Github Actions.
@salilmishra23 that would be very very appreciated!! Right now it's really a big blocker on getting PR's tested. 

Fix patch:
diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index f26e6056..00000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-build: false
-
-environment:
-  matrix:
-    - PYTHON: "C:\\Python38"
-      PYTHON_VERSION: "3.8"
-      TOXENV: "py38"
-
-init:
-  - ECHO %PYTHON%
-  - ECHO %TOXENV%
-  - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%
-
-install:
-  - python -m pip install --upgrade pip
-  - pip install tox==3.7.0
-
-test_script:
-  - tox
diff --git a/.coveralls.yml b/.coveralls.yml
new file mode 100644
index 00000000..1157ff25
--- /dev/null
+++ b/.coveralls.yml
@@ -0,0 +1,1 @@
+service_name: github-actions
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index d14796fb..3216ef3a 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -5,12 +5,12 @@ So you want to write code and get it landed in the official mozdownload reposito
 For writing the code just follow our [Python style guide](http://ateam-bootcamp.readthedocs.org/en/latest/reference/python-style.html), and also test with [pylama](https://pypi.python.org/pypi/pylama). If there is something unclear of the style, just look at existing code which might help you to understand it better.
 
 ### Submitting Patches
-When you think the code is ready for review a pull request should be created on Github. Owners of the repository will watch out for new PR's and review them in regular intervals. By default for each change in the PR we automatically run all the tests via [Travis CI](http://travis-ci.org/). If tests are failing make sure to address the failures immediately. Otherwise you can wait for a review. If comments have been given in a review, they have to get integrated. For those changes a separate commit should be created and pushed to your remote development branch. Don't forget to add a comment in the PR afterward, so everyone gets notified by Github. Keep in mind that reviews can span multiple cycles until the owners are happy with the new code.
+When you think the code is ready for review a pull request should be created on Github. Owners of the repository will watch out for new PR's and review them in regular intervals. By default for each change in the PR we automatically run all the tests via [Github Actions](https://github.com/mozilla/mozdownload/actions). If tests are failing make sure to address the failures immediately. Otherwise you can wait for a review. If comments have been given in a review, they have to get integrated. For those changes a separate commit should be created and pushed to your remote development branch. Don't forget to add a comment in the PR afterward, so everyone gets notified by Github. Keep in mind that reviews can span multiple cycles until the owners are happy with the new code.
 
 ## Managing the Repository
 
 ### Merging Pull Requests
-Once a PR is in its final state it needs to be merged into the upstream master branch. For that please **DO NOT** use the Github merge button! But merge it yourself on the command line. Reason is that we want to hvae a clean history. Before pushing the changes to upstream master make sure that all individual commits have been squashed into a single one with a commit message ending with the issue number, e.g. "Fix for broken download behavior (#45)". Also check with `git log` to not push merge commits. Only merge PRs where Travis does not report any failure!
+Once a PR is in its final state it needs to be merged into the upstream master branch. For that please **DO NOT** use the Github merge button! But merge it yourself on the command line. Reason is that we want to hvae a clean history. Before pushing the changes to upstream master make sure that all individual commits have been squashed into a single one with a commit message ending with the issue number, e.g. "Fix for broken download behavior (#45)". Also check with `git log` to not push merge commits. Only merge PRs where Github Actions does not report any failure!
 
 ### Versioning
 In irregular intervals we are releasing new versions of mozdownload. Therefore we make use of milestones in the repository. For each implemented feature or fix the issue's milestone flag should be set to the next upcoming release. That way its easier to see what will be part of the next release.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..9204c990
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,9 @@
+version: 2
+updates:
+- package-ecosystem: "pip"
+  directory: "/"
+  schedule:
+    interval: "weekly"
+  open-pull-requests-limit: 10
+  allow:
+    - dependency-type: all
diff --git a/.pyup.yml b/.pyup.yml
deleted file mode 100644
index 6ea20650..00000000
--- a/.pyup.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# autogenerated pyup.io config file 
-# see https://pyup.io/docs/configuration/ for all available options
-
-schedule: every week
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 61b32f8a..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-sudo: false
-
-cache:
-    directories:
-        - $HOME/.cache/pip
-
-language: python
-
-matrix:
-    include:
-        - name: "Run test suite on Linux with Python 3.8"
-          os: linux
-          python: 3.8
-          env: TOXENV=py38
-        - name: "Check code style with pylama on Linux - Python 3.8"
-          os: linux
-          python: 3.8
-          env: TOXENV=pylama
-          # 10.1 is OS X 10.13.x
-          # https://docs.travis-ci.com/user/languages/objective-c/#Supported-OS-X-iOS-SDK-versions
-        - name: "Run test suite on OS X with Python 3.8"
-          os: osx
-          osx_image: xcode11
-          language: generic
-          env: TOXENV=py3
-
-
-install:
-    - ./.travis/install.sh
-
-script:
-    - tox
-
-notifications:
-    email:
-        - dev-automation@lists.mozilla.org
-    irc:
-        - "irc.mozilla.org#automation"
diff --git a/.travis/install.sh b/.travis/install.sh
deleted file mode 100755
index d3b38c7a..00000000
--- a/.travis/install.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-set -e
-set -x
-
-ci_requirements="tox virtualenv"
-
-if [ "$TRAVIS_OS_NAME" == "osx" ]; then
-    curl -O https://bootstrap.pypa.io/get-pip.py
-    python get-pip.py --user
-fi
-
-pip install $ci_requirements
diff --git a/README.md b/README.md
index 0881e679..5064bb13 100644
--- a/README.md
+++ b/README.md
@@ -4,10 +4,8 @@
 is a [python package](http://pypi.python.org/pypi/mozdownload)
 which handles downloading of Mozilla applications.
 
-[![Travis](https://travis-ci.org/mozilla/mozdownload.svg?branch=master)](https://travis-ci.org/mozilla/mozdownload)
 [![Coverage](https://coveralls.io/repos/github/mozilla/mozdownload/badge.svg)](https://coveralls.io/github/mozilla/mozdownload)
 [![Issues](https://img.shields.io/github/issues/mozilla/mozdownload.svg)](https://github.com/mozilla/mozdownload/issues)
-[![pyup.io](https://pyup.io/repos/github/mozilla/mozdownload/shield.svg)](https://pyup.io/repos/github/mozilla/mozdownload/)
 
 ## Installation
 
diff --git a/tox.ini b/tox.ini
index 220d6db1..1f5130e9 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,13 +1,13 @@
 [tox]
-envlist = py37, pylama
+envlist = py37, py38, py39, pylama
 
 [testenv]
 usedevelop = true
-passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH CI
+passenv = GITHUB_* CI
 deps = -rrequirements/tests.txt
 commands =
     pytest --verbose --cov {posargs}
-    -coveralls
+    -coveralls --service=github
 
 [testenv:pylama]
 deps = pylama


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 00000000..97173675
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,58 @@
+name: Test
+
+on:
+  push:
+    branches:
+      - master
+    tags:
+  pull_request:
+
+jobs:
+  build:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+        # linux
+        - os: ubuntu-latest
+          python: 3.7
+          toxenv: py37
+        - os: ubuntu-latest
+          python: 3.8
+          toxenv: py38
+        - os: ubuntu-latest
+          python: 3.9
+          toxenv: py39
+        # Blocked by https://github.com/web-platform-tests/wpt/issues/35978
+        # - os: ubuntu-latest
+        #   python: "3.10"
+        #   toxenv: py310
+        # windows
+        - os: windows-latest
+          python: 3.8
+          toxenv: py38
+        # macos
+        - os: macos-latest
+          python: 3.8
+          toxenv: py38
+        # misc
+        - os: ubuntu-latest
+          python: 3.8
+          toxenv: pylama
+
+    steps:
+      - uses: actions/checkout@v3
+
+      - name: Set up Python ${{ matrix.python }}
+        uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python }}
+
+      - name: Install dependencies
+        run: python -m pip install -U tox
+
+      - name: Tox tests
+        run: tox -e ${{ matrix.toxenv }}
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/requirements/tests.txt b/requirements/tests.txt
index 19368886..a8934a3e 100644
--- a/requirements/tests.txt
+++ b/requirements/tests.txt
@@ -1,5 +1,5 @@
-coveralls==1.8.1
-pytest==4.6.3
-pytest-cov==2.7.1
-pytest-mock==1.10.4
+coveralls[yaml]==3.3.1
+pytest==7.1.3
+pytest-cov==3.0.0
+pytest-mock==3.8.2
 wptserve==3.0
diff --git a/tests/remote/test_firefox.py b/tests/remote/test_firefox.py
index 0ba33cf1..671808e8 100644
--- a/tests/remote/test_firefox.py
+++ b/tests/remote/test_firefox.py
@@ -101,6 +101,7 @@ def test_daily_scraper(tmpdir, args):
     mozdownload.DailyScraper(destination=tmpdir, **args)
 
 
+@pytest.mark.skip(reason="https://github.com/mozilla/mozdownload/issues/625")
 @pytest.mark.ci_only
 @pytest.mark.parametrize("args", [
     {'branch': 'mozilla-central', 'platform': 'linux'},