Drop Travis and move to GitHub actions (#694)

pull/697/head
Mattia Iavarone 5 years ago committed by GitHub
parent 129b43e657
commit 79d00d5eba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 92
      .github/workflows/build.yml
  2. 18
      .github/workflows/deploy.yml
  3. 90
      .travis.yml
  4. 2
      README.md
  5. 19
      cameraview/build.gradle

@ -0,0 +1,92 @@
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions
name: Build
on:
push:
branches:
- master
pull_request:
env:
TRAVIS: true
jobs:
ANDROID_BASE_CHECKS:
name: Base Checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Perform base checks
run: ./gradlew demo:assembleDebug cameraview:javadoc
ANDROID_UNIT_TESTS:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Execute unit tests
run: ./gradlew cameraview:testDebugUnitTest
- name: Upload unit tests artifact
uses: actions/upload-artifact@v1
with:
name: unit_tests
path: ./cameraview/build/jacoco/
ANDROID_EMULATOR_TESTS:
name: Emulator Tests
runs-on: macOS-latest
strategy:
matrix:
EMULATOR_API: [22]
EMULATOR_ARCH: [x86_64]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Execute emulator tests
uses: reactivecircus/android-emulator-runner@v1
with:
api-level: ${{ matrix.EMULATOR_API }}
arch: ${{ matrix.EMULATOR_ARCH }}
disable-animations: true
headless: true
script: ./gradlew cameraview:connectedCheck
- name: Upload emulator tests artifact
uses: actions/upload-artifact@v1
with:
name: emulator_tests
path: ./cameraview/build/outputs/code_coverage/debugAndroidTest/connected
CODE_COVERAGE:
name: Code Coverage Report
runs-on: ubuntu-latest
needs: [ANDROID_UNIT_TESTS, ANDROID_EMULATOR_TESTS]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Download unit tests artifact
uses: actions/download-artifact@v1
with:
name: unit_tests
path: ./cameraview/build/jacoco/
- name: Download emulator tests artifact
uses: actions/download-artifact@v1
with:
name: emulator_tests
path: ./cameraview/build/outputs/code_coverage/debugAndroidTest/connected
- name: Create merged coverage report
run: ./gradlew cameraview:mergeCoverageReports
- name: Upload merged coverage report (GitHub)
uses: actions/upload-artifact@v1
with:
name: report
path: ./cameraview/build/reports/mergedCoverageReport
- name: Upload merged coverage report (Codecov)
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_KEY }}
file: ./cameraview/build/reports/mergedCoverageReport/*
fail_ci_if_error: true

@ -0,0 +1,18 @@
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions
name: Deploy
on: [release]
jobs:
BINTRAY_UPLOAD:
name: Bintray Upload
runs-on: ubuntu-latest
env:
TRAVIS: true
BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Perform bintray upload
run: ./gradlew bintrayUpload

@ -1,90 +0,0 @@
# https://github.com/andstatus/andstatus/blob/master/.travis.yml
language: android
branches:
only:
- master
- /^v\d+\.\d+\.\d+$/
- /^v\d+\.\d+\.\d+-beta\d+$/
- /^v\d+\.\d+\.\d+-rc\d+$/
sudo: false
jdk:
- oraclejdk8
env:
global:
- EMULATOR_API=22 # 24 has some issues, probably some overlayed window
- EMULATOR_ABI=x86_64 # seems to work with emulator v29.
- EMULATOR_TAG=default # can be google_apis
- PATH=$ANDROID_HOME:$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools:$PATH
android:
components:
- tools
- platform-tools
- build-tools-28.0.3
- android-28
- doc-28
install:
# Setup
- echo $ANDROID_HOME # We assume this is correctly set when setting path
- sdkmanager --list || true # Look at the packages
- echo yes | sdkmanager "tools" # Ensure tools is updated
- echo yes | sdkmanager "emulator" # Ensure emulator is present
# Install emulator
# The channel=4 line looks into canary which brings in v29.
# The previous version v28 was broken:
# https://travis-ci.community/t/android-emulators-not-starting-for-the-last-few-days-late-march-2019/2871/11?u=mikehardy
- export EMULATOR="system-images;android-$EMULATOR_API;$EMULATOR_TAG;$EMULATOR_ABI"
- echo yes | sdkmanager "platforms;android-$EMULATOR_API" # Install sdk for the emulator
- echo yes | sdkmanager --channel=4 "$EMULATOR" # Install system image
- sdkmanager --list || true # Check everything is updated
# Create adn start emulator
- echo no | avdmanager create avd -n test -k "$EMULATOR" -f # Create emulator virtual device
- which emulator # ensure we are using the right emulator ($ANDROID_HOME/emulator/emulator)
- emulator -avd test -no-window -no-accel -no-snapshot -camera-back emulated -camera-front emulated -memory 2048 -writable-system & # Launch
- adb wait-for-device # Wait for adb process
- adb remount # Mount as writable
before_script:
# Wait for emulator
- android-wait-for-emulator # Wait for emulator ready to interact
- adb shell settings put global window_animation_scale 0 & # Disable animations
- adb shell settings put global transition_animation_scale 0 & # Disable animations
- adb shell settings put global animator_duration_scale 0 & # Disable animations
# Unlock and configure logs.
# Would be great to use -v color to adb logcat but looks not supported on travis.
- sleep 20 # Sleep 20 seconds just in case
- adb shell input keyevent 82 & # Dispatch unlock event
- adb logcat --help # See if this version supports color
- adb logcat -c # Clear logcat
- adb logcat Test:V TestRunner:V CameraView:V CameraController:V Camera1:V WorkerHandler:V THREAD_STATE:S *:E &
# - export LOGCAT_PID=$! # Save PID of the logcat process. Should kill later with kill $LOGCAT_PID
script:
- ./gradlew clean demo:assembleDebug cameraview:testDebugUnitTest cameraview:connectedCheck cameraview:mergedCoverageReport cameraview:javadoc
after_success:
- bash <(curl -s https://codecov.io/bash) -s "*/build/reports/mergedCoverageReport/"
cache:
directories:
- $HOME/.gradle
- $HOME/.m2/repository
deploy:
provider: script
script: ./gradlew bintrayUpload
skip_cleanup: true
on:
branch: master
tags: true

@ -1,4 +1,4 @@
[![Build Status](https://travis-ci.org/natario1/CameraView.svg?branch=master)](https://travis-ci.org/natario1/CameraView) [![Build Status](https://github.com/natario1/CameraView/workflows/Build/badge.svg)](https://github.com/natario1/CameraView/actions)
[![Code Coverage](https://codecov.io/gh/natario1/CameraView/branch/master/graph/badge.svg)](https://codecov.io/gh/natario1/CameraView) [![Code Coverage](https://codecov.io/gh/natario1/CameraView/branch/master/graph/badge.svg)](https://codecov.io/gh/natario1/CameraView)
[![Release](https://img.shields.io/github/release/natario1/CameraView.svg)](https://github.com/natario1/CameraView/releases) [![Release](https://img.shields.io/github/release/natario1/CameraView.svg)](https://github.com/natario1/CameraView/releases)
[![Issues](https://img.shields.io/github/issues-raw/natario1/CameraView.svg)](https://github.com/natario1/CameraView/issues) [![Issues](https://img.shields.io/github/issues-raw/natario1/CameraView.svg)](https://github.com/natario1/CameraView/issues)

@ -8,7 +8,7 @@ group = 'com.otaliastudios'
//region android dependencies //region android dependencies
def travis = System.getenv("TRAVIS") def isCI = System.getenv("TRAVIS")
android { android {
compileSdkVersion rootProject.ext.compileSdkVersion compileSdkVersion rootProject.ext.compileSdkVersion
@ -19,7 +19,7 @@ android {
versionCode 1 versionCode 1
versionName project.version versionName project.version
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
if (travis) { if (isCI) {
testInstrumentationRunnerArgument "notAnnotation", "com.otaliastudios.cameraview.DoNotRunOnTravis" testInstrumentationRunnerArgument "notAnnotation", "com.otaliastudios.cameraview.DoNotRunOnTravis"
} }
} }
@ -109,7 +109,7 @@ install {
def bintrayUser def bintrayUser
def bintrayKey def bintrayKey
if (travis) { if (isCI) {
bintrayUser = System.getenv("BINTRAY_USER") bintrayUser = System.getenv("BINTRAY_USER")
bintrayKey = System.getenv("BINTRAY_KEY") bintrayKey = System.getenv("BINTRAY_KEY")
} else { } else {
@ -200,9 +200,16 @@ jacoco {
reportsDir = file(reportsDirectory) reportsDir = file(reportsDirectory)
} }
task mergedCoverageReport(type: JacocoReport) { task createCoverageReports() {
dependsOn "testDebugUnitTest" dependsOn "testDebugUnitTest"
dependsOn "connectedCheck" dependsOn "connectedCheck"
}
task mergeCoverageReports(type: JacocoReport) {
// Let this be called without running the tests.
// dependsOn "createCoverageReports"
// However, ensure we have the compiled .class files.
dependsOn "compileDebugSources"
// Merge unit tests and android tests data // Merge unit tests and android tests data
executionData = fileTree(dir: "$buildDir", includes: [ executionData = fileTree(dir: "$buildDir", includes: [
@ -234,9 +241,9 @@ task mergedCoverageReport(type: JacocoReport) {
'**/Dagger*Component$Builder.class', '**/Dagger*Component$Builder.class',
'**/*Module_*Factory.class', '**/*Module_*Factory.class',
] ]
if (travis) { if (isCI) {
// All these classes are tested by the integration tests that we are not able to // All these classes are tested by the integration tests that we are not able to
// run on the travis emulator. // run on the CI emulator.
classFilter.add('**/com/otaliastudios/cameraview/engine/CameraEngine**.*') classFilter.add('**/com/otaliastudios/cameraview/engine/CameraEngine**.*')
classFilter.add('**/com/otaliastudios/cameraview/engine/Camera1Engine**.*') classFilter.add('**/com/otaliastudios/cameraview/engine/Camera1Engine**.*')
classFilter.add('**/com/otaliastudios/cameraview/engine/Camera2Engine**.*') classFilter.add('**/com/otaliastudios/cameraview/engine/Camera2Engine**.*')

Loading…
Cancel
Save