Merge pull request #60 from lora-aprs/refactor-github-build
refactor scripts and version
This commit is contained in:
commit
9cf7d58d2a
10 changed files with 258 additions and 77 deletions
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: bug
|
||||||
|
assignees: peterus
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- OS:
|
||||||
|
- PlatformIO Version:
|
||||||
|
- Firmware Version:
|
||||||
|
|
||||||
|
**Board name:**
|
||||||
|
-
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: enhancement
|
||||||
|
assignees: peterus
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
60
.github/workflows/buid_check.yml
vendored
Normal file
60
.github/workflows/buid_check.yml
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
name: Integreation Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
- '!master'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Compile Firmware
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
- name: Install PlatformIO
|
||||||
|
run: python -m pip install --upgrade pip platformio
|
||||||
|
- name: Run PlatformIO CI
|
||||||
|
run: platformio run
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: firmware
|
||||||
|
path: .pio/build/*/firmware.bin
|
||||||
|
|
||||||
|
formatting-check:
|
||||||
|
name: Formatting Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run clang-format style check for C/C++ programs.
|
||||||
|
uses: jidicula/clang-format-action@v4.6.2
|
||||||
|
with:
|
||||||
|
clang-format-version: '11'
|
||||||
|
check-path: src
|
||||||
|
|
||||||
|
cppcheck:
|
||||||
|
name: Run cppcheck
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
CPPCHECK_ARGS: --enable=all --std=c++14 --inline-suppr src
|
||||||
|
steps:
|
||||||
|
- name: checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- run: docker pull facthunder/cppcheck:latest
|
||||||
|
- name: Run cppcheck and print result
|
||||||
|
run: docker run --rm -v ${PWD}:/src facthunder/cppcheck:latest /bin/bash -c "cppcheck $CPPCHECK_ARGS"
|
||||||
|
- name: Run cppcheck and create html
|
||||||
|
run: docker run --rm -v ${PWD}:/src facthunder/cppcheck:latest /bin/bash -c "cppcheck --xml $CPPCHECK_ARGS 2> report.xml && cppcheck-htmlreport --file=report.xml --report-dir=output"
|
||||||
|
- name: Upload report
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: Cppcheck Report
|
||||||
|
path: output
|
69
.github/workflows/main.yml
vendored
69
.github/workflows/main.yml
vendored
|
@ -1,69 +0,0 @@
|
||||||
|
|
||||||
name: check and build
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
PlatformIO-Check:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Cache pip
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.cache/pip
|
|
||||||
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
|
||||||
restore-keys: ${{ runner.os }}-pip-
|
|
||||||
- name: Cache PlatformIO
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.platformio
|
|
||||||
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v2
|
|
||||||
- name: Install PlatformIO
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install --upgrade platformio
|
|
||||||
- name: Run PlatformIO Check
|
|
||||||
run: platformio check --fail-on-defect low --fail-on-defect medium --fail-on-defect high
|
|
||||||
|
|
||||||
PlatformIO-Build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Cache pip
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.cache/pip
|
|
||||||
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
|
||||||
restore-keys: ${{ runner.os }}-pip-
|
|
||||||
- name: Cache PlatformIO
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.platformio
|
|
||||||
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v2
|
|
||||||
- name: Install PlatformIO
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install --upgrade platformio
|
|
||||||
- name: Run PlatformIO CI
|
|
||||||
run: platformio run
|
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: firmware
|
|
||||||
path: .pio/build/*/firmware.bin
|
|
||||||
|
|
||||||
formatting-check:
|
|
||||||
name: Formatting Check
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Run clang-format style check for C/C++ programs.
|
|
||||||
uses: jidicula/clang-format-action@v4.6.2
|
|
||||||
with:
|
|
||||||
clang-format-version: '11'
|
|
||||||
check-path: src
|
|
39
.github/workflows/release.yml
vendored
Normal file
39
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
name: Create new release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
version_check:
|
||||||
|
name: Version Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
- run: pip install GitPython
|
||||||
|
- name: check version
|
||||||
|
run: ./scripts/check_version.py
|
||||||
|
|
||||||
|
create_release:
|
||||||
|
needs: version_check
|
||||||
|
name: Create new release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- run: sudo apt-get install python3-setuptools python3-wheel
|
||||||
|
- run: pip3 install platformio
|
||||||
|
- run: echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||||
|
- run: platformio run
|
||||||
|
- run: echo "VERSION=$(./scripts/create_version_tag.py)" >> $GITHUB_ENV
|
||||||
|
- uses: ncipollo/release-action@v1
|
||||||
|
with:
|
||||||
|
tag: ${{ env.VERSION }}
|
||||||
|
commit: master
|
||||||
|
generateReleaseNotes: true
|
||||||
|
artifacts: ".pio/build/lora_board/firmware.bin,data/is-cfg.json"
|
||||||
|
owner: ${{ secrets.OWNER }}
|
||||||
|
token: ${{ secrets.PAT }}
|
19
.github/workflows/tweet_release.yml
vendored
Normal file
19
.github/workflows/tweet_release.yml
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
name: tweet-release
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tweet:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: Eomm/why-don-t-you-tweet@v1
|
||||||
|
if: ${{ !github.event.repository.private }}
|
||||||
|
with:
|
||||||
|
tweet-message: "New ${{ github.event.repository.name }} release ${{ github.event.release.tag_name }}! ${{ github.event.release.html_url }} #LoRa #APRS #HAM #hamradio #Tracker"
|
||||||
|
env:
|
||||||
|
TWITTER_CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }}
|
||||||
|
TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
|
||||||
|
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
|
||||||
|
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
|
6
.vscode/extensions.json
vendored
6
.vscode/extensions.json
vendored
|
@ -2,6 +2,10 @@
|
||||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||||
// for the documentation about the extensions.json format
|
// for the documentation about the extensions.json format
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"platformio.platformio-ide"
|
"platformio.platformio-ide",
|
||||||
|
"xaver.clang-format"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"ms-vscode.cpptools-extension-pack"
|
||||||
]
|
]
|
||||||
}
|
}
|
49
scripts/check_version.py
Executable file
49
scripts/check_version.py
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import git
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
today = date.today()
|
||||||
|
|
||||||
|
current_year = int(str(today.isocalendar()[0])[2:])
|
||||||
|
current_week = int(today.isocalendar()[1])
|
||||||
|
|
||||||
|
version = None
|
||||||
|
with open("src/LoRa_APRS_Tracker.cpp") as f:
|
||||||
|
for line in f:
|
||||||
|
if line.startswith("#define VERSION"):
|
||||||
|
version = line.strip().split(" ")[-1].replace('"', "")
|
||||||
|
|
||||||
|
version_split = version.split(".")
|
||||||
|
version_year = int(version_split[0])
|
||||||
|
version_week = int(version_split[1])
|
||||||
|
version_vers = int(version_split[2])
|
||||||
|
|
||||||
|
print(f"[INFO] firmware version year: {version_year}")
|
||||||
|
print(f"[INFO] firmware version week: {version_week}")
|
||||||
|
print(f"[INFO] firmware version version: {version_vers}")
|
||||||
|
print(f"[INFO] -> {version}")
|
||||||
|
|
||||||
|
print(f"[INFO] current year: {current_year}")
|
||||||
|
print(f"[INFO] current week: {current_week}")
|
||||||
|
print(f"[INFO] -> {current_year}.{current_week}.x")
|
||||||
|
|
||||||
|
error = False
|
||||||
|
if version_year != current_year:
|
||||||
|
print("[ERROR] firmware version is not current year!")
|
||||||
|
error = True
|
||||||
|
|
||||||
|
if version_week != current_week:
|
||||||
|
print("[ERROR] firmware version is not current week!")
|
||||||
|
error = True
|
||||||
|
|
||||||
|
repo = git.Repo('.')
|
||||||
|
print(f"[INFO] found {len(repo.tags)} tags in repo")
|
||||||
|
if f"v{version}" in repo.tags:
|
||||||
|
print("[ERROR] tag with this version is already existing")
|
||||||
|
error = True
|
||||||
|
|
||||||
|
if error:
|
||||||
|
print("[ERROR] check/update VERSION define in src/LoRa_APRS_iGate.cpp to fix this issue")
|
||||||
|
|
||||||
|
exit(error)
|
21
scripts/create_version_tag.py
Executable file
21
scripts/create_version_tag.py
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
today = date.today()
|
||||||
|
|
||||||
|
current_year = int(str(today.isocalendar()[0])[2:])
|
||||||
|
current_week = int(today.isocalendar()[1])
|
||||||
|
|
||||||
|
version = None
|
||||||
|
with open("src/LoRa_APRS_iGate.cpp") as f:
|
||||||
|
for line in f:
|
||||||
|
if line.startswith("#define VERSION"):
|
||||||
|
version = line.strip().split(" ")[-1].replace('"', "")
|
||||||
|
|
||||||
|
version_split = version.split(".")
|
||||||
|
version_year = int(version_split[0])
|
||||||
|
version_week = int(version_split[1])
|
||||||
|
version_vers = int(version_split[2])
|
||||||
|
|
||||||
|
print(f"v{version_year}.{version_week}.{version_vers}")
|
|
@ -13,6 +13,8 @@
|
||||||
#include "pins.h"
|
#include "pins.h"
|
||||||
#include "power_management.h"
|
#include "power_management.h"
|
||||||
|
|
||||||
|
#define VERSION "22.19.0"
|
||||||
|
|
||||||
Configuration Config;
|
Configuration Config;
|
||||||
BeaconManager BeaconMan;
|
BeaconManager BeaconMan;
|
||||||
|
|
||||||
|
@ -75,9 +77,10 @@ void setup() {
|
||||||
|
|
||||||
delay(500);
|
delay(500);
|
||||||
logPrintlnI("LoRa APRS Tracker by OE5BPA (Peter Buchegger)");
|
logPrintlnI("LoRa APRS Tracker by OE5BPA (Peter Buchegger)");
|
||||||
|
logPrintlnI("Version: " VERSION);
|
||||||
setup_display();
|
setup_display();
|
||||||
|
|
||||||
show_display("OE5BPA", "LoRa APRS Tracker", "by Peter Buchegger", 2000);
|
show_display("OE5BPA", "LoRa APRS Tracker", "by Peter Buchegger", "Version: " VERSION, 2000);
|
||||||
load_config();
|
load_config();
|
||||||
|
|
||||||
setup_gps();
|
setup_gps();
|
||||||
|
|
Loading…
Reference in a new issue