Move to GitHub actions, Require dart >= 2.12 (dart-lang/io#64)

Next PR will be null safety
diff --git a/pkgs/io/.github/workflows/ci.yml b/pkgs/io/.github/workflows/ci.yml
new file mode 100644
index 0000000..36f49c2
--- /dev/null
+++ b/pkgs/io/.github/workflows/ci.yml
@@ -0,0 +1,60 @@
+name: ci
+
+on:
+  # Run on PRs and pushes to the default branch.
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+  schedule:
+    - cron: "0 0 * * 0"
+
+env:
+  PUB_ENVIRONMENT: bot.github
+
+jobs:
+  # Check code formatting and static analysis on a single OS (linux)
+  # against Dart dev and stable.
+  analyze:
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        sdk: [dev, beta]
+    steps:
+      - uses: actions/checkout@v2
+      - uses: dart-lang/setup-dart@v0.5
+        with:
+          sdk: ${{ matrix.sdk }}
+      - id: install
+        name: Install dependencies
+        run: dart pub get
+      - name: Check formatting
+        run: dart format --output=none --set-exit-if-changed .
+        if: always() && steps.install.outcome == 'success'
+      - name: Analyze code
+        run: dart analyze --fatal-infos
+        if: always() && steps.install.outcome == 'success'
+
+  # Run tests on a matrix consisting of two dimensions:
+  # 1. OS: ubuntu-latest, (macos-latest, windows-latest)
+  # 2. release channel: dev, stable
+  test:
+    needs: analyze
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        # Add macos-latest and/or windows-latest if relevant for this package.
+        os: [ubuntu-latest]
+        sdk: [dev, beta]
+    steps:
+      - uses: actions/checkout@v2
+      - uses: dart-lang/setup-dart@v0.5
+        with:
+          sdk: ${{ matrix.sdk }}
+      - id: install
+        name: Install dependencies
+        run: dart pub get
+      - run: dart test
+        if: always() && steps.install.outcome == 'success'
diff --git a/pkgs/io/.travis.yml b/pkgs/io/.travis.yml
deleted file mode 100644
index aa11342..0000000
--- a/pkgs/io/.travis.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-language: dart
-
-dart:
-  - 2.1.0
-  - dev
-
-dart_task:
-  - test
-  - dartanalyzer: --fatal-warnings --fatal-lints .
-
-matrix:
-  include:
-  # Only validate formatting using the dev release
-  - dart: dev
-    dart_task:
-      dartfmt: sdk
-
-# Only building master means that we don't run two builds for each pull request.
-branches:
-  only: [master]
-
-cache:
- directories:
-   - $HOME/.pub-cache
diff --git a/pkgs/io/CHANGELOG.md b/pkgs/io/CHANGELOG.md
index 3ea84c9..b8c0ff1 100644
--- a/pkgs/io/CHANGELOG.md
+++ b/pkgs/io/CHANGELOG.md
@@ -1,6 +1,6 @@
-## 0.3.5
+## 0.3.5-dev
 
-* Require Dart >=2.1
+* Require Dart >=2.12
 * Remove dependency on `package:charcode`.
 
 ## 0.3.4
diff --git a/pkgs/io/README.md b/pkgs/io/README.md
index 1fb3120..dc807eb 100644
--- a/pkgs/io/README.md
+++ b/pkgs/io/README.md
@@ -1,7 +1,7 @@
 Contains utilities for the Dart VM's `dart:io`.
 
 [![pub package](https://img.shields.io/pub/v/io.svg)](https://pub.dev/packages/io)
-[![Build Status](https://travis-ci.org/dart-lang/io.svg?branch=master)](https://travis-ci.org/dart-lang/io)
+[![ci](https://github.com/dart-lang/io/workflows/ci/badge.svg?branch=master)](https://github.com/dart-lang/io/actions?query=branch%3Amaster)
 
 ## Usage - `io.dart`
 
diff --git a/pkgs/io/pubspec.yaml b/pkgs/io/pubspec.yaml
index 242344c..33efd3f 100644
--- a/pkgs/io/pubspec.yaml
+++ b/pkgs/io/pubspec.yaml
@@ -2,11 +2,11 @@
 description: >-
   Utilities for the Dart VM Runtime including support for ANSI colors,
   file copying, and standard exit code values.
-version: 0.3.5
+version: 0.3.5-dev
 homepage: https://github.com/dart-lang/io
 
 environment:
-  sdk: ">=2.1.0 <3.0.0"
+  sdk: ">=2.11.99 <3.0.0"
 
 dependencies:
   meta: ^1.0.2
@@ -17,4 +17,4 @@
   dart_style: ^1.0.7
   pedantic: ^1.2.0
   test: ^1.0.0
-  test_descriptor: ^1.0.0
+  test_descriptor: ^2.0.0