Merge pull request #168 from SamR1/move-ci-to-github-actions
Move CI from Gitlab CI to GitHub Actions
This commit is contained in:
commit
9ab07602e3
34
.github/workflows/.tests-javascript.yml
vendored
Normal file
34
.github/workflows/.tests-javascript.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
name: Javascript CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths: ['fittrackee_client/**']
|
||||||
|
pull_request:
|
||||||
|
paths: ['fittrackee_client/**']
|
||||||
|
|
||||||
|
env:
|
||||||
|
working-directory: fittrackee_client
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
javascript:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Use Node.js 17.x
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: "17.x"
|
||||||
|
- name: Install yarn and dependencies
|
||||||
|
working-directory: ${{env.working-directory}}
|
||||||
|
run: |
|
||||||
|
npm install --global yarn
|
||||||
|
yarn install
|
||||||
|
- name: Lint
|
||||||
|
working-directory: ${{env.working-directory}}
|
||||||
|
run: yarn lint
|
||||||
|
- name: Tests
|
||||||
|
working-directory: ${{env.working-directory}}
|
||||||
|
run: yarn test:unit
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{env.working-directory}}
|
||||||
|
run: yarn build
|
86
.github/workflows/.tests-python.yml
vendored
Normal file
86
.github/workflows/.tests-python.yml
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
name: Python CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore: ['docs/**', 'docsrc/**', 'fittrackee_client/**', '*.md']
|
||||||
|
pull_request:
|
||||||
|
paths-ignore: ['docs/**', 'docsrc/**', 'fittrackee_client/**', '*.md']
|
||||||
|
|
||||||
|
env:
|
||||||
|
APP_SETTINGS: fittrackee.config.TestingConfig
|
||||||
|
DATABASE_TEST_URL: "postgresql://fittrackee:fittrackee@postgres:5432/fittrackee_test"
|
||||||
|
EMAIL_URL: "smtp://none:none@0.0.0.0:1025"
|
||||||
|
FLASK_APP: fittrackee/__main__.py
|
||||||
|
SENDER_EMAIL: fittrackee@example.com
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
python:
|
||||||
|
name: python ${{ matrix.python-version }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: python:${{ matrix.python-version }}
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:latest
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: fittrackee_test
|
||||||
|
POSTGRES_USER: fittrackee
|
||||||
|
POSTGRES_PASSWORD: fittrackee
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
python-version: [ "3.7", "3.8", "3.9", "3.10" ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Poetry and Dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install --quiet poetry
|
||||||
|
poetry config virtualenvs.create false
|
||||||
|
poetry install --no-interaction --quiet
|
||||||
|
- name: Lint
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: pytest --flake8 --isort --black -m "flake8 or isort or black" fittrackee e2e --ignore=fittrackee/migrations -p no:warnings
|
||||||
|
- name: Mypy
|
||||||
|
if: matrix.python-version == '3.10'
|
||||||
|
run: mypy fittrackee
|
||||||
|
- name: Pytest
|
||||||
|
run: pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing
|
||||||
|
|
||||||
|
end2end:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: ["python"]
|
||||||
|
container: python:3.10
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:latest
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: fittrackee_test
|
||||||
|
POSTGRES_USER: fittrackee
|
||||||
|
POSTGRES_PASSWORD: fittrackee
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
selenium:
|
||||||
|
image: selenium/standalone-firefox
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Poetry and Dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install --quiet poetry
|
||||||
|
poetry config virtualenvs.create false
|
||||||
|
poetry install --no-interaction --quiet
|
||||||
|
- name: Run migrations
|
||||||
|
run: flask db upgrade --directory fittrackee/migrations
|
||||||
|
- name: Start application and run tests with Selenium
|
||||||
|
run: |
|
||||||
|
setsid nohup flask run --with-threads -h 0.0.0.0 -p 5000 >> nohup.out 2>&1 &
|
||||||
|
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
||||||
|
sleep 5
|
||||||
|
pytest e2e --driver Remote --capability browserName firefox --host selenium --port 4444
|
100
.gitlab-ci.yml
100
.gitlab-ci.yml
@ -1,100 +0,0 @@
|
|||||||
image: python:3.9
|
|
||||||
|
|
||||||
variables:
|
|
||||||
POSTGRES_DB: fittrackee_test
|
|
||||||
POSTGRES_USER: fittrackee
|
|
||||||
POSTGRES_PASSWORD: fittrackee
|
|
||||||
POSTGRES_HOST: postgres
|
|
||||||
APP_SETTINGS: fittrackee.config.TestingConfig
|
|
||||||
DATABASE_TEST_URL: postgresql://fittrackee:fittrackee@postgres:5432/fittrackee_test
|
|
||||||
EMAIL_URL: smtp://none:none@0.0.0.0:1025
|
|
||||||
FLASK_APP: fittrackee/__main__.py
|
|
||||||
SENDER_EMAIL: fittrackee@example.com
|
|
||||||
|
|
||||||
services:
|
|
||||||
- name: postgres:latest
|
|
||||||
alias: postgres
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- lint
|
|
||||||
- tests
|
|
||||||
- selenium
|
|
||||||
|
|
||||||
.python:
|
|
||||||
stage: tests
|
|
||||||
before_script:
|
|
||||||
- pip install --quiet poetry
|
|
||||||
- poetry config virtualenvs.create false
|
|
||||||
- poetry install --no-interaction --quiet
|
|
||||||
script:
|
|
||||||
- pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing
|
|
||||||
|
|
||||||
|
|
||||||
.javascript:
|
|
||||||
stage: tests
|
|
||||||
before_script:
|
|
||||||
- apt-get update && apt-get install -y nodejs npm
|
|
||||||
- npm install --global yarn
|
|
||||||
- cd fittrackee_client
|
|
||||||
- yarn install
|
|
||||||
|
|
||||||
python-lint:
|
|
||||||
stage: lint
|
|
||||||
extends: .python
|
|
||||||
script:
|
|
||||||
- pytest --flake8 --isort --black -m "flake8 or isort or black" fittrackee e2e --ignore=fittrackee/migrations
|
|
||||||
|
|
||||||
python-type-check:
|
|
||||||
stage: lint
|
|
||||||
extends: .python
|
|
||||||
script:
|
|
||||||
- mypy fittrackee
|
|
||||||
|
|
||||||
eslint:
|
|
||||||
stage: lint
|
|
||||||
extends: .javascript
|
|
||||||
script:
|
|
||||||
- yarn lint
|
|
||||||
|
|
||||||
python-3.7:
|
|
||||||
extends: .python
|
|
||||||
image: python:3.7
|
|
||||||
|
|
||||||
python-3.8:
|
|
||||||
extends: .python
|
|
||||||
image: python:3.8
|
|
||||||
|
|
||||||
python-3.9:
|
|
||||||
extends: .python
|
|
||||||
|
|
||||||
python-3.10:
|
|
||||||
extends: .python
|
|
||||||
image: python:3.10
|
|
||||||
|
|
||||||
typescript:
|
|
||||||
stage: tests
|
|
||||||
before_script:
|
|
||||||
- apt-get update && apt-get install -y nodejs npm
|
|
||||||
- npm install --global yarn
|
|
||||||
- cd fittrackee_client
|
|
||||||
- yarn install
|
|
||||||
script:
|
|
||||||
- yarn test:unit
|
|
||||||
|
|
||||||
firefox:
|
|
||||||
stage: selenium
|
|
||||||
services:
|
|
||||||
- name: postgres:latest
|
|
||||||
alias: postgres
|
|
||||||
- name: selenium/standalone-firefox
|
|
||||||
alias: selenium
|
|
||||||
before_script:
|
|
||||||
- pip install --quiet poetry
|
|
||||||
- poetry config virtualenvs.create false
|
|
||||||
- poetry install --no-interaction --quiet
|
|
||||||
- flask db upgrade --directory fittrackee/migrations
|
|
||||||
- setsid nohup flask run --with-threads -h 0.0.0.0 -p 5000 >> nohup.out 2>&1 &
|
|
||||||
- export TEST_APP_URL=http://$(hostname --ip-address):5000
|
|
||||||
- sleep 5
|
|
||||||
script:
|
|
||||||
- pytest e2e --driver Remote --capability browserName firefox --host selenium --port 4444
|
|
@ -20,8 +20,6 @@ The **GitHub** repository contains:
|
|||||||
- tests,
|
- tests,
|
||||||
- documentation (source and build).
|
- documentation (source and build).
|
||||||
|
|
||||||
Continuous integration pipeline runs on **Gitlab CI**.
|
|
||||||
|
|
||||||
### How to install FitTrackee
|
### How to install FitTrackee
|
||||||
|
|
||||||
see [Installations instructions](https://samr1.github.io/FitTrackee/installation.html)
|
see [Installations instructions](https://samr1.github.io/FitTrackee/installation.html)
|
||||||
@ -54,12 +52,10 @@ Please make your changes from the development branch (`dev`).
|
|||||||
```shell
|
```shell
|
||||||
$ make check-all
|
$ make check-all
|
||||||
```
|
```
|
||||||
There are some end-to-end tests, to run them:
|
There are some end-to-end tests, to run them (needs a running application):
|
||||||
```shell
|
```shell
|
||||||
$ make test-e2e
|
$ make test-e2e
|
||||||
```
|
```
|
||||||
Note: For now, pull requests from forks don't trigger pipelines on GitLab CI (see [current issue](https://gitlab.com/gitlab-org/gitlab/-/issues/5667)).
|
|
||||||
So make sure that checks don't return errors locally.
|
|
||||||
|
|
||||||
* If needed, add or update tests.
|
* If needed, add or update tests.
|
||||||
|
|
||||||
@ -74,5 +70,7 @@ Please make your changes from the development branch (`dev`).
|
|||||||
|
|
||||||
* Ensure the pull requests description clearly describes the problem and solution. Include the relevant issue number if applicable.
|
* Ensure the pull requests description clearly describes the problem and solution. Include the relevant issue number if applicable.
|
||||||
|
|
||||||
|
* If needed, [update your branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch).
|
||||||
|
|
||||||
|
|
||||||
Thanks.
|
Thanks.
|
11
README.md
11
README.md
@ -9,9 +9,9 @@
|
|||||||
[![Vue Version](https://img.shields.io/badge/vue-3.2-brightgreen.svg)](https://v3.vuejs.org/)
|
[![Vue Version](https://img.shields.io/badge/vue-3.2-brightgreen.svg)](https://v3.vuejs.org/)
|
||||||
[![Typescript Version](https://img.shields.io/npm/types/typescript)](https://www.typescriptlang.org/)
|
[![Typescript Version](https://img.shields.io/npm/types/typescript)](https://www.typescriptlang.org/)
|
||||||
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
|
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
|
||||||
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/290a285f22e94132904dc13b4dd19d1d)](https://www.codacy.com/app/SamR1/FitTrackee)
|
![pipeline status](https://github.com/SamR1/FitTrackee/actions/workflows/.tests-python.yml/badge.svg?branch=master)
|
||||||
[![pipeline status](https://gitlab.com/SamR1/FitTrackee/badges/master/pipeline.svg)](https://gitlab.com/SamR1/FitTrackee/-/commits/master)
|
![pipeline status](https://github.com/SamR1/FitTrackee/actions/workflows/.tests-javascript.yml/badge.svg?branch=master)
|
||||||
[![coverage report](https://gitlab.com/SamR1/FitTrackee/badges/master/coverage.svg)](https://gitlab.com/SamR1/FitTrackee/-/commits/master) <sup><sup>1</sup></sup>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -30,8 +30,3 @@ It is also possible to add a workout without a gpx file.
|
|||||||
(see [issues](https://github.com/SamR1/FitTrackee/issues) and [documentation](https://samr1.github.io/FitTrackee) for more information)
|
(see [issues](https://github.com/SamR1/FitTrackee/issues) and [documentation](https://samr1.github.io/FitTrackee) for more information)
|
||||||
|
|
||||||
![FitTrackee Dashboard Screenshot](https://samr1.github.io/FitTrackee/_images/fittrackee_screenshot-01.png)
|
![FitTrackee Dashboard Screenshot](https://samr1.github.io/FitTrackee/_images/fittrackee_screenshot-01.png)
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
_1. Test coverage: only for Python API_
|
|
||||||
|
Loading…
Reference in New Issue
Block a user