Skip to content
This repository has been archived by the owner on Sep 8, 2024. It is now read-only.

New config file for GitHub Actions #2817

Closed
wants to merge 35 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f6de440
New config file for GitHub Actions
chrisveilleux Jan 25, 2021
5dd3074
removed realpath to address error
chrisveilleux Jan 25, 2021
41632d8
move export statement and limit to Python 3.5 while testing
chrisveilleux Jan 25, 2021
8d94f00
add 3.6
chrisveilleux Jan 25, 2021
36cca7a
make CI true so the instructions won't be printed
chrisveilleux Jan 25, 2021
09cb441
attempt to get past a tput error
chrisveilleux Jan 25, 2021
745e840
remove python 3.5 in attempt to fix f string error
chrisveilleux Jan 25, 2021
d599f41
temporarily comment out pycodestyle to get past an error
chrisveilleux Jan 25, 2021
8b98ea3
pull in code from PR 2764
chrisveilleux Jan 25, 2021
3cc2c06
pull in code from PR 2764
chrisveilleux Jan 25, 2021
393eb87
pull in code from PR 2764
chrisveilleux Jan 25, 2021
98b3e7d
most of this works, adding other python versions back
chrisveilleux Jan 26, 2021
8d13afc
removing 3.5 again as it throws an error with a f string
chrisveilleux Jan 26, 2021
594860b
trying pytest code coverage
chrisveilleux Jan 26, 2021
2dc539b
trying pytest code coverage
chrisveilleux Jan 26, 2021
e30a639
trying pytest code coverage
chrisveilleux Jan 26, 2021
9212211
trying pytest code coverage
chrisveilleux Jan 26, 2021
4e0d715
trying pytest code coverage
chrisveilleux Jan 26, 2021
778d928
trying pytest code coverage
chrisveilleux Jan 26, 2021
976abd2
attempt to publish report as artifact
chrisveilleux Jan 26, 2021
d3a4802
remove temp dir as it does not seem to be used
chrisveilleux Jan 26, 2021
eb5fbb3
another attempt at coveralls
chrisveilleux Jan 26, 2021
92ed4ff
revert previous commit
chrisveilleux Jan 26, 2021
001562f
try cobertura github action
chrisveilleux Jan 26, 2021
86ee91f
change pull request argument in attempt to fix cobertura report
chrisveilleux Jan 26, 2021
cd88d99
add missing argument
chrisveilleux Jan 26, 2021
9fbf32d
build xml coverage report for all python versions
chrisveilleux Jan 26, 2021
b297733
upload code coverage to codecov.io
chrisveilleux Jan 27, 2021
7aa558f
only upload code coverage when the html report is generated
chrisveilleux Jan 27, 2021
7fb0c5a
Remove apt installs that are redundant of those in dev_setup.sh
chrisveilleux Jan 27, 2021
040358f
Remove apt installs that are redundant of those in dev_setup.sh
chrisveilleux Jan 27, 2021
60ec284
Remove apt installs that are redundant of those in dev_setup.sh
chrisveilleux Jan 27, 2021
85e462f
Test of finalized version.
chrisveilleux Jan 27, 2021
dcc18df
Replace "build" and "coverage" badges with new versions based on GitH…
chrisveilleux Jan 27, 2021
b432939
Build fails on Python 3.5 due to an "f string" in PIP
chrisveilleux Jan 27, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Perform linting, code style checking, and unit tests on mycroft-core
#
# This is only part of the continuous integration (CI) process for mycroft-core
# behavioral tests (Voight-Kampff) are run in a Jenkins job.
name: Unit Tests

on:
push:
branches:
- dev
- master
pull_request:
branches:
- dev
- master

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
# Run for all versions of Python officially supported by mycroft-core
python-version: [3.6, 3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip packages
uses: actions/cache@v2
env:
cache-name: cache-pypi-modules
with:
# pip cache files are stored in `~/.cache/pip` on Linux
path: ~/.cache/pip
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('requirements/requirements.txt', 'requirements/tests.txt') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install compilers
run: |
sudo apt-get update -qq
sudo apt-get install -y gcc-4.8 g++-4.8
- name: Install Python packages for testing
run: pip install -r requirements/tests.txt
- name: Setup mycroft core
# Only build mimic for one Python version; others should not differ
run: |
if [[ ${{ matrix.python-version }} == 3.9 ]]; then ./dev_setup.sh; fi
if [[ ${{ matrix.python-version }} != 3.9 ]]; then ./dev_setup.sh -sm; fi
env:
CC: gcc-4.8
CI: true
- name: Linting and code style
run: |
pycodestyle mycroft test
flake8 mycroft test --count --select=E9,F63,F7,F82 --show-source --statistics
- name: Run unit tests
# Only generate the html report for one of the versions, others should not differ
run: |
if [[ ${{ matrix.python-version }} == 3.9 ]]; then ./start-mycroft.sh unittest --cov-report html; fi
if [[ ${{ matrix.python-version }} != 3.9 ]]; then ./start-mycroft.sh unittest; fi
- name: Upload code coverage
# Only upload the report for the Python version that generated it
run: if [[ ${{ matrix.python-version }} == 3.9 ]]; then bash <(curl -s https://codecov.io/bash); fi
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
52 changes: 27 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE.md) [![CLA](https://img.shields.io/badge/CLA%3F-Required-blue.svg)](https://mycroft.ai/cla) [![Team](https://img.shields.io/badge/Team-Mycroft_Core-violetblue.svg)](https://github.com/MycroftAI/contributors/blob/master/team/Mycroft%20Core.md) ![Status](https://img.shields.io/badge/-Production_ready-green.svg)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE.md)
[![CLA](https://img.shields.io/badge/CLA%3F-Required-blue.svg)](https://mycroft.ai/cla)
[![Team](https://img.shields.io/badge/Team-Mycroft_Core-violetblue.svg)](https://github.com/MycroftAI/contributors/blob/master/team/Mycroft%20Core.md)
![Status](https://img.shields.io/badge/-Production_ready-green.svg)

[![Build Status](https://travis-ci.org/MycroftAI/mycroft-core.svg?branch=master)](https://travis-ci.org/MycroftAI/mycroft-core) [![Coverage Status](https://coveralls.io/repos/github/MycroftAI/mycroft-core/badge.svg?branch=dev)](https://coveralls.io/github/MycroftAI/mycroft-core?branch=dev)
![Unit Tests](https://github.com/mycroftai/mycroft-core/workflows/Unit%20Tests/badge.svg)
[![codecov](https://codecov.io/gh/MycroftAI/mycroft-core/branch/dev/graph/badge.svg?token=zQzRlkXxAr)](https://codecov.io/gh/MycroftAI/mycroft-core)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)
[![Join chat](https://img.shields.io/badge/Mattermost-join_chat-brightgreen.svg)](https://chat.mycroft.ai)

Mycroft
==========
# Mycroft

Mycroft is a hackable open source voice assistant.

# Table of Contents
## Table of Contents

- [Table of Contents](#table-of-contents)
- [Getting Started](#getting-started)
- [Running Mycroft](#running-mycroft)
- [Using Mycroft](#using-mycroft)
Expand All @@ -28,7 +30,7 @@ Mycroft is a hackable open source voice assistant.
- [Getting Involved](#getting-involved)
- [Links](#links)

# Getting Started
## Getting Started

First, get the code on your system! The simplest method is via git ([git installation instructions](https://gist.github.com/derhuerst/1b15ff4652a867391f03)):
- `cd ~/`
Expand All @@ -43,7 +45,7 @@ This script sets up dependencies and a [virtualenv][about-virtualenv]. If runni

NOTE: The default branch for this repository is 'dev', which should be considered a work-in-progress. If you want to clone a more stable version, switch over to the 'master' branch.

# Running Mycroft
## Running Mycroft

Mycroft provides `start-mycroft.sh` to perform common tasks. This script uses a virtualenv created by `dev_setup.sh`. Assuming you installed mycroft-core in your home directory run:
- `cd ~/mycroft-core`
Expand All @@ -54,35 +56,35 @@ The "debug" command will start the background services (microphone listener, ski
The background services can be stopped as a group with:
- `./stop-mycroft.sh`

# Using Mycroft
## Using Mycroft

## *Home* Device and Account Manager
### *Home* Device and Account Manager
Mycroft AI, Inc. maintains a device and account management system known as Mycroft Home. Developers may sign up at: https://home.mycroft.ai

By default, mycroft-core is configured to use Home. By saying "Hey Mycroft, pair my device" (or any other request verbal request) you will be informed that your device needs to be paired. Mycroft will speak a 6-digit code which you can enter into the pairing page within the [Mycroft Home site](https://home.mycroft.ai).

Once paired, your unit will use Mycroft API keys for services such as Speech-to-Text (STT), weather and various other skills.

## Skills
### Skills

Mycroft is nothing without skills. There are a handful of default skills that are downloaded automatically to your `/opt/mycroft/skills` directory, but most need to be installed explicitly. See the [Skill Repo](https://github.com/MycroftAI/mycroft-skills#welcome) to discover skills made by others. And please share your own interesting work!
Mycroft is nothing without skills. There are a handful of default skills that are downloaded automatically to your `/opt/mycroft/skills` directory, but most need to be installed explicitly. See the [Skill Repo](https://github.com/MycroftAI/mycroft-skills#welcome) to discover skills made by others. Please share your own interesting work!

# Behind the scenes
## Behind the scenes

## Pairing Information
### Pairing Information
Pairing information generated by registering with Home is stored in:
`~/.mycroft/identity/identity2.json` <b><-- DO NOT SHARE THIS WITH OTHERS!</b>

## Configuration
Mycroft configuration consists of 4 possible locations:
### Configuration
Mycroft's configuration consists of 4 possible locations:
- `mycroft-core/mycroft/configuration/mycroft.conf`(Defaults)
- [Mycroft Home](https://home.mycroft.ai) (Remote)
- `/etc/mycroft/mycroft.conf`(Machine)
- `$HOME/.mycroft/mycroft.conf`(User)

When the configuration loader starts, it looks in these locations in this order, and loads ALL configurations. Keys that exist in multiple configuration files will be overridden by the last file to contain the value. This process results in a minimal amount being written for a specific device and user, without modifying default distribution files.

## Using Mycroft Without Home
### Using Mycroft Without Home

If you do not wish to use the Mycroft Home service, before starting Mycroft for the first time, create `$HOME/.mycroft/mycroft.conf` with the following contents:

Expand Down Expand Up @@ -111,23 +113,23 @@ You may insert your own API keys into the configuration files listed above in <b
}
```

## API Key Services
### API Key Services

These are the keys currently used in Mycroft Core:

- [STT API, Google STT, Google Cloud Speech](http://www.chromium.org/developers/how-tos/api-keys)
- [Weather Skill API, OpenWeatherMap](http://openweathermap.org/api)
- [Wolfram-Alpha Skill](http://products.wolframalpha.com/api/)

## Using Mycroft behind a proxy
### Using Mycroft behind a proxy

Many schools, universities and workplaces run a `proxy` on their network. If you need to type in a username and password to access the external internet, then you are likely behind a `proxy`.

If you plan to use Mycroft behind a proxy, then you will need to do an additional configuration step.

_NOTE: In order to complete this step, you will need to know the `hostname` and `port` for the proxy server. Your network administrator will be able to provide these details. Your network administrator may want information on what type of traffic Mycroft will be using. We use `https` traffic on port `443`, primarily for accessing ReST-based APIs._

### Using Mycroft behind a proxy without authentication
#### Using Mycroft behind a proxy without authentication

If you are using Mycroft behind a proxy without authentication, add the following environment variables, changing the `proxy_hostname.com` and `proxy_port` for the values for your network. These commands are executed from the Linux command line interface (CLI).

Expand All @@ -137,7 +139,7 @@ $ export https_port=http://proxy_hostname.com:proxy_port
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,0.0.0.0,::1"
```

### Using Mycroft behind an authenticated proxy
#### Using Mycroft behind an authenticated proxy

If you are behind a proxy which requires authentication, add the following environment variables, changing the `proxy_hostname.com` and `proxy_port` for the values for your network. These commands are executed from the Linux command line interface (CLI).

Expand All @@ -147,15 +149,15 @@ $ export https_port=http://user:password@proxy_hostname.com:proxy_port
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,0.0.0.0,::1"
```

# Getting Involved
## Getting Involved

This is an open source project and we would love your help. We have prepared a [contributing](.github/CONTRIBUTING.md) guide to help you get started.
This is an open source project. We would love your help. We have prepared a [contributing](.github/CONTRIBUTING.md) guide to help you get started.

If this is your first PR or you're not sure where to get started,
If this is your first PR, or you're not sure where to get started,
say hi in [Mycroft Chat](https://chat.mycroft.ai/) and a team member would be happy to mentor you.
Join the [Mycroft Forum](https://community.mycroft.ai/) for questions and answers.

# Links
## Links
* [Creating a Skill](https://mycroft-ai.gitbook.io/docs/skill-development/your-first-skill)
* [Documentation](https://docs.mycroft.ai)
* [Skill Writer API Docs](https://mycroft-core.readthedocs.io/en/master/)
Expand Down
2 changes: 1 addition & 1 deletion dev_setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ function get_YN() {

# If tput is available and can handle multiple colors
if found_exe tput ; then
if [[ $(tput colors) != "-1" ]]; then
if [[ $(tput colors) != "-1" && -z $CI ]]; then
GREEN=$(tput setaf 2)
BLUE=$(tput setaf 4)
CYAN=$(tput setaf 6)
Expand Down