Skip to content

Commit e55e421

Browse files
authored
Merge pull request #35 from kdschlosser/setting_up_ci
Adds CI testing
2 parents 32987f1 + c4add4c commit e55e421

34 files changed

+2164
-340
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2021 Ramesh
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# esp-idf-action
2+
3+
GitHub action to build ESP-IDF project using esp-idf framework. This action downloads the required ESP-IDF from espressif server and from github for latest branch. From `v2` introduced cache esp-idf and its tools based on esp-idf version
4+
5+
The `esp_idf_version` as follows
6+
- `latest` (master branch)
7+
- [ESP-IDF version list](https://github.com/espressif/esp-idf/tags)
8+
9+
**Note:**
10+
The action runs on ubuntu latest and python3 as default interpreter.
11+
12+
### Example
13+
14+
```yml
15+
# This is a esp idf workflow to build ESP32 based project
16+
17+
name: Build and Artifact the ESP-IDF Project
18+
19+
# Controls when the action will run.
20+
on:
21+
# Triggers the workflow on tag create like v1.0, v2.0.0 and so on
22+
push:
23+
tags:
24+
- 'v*'
25+
26+
# Allows you to run this workflow manually from the Actions tab
27+
workflow_dispatch:
28+
29+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
30+
jobs:
31+
# This workflow contains a single job called "build"
32+
build:
33+
# The type of runner that the job will run on
34+
runs-on: ubuntu-latest
35+
36+
- name: Install ESP-IDF and Build project
37+
uses: rmshub/esp-idf-action@v5
38+
with:
39+
esp_idf_version: v4.4.4
40+
esp_idf_target: esp32
41+
42+
- name: Archive build output artifacts
43+
uses: actions/upload-artifact@v3
44+
with:
45+
name: build
46+
path: |
47+
build/bootloader/bootloader.bin
48+
build/partition_table/partition-table.bin
49+
build/${{ github.event.repository.name }}.bin
50+
```
51+
52+
## Test
53+
54+
Currently this action verified with esp-idf v4.4.4
55+
56+
## License
57+
58+
This repository is licensed with the [MIT License](LICENSE).
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: 'ESP-IDF Project Build'
2+
author: 'rmshub'
3+
description: 'GitHub action to install ESP-IDF tools for building esp-idf projects'
4+
5+
branding:
6+
icon: 'box'
7+
color: 'orange'
8+
9+
inputs:
10+
fetch-depth:
11+
description: 'Number of commits to fetch. 0 indicates all history for all branches and tags'
12+
required: false
13+
default: '1'
14+
token:
15+
description: 'Personal access token (PAT) used to fetch the repository'
16+
required: false
17+
default: ${{ github.token }}
18+
submodules:
19+
description: 'Whether to checkout submodules: true to checkout submodules or recursive'
20+
required: false
21+
default: true
22+
esp_idf_version:
23+
description: 'ESP-IDF version'
24+
required: false
25+
default: 'v4.3'
26+
esp_idf_target:
27+
description: 'Sets the target (chip) for which the project is built'
28+
required: false
29+
default: 'esp32'
30+
31+
runs:
32+
using: "composite"
33+
steps:
34+
- name: Checkout the code
35+
uses: actions/checkout@v3
36+
with:
37+
fetch-depth: ${{ inputs.fetch-depth }}
38+
token: ${{ inputs.token }}
39+
submodules: ${{ inputs.submodules }}
40+
41+
- run: |
42+
cd
43+
44+
git clone --recursive https://github.com/espressif/esp-idf.git
45+
46+
sh ${{ github.action_path }}/install.sh ${{ inputs.esp_idf_version }}
47+
source ~/esp/esp-idf/export.sh
48+
idf.py set-target ${{ inputs.esp_idf_target }}
49+
shell: bash
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/bash
2+
3+
# esp idf repository version
4+
esp_idf_version="$1"
5+
6+
# Installing prerequisites
7+
echo "## Install prerequisites"
8+
9+
export DEBIAN_FRONTEND=noninteractive
10+
11+
sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util
12+
13+
# Making Python 3 the default interpreter
14+
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
15+
16+
# Create the esp directory for repo download
17+
mkdir ~/esp
18+
cd ~/esp
19+
20+
echo "## Download esp-idf repository"
21+
22+
case $esp_idf_version in
23+
latest)
24+
# Clone esp idf master branch repository
25+
git clone --recursive https://github.com/espressif/esp-idf.git
26+
;;
27+
*release*)
28+
git clone --recursive --depth=1 --shallow-submodules -b $esp_idf_version https://github.com/espressif/esp-idf.git
29+
;;
30+
*)
31+
# Download esp idf repository
32+
wget https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/$esp_idf_version/esp-idf-$esp_idf_version.zip
33+
34+
# Extract the files and rename folder
35+
unzip -q esp-idf-$esp_idf_version.zip && mv esp-idf-$esp_idf_version esp-idf
36+
rm -f esp-idf-$esp_idf_version.zip
37+
;;
38+
esac
39+
40+
# Navigate to esp idf repository
41+
cd ~/esp/esp-idf
42+
43+
# Installing tools
44+
echo "## Install esp-idf tools"
45+
46+
# Install required tools
47+
./install.sh

.github/workflows/macOS.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: macOS build
2+
on:
3+
push:
4+
pull_request:
5+
6+
jobs:
7+
build:
8+
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
9+
runs-on: macos-latest
10+
11+
steps:
12+
- uses: actions/checkout@v4
13+
- uses: ammaraskar/gcc-problem-matcher@master
14+
- uses: carlosperate/[email protected]
15+
with:
16+
release: '9-2019-q4' # The arm-none-eabi-gcc release to use.
17+
18+
- uses: actions/setup-python@v5
19+
with:
20+
python-version: '3.10'
21+
22+
- name: Install Dependencies
23+
run: brew install --force libffi ninja make
24+
25+
- name: get version
26+
run: |
27+
uname -a
28+
make --version
29+
gmake --version
30+
31+
- name: Build macOS port
32+
run: python3 make.py macOS submodules clean mpy_cross DISPLAY=sdl_display INDEV=sdl_pointer
33+
34+
- name: Build ESP32 port
35+
run: python3 make.py esp32 submodules clean mpy_cross BOARD=ESP32_GENERIC_S3 BOARD_VARIANT=SPIRAM_OCT DISPLAY=rgb_display INDEV=gt911
36+
37+
- name: Build STM32 port
38+
run: python3 make.py stm32 submodules clean mpy_cross BOARD=STM32H7B3I_DK DISPLAY=rgb_display INDEV=gt911
39+
40+
- name: Build Raspberry Pi PICO port
41+
run: python3 make.py rp2 submodules clean mpy_cross BOARD=RPI_PICO DISPLAY=rgb_display INDEV=gt911
42+
43+

.github/workflows/unix.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Unix build
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
build:
9+
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: ammaraskar/gcc-problem-matcher@master
15+
- uses: carlosperate/[email protected]
16+
with:
17+
release: '9-2019-q4' # The arm-none-eabi-gcc release to use.
18+
19+
- uses: actions/setup-python@v5
20+
with:
21+
python-version: '3.10'
22+
23+
- name: Install Deps
24+
run: sudo apt-get install --force-yes -y build-essential pkg-config cmake ninja-build libffi-dev gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev libpipewire-0.3-dev libwayland-dev libdecor-0-dev
25+
26+
- name: Build ESP32 port
27+
run: python3 make.py esp32 submodules clean mpy_cross BOARD=ESP32_GENERIC_S3 BOARD_VARIANT=SPIRAM_OCT DISPLAY=rgb_display INDEV=gt911
28+
29+
- name: Build STM32 port
30+
run: python3 make.py stm32 submodules clean mpy_cross BOARD=STM32H7B3I_DK DISPLAY=rgb_display INDEV=gt911
31+
32+
- name: Build Raspberry Pi PICO port
33+
run: python3 make.py rp2 submodules clean mpy_cross BOARD=RPI_PICO DISPLAY=rgb_display INDEV=gt911
34+
35+
- name: Build Unix port
36+
run: python3 make.py unix submodules clean mpy_cross DISPLAY=sdl_display INDEV=sdl_pointer
37+
38+
39+
40+
41+

.github/workflows/windows.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Windows build
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
build:
9+
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
10+
runs-on: windows-latest
11+
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: Cyberboss/install-winget@v1
15+
- uses: carlosperate/[email protected]
16+
with:
17+
release: '9-2019-q4' # The arm-none-eabi-gcc release to use.
18+
19+
# - uses: actions/setup-python@v5
20+
# with:
21+
# python-version: '3.10'
22+
23+
# - name: Install Dependencies
24+
# run: |
25+
# winget install --accept-source-agreements --accept-package-agreements ezwinports.make
26+
# python3 -m pip install pyMSVC requests
27+
28+
# - name: Build ESP32 port
29+
# run: python3 make.py esp32 submodules clean mpy_cross BOARD=ESP32_GENERIC_S3 BOARD_VARIANT=SPIRAM_OCT DISPLAY=rgb_display INDEV=gt911
30+
31+
# - name: Build STM32 port
32+
# run: python3 make.py stm32 submodules clean mpy_cross BOARD=STM32H7B3I_DK DISPLAY=rgb_display INDEV=gt911
33+
34+
# - name: Build Raspberry Pi PICO port
35+
# run: python3 make.py rp2 submodules clean mpy_cross BOARD=RPI_PICO DISPLAY=rgb_display INDEV=gt911
36+
37+
# - name: Build Windows port
38+
# run: python3 make.py windows submodules clean mpy_cross DISPLAY=sdl_display INDEV=sdl_pointer
39+
40+

0 commit comments

Comments
 (0)