Skip to content

Commit 1c05c21

Browse files
authored
Merge pull request #152 from PaulMartinsen/2023-05-UpdateReadme
Updated readme
2 parents 62f77df + 75d6299 commit 1c05c21

File tree

1 file changed

+43
-21
lines changed

1 file changed

+43
-21
lines changed

README.md

+43-21
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,78 @@
11
# Arduino CI Scripts
22

3-
This repos contains various scripts and tools related to running
4-
continuous integration (CI) checks on Arduino Library Repos.
3+
This repos contains various scripts and tools related to running continuous integration (CI) checks on Arduino Library Repos. The operations include:
4+
5+
* checking formatting using using [clang-format](https://clang.llvm.org/docs/ClangFormat.html),
6+
* generating documentation from source comments using using [Doxygen](https://www.doxygen.nl/), and
7+
* building each example in the library for selected targets.
58

69
There is an associated guide available here:
710
https://learn.adafruit.com/the-well-automated-arduino-library/
811

912
## Adding GitHub Actions to Repo
1013

14+
To run these continuous integration checks on each push, pull-request or [repository dispatch](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#create-a-repository-dispatch-event) using [GitHub actions](https://github.com/features/actions):
15+
1116
* Create a folder named `.github/worflows` in the root of the repo.
1217
* Copy `example_actions.yml` into the above directory and rename it `githubci.yml`.
13-
* Edit `githubci.yml` and change `PRETTYNAME` to the library repo name.
18+
* Edit `githubci.yml` and change `PRETTYNAME` to the library repo name. Optionally, delete or comment out steps (using the `#` character), you don't want to include.
1419
* Here's an example: [Adafruit_BME280_Library](https://github.com/adafruit/Adafruit_BME280_Library/blob/master/.github/workflows/githubci.yml)
15-
* These actions will now run automatically on any pull, push, or dispatch.
1620

1721
## Controlling Test Behavior
1822

19-
The `build_platform.py` script is used to test each `.ino` example in the repo for the
20-
selected build platforms. The `ALL_PLATFORMS` dictionary contains a listing of all
21-
available platforms. By default, `main_platforms` is used. Additionally, UF2 files
22-
of the compiled sketches can be generated for supported platforms. The behavior
23-
can be controlled using special hidden filenames. These are just empty files
24-
placed in the root folder:
23+
The `build_platform.py` script is used to test each `.ino` example in the repo for selected build platforms. The [`ALL_PLATFORMS`](ci-arduino/blob/master/build_platform.py#L54) dictionary contains a listing of all available platforms and selected platform groups. By default, `main_platforms` is used. To select a specific platform or group, replace `main_platforms` in [`githubci.yml`](`example_actions.yml`) with the group or platform name.
24+
25+
Additionally, [UF2 files](https://github.com/microsoft/uf2) of the compiled sketches can be generated for supported platforms.
26+
27+
### Fine tuning test selection
2528

26-
* `.YOUR_PLATFORM_HERE.test.skip` - Skip the specified platform. All others are tested.
27-
* `.YOUR_PLATFORM_HERE.test.only` - Test only the specfied platform. All others are skipped.
28-
* `.YOUR_PLATFORM_HERE.generate` - Generate UF2 of sketch for specified platform (if supported).
29+
The script behavior can be controlled using special filenames:
2930

30-
Replace `YOUR_PLATFORM_HERE` in the name with exact text from `ALL_PLATFORMS`.
31+
* `.PLATFORM_ID.test.skip` - Skip the specified platform. All others are tested.
32+
* `.PLATFORM_ID.test.only` - Test the specified platform. All others are skipped.
33+
* `.PLATFORM_ID.generate` - Generate UF2 of sketch for specified platform (if supported).
34+
35+
These are just empty files placed in an example folder. Replace `PLATFORM_ID` in the name with the key from [`ALL_PLATFORMS`](ci-arduino/blob/master/build_platform.py#L54). `metro_m0` from the following line in `build_platform.py`, for example:
36+
37+
```python
38+
"metro_m0" : ["adafruit:samd:adafruit_metro_m0", "0x68ed2b88", None],
39+
```
3140

32-
### Examples
41+
You can use several `.PLATFORM_ID.test.skip` or `.PLATFORM_ID.test.only` to exclude or include multiple platforms. For example:
3342

3443
* To **skip** testing on ESP8266, add a file named `.esp8266.test.skip`
3544
* To test **only** the Arduino UNO, add a file named `.uno.test.only`
3645
* To skip all and test **nothing**, add a file named `.none.test.only`
3746
* To generate UF2s for PyPortal, add a file named `.pyportal.generate`
3847

48+
### Dependencies
49+
50+
Any library dependencies included in the [`library.properties`](https://arduino.github.io/arduino-cli/0.19/library-specification/#libraryproperties-file-format) are automatically installed before the tests are started. To install additional dependencies (e.g., those required for some examples but not the library itself) using [`arduino-cli`](https://arduino.github.io/arduino-cli/0.19/commands/arduino-cli_lib_install/), you could add additional steps to the `githubci.yml` file. For example:
51+
52+
```yaml
53+
- name: Set configuration
54+
run: arduino-cli config set library.enable_unsafe_install true
55+
56+
- name: Install test dependencies
57+
run: arduino-cli lib install --git-url https://github.com/arduino-libraries/Servo --git-url https://github.com/arduino-libraries/Ethernet
58+
```
59+
60+
Note: you'll only need to enable the [`enable_unsafe_install`](https://arduino.github.io/arduino-cli/0.32/configuration/#configuration-keys) option if you want to identify libraries using urls. This isn't necessary when using the library name.
61+
3962
## Formatting Check with Clang
4063

41-
The `run-clang-format.py` script is used to run ClangFormat and check file formatting.
64+
The `run-clang-format.py` script is used to run [clang-format](https://clang.llvm.org/docs/ClangFormat.html) and check file formatting.
4265
See [the guide](https://learn.adafruit.com/the-well-automated-arduino-library/formatting-with-clang-format) for details on installing `clang-format` to run formatting locally.
4366
Even a single extra white space can cause the CI to fail on formatting.
4467
You can typically just let clang do its thing and edit files in place using:
68+
4569
```
4670
clang-format -i File_To_Format.cpp
4771
```
4872

4973
## Documentation with Doxygen
5074

51-
The `doxy_gen_and_deploy.sh` script uses Doxygen to generate and deploy documentation
75+
The `doxy_gen_and_deploy.sh` script uses [Doxygen](https://www.doxygen.nl/) to generate and deploy documentation
5276
for the library. Any issues, like missing documentation, will cause the CI to fail.
53-
See the [the guide](https://learn.adafruit.com/the-well-automated-arduino-library/doxygen)
54-
for details on installing and running doxygen locally. The guide also has some
55-
[tips](https://learn.adafruit.com/the-well-automated-arduino-library/doxygen-tips)
56-
on basic usage of doxygen markup within your code.
77+
See the [the guide](https://learn.adafruit.com/the-well-automated-arduino-library/doxygen) for details on installing and running doxygen locally. The guide also has some
78+
[tips](https://learn.adafruit.com/the-well-automated-arduino-library/doxygen-tips) on basic usage of doxygen markup within your code.

0 commit comments

Comments
 (0)