Skip to content

Commit cb8bc18

Browse files
committed
feat(docs): Enhance documentation build process with environment variable configuration
1 parent 4cd9a70 commit cb8bc18

File tree

5 files changed

+72
-28
lines changed

5 files changed

+72
-28
lines changed

.github/scripts/docs_build_examples.py

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,34 @@
3535

3636
SCRIPT_DIR = Path(__file__).resolve().parent
3737

38+
env_config_keys = [
39+
"DOCS_EMBED_PUBLIC_ROOT",
40+
"DOCS_EMBED_GITHUB_BASE_URL",
41+
"DOCS_EMBED_BINARIES_DIR",
42+
]
43+
44+
# load environment variables
45+
env_config = {}
46+
for key in env_config_keys:
47+
value = os.environ.get(key)
48+
if value is None:
49+
raise EnvironmentError(f"{key} environment variable is not set")
50+
env_config[key] = value
51+
52+
53+
if env_config.get("DOCS_EMBED_BINARIES_DIR"):
54+
DOCS_EMBED_BINARIES_PATH = Path(f"docs/{env_config['DOCS_EMBED_BINARIES_DIR']}")
55+
3856
ARDUINO_ESP32_PATH = os.environ.get("ARDUINO_ESP32_PATH")
3957
GITHUB_WORKSPACE = os.environ.get("GITHUB_WORKSPACE")
40-
STORAGE_URL_PREFIX = os.environ.get("STORAGE_URL_PREFIX")
41-
REPO_URL_PREFIX = os.environ.get("REPO_URL_PREFIX")
4258

4359
if ARDUINO_ESP32_PATH and (Path(ARDUINO_ESP32_PATH) / "tools" / "esp32-arduino-libs").is_dir():
4460
SDKCONFIG_DIR = Path(ARDUINO_ESP32_PATH) / "tools" / "esp32-arduino-libs"
4561
elif GITHUB_WORKSPACE and (Path(GITHUB_WORKSPACE) / "tools" / "esp32-arduino-libs").is_dir():
4662
SDKCONFIG_DIR = Path(GITHUB_WORKSPACE) / "tools" / "esp32-arduino-libs"
4763
else:
48-
SDKCONFIG_DIR = Path("tools/esp32-arduino-libs")
64+
raise EnvironmentError("Could not locate esp32-arduino-libs directory. "
65+
"Set ARDUINO_ESP32_PATH or GITHUB_WORKSPACE environment variable.")
4966

5067
KEEP_FILES = [
5168
"*.merged.bin",
@@ -56,8 +73,6 @@
5673
]
5774

5875
SKETCH_UTILS = SCRIPT_DIR / "sketch_utils.sh"
59-
DOCS_BINARIES_DIR = Path("docs/_static/binaries")
60-
6176

6277
def detect_arduino_paths():
6378
"""Get Arduino CLI and user paths from environment variables set by install-arduino-cli.sh
@@ -269,11 +284,11 @@ def cleanup_binaries():
269284
Removes all files except those matching patterns in KEEP_FILES.
270285
Also removes empty directories after cleanup.
271286
"""
272-
print(f"Cleaning up binaries directory: {DOCS_BINARIES_DIR}")
273-
if not DOCS_BINARIES_DIR.exists():
287+
print(f"Cleaning up binaries directory: {DOCS_EMBED_BINARIES_PATH}")
288+
if not DOCS_EMBED_BINARIES_PATH.exists():
274289
print("Binaries directory does not exist, nothing to clean")
275290
return
276-
for root, dirs, files in os.walk(DOCS_BINARIES_DIR):
291+
for root, dirs, files in os.walk(DOCS_EMBED_BINARIES_PATH):
277292
for fname in files:
278293
fpath = Path(root) / fname
279294
parent = Path(root).name
@@ -292,7 +307,7 @@ def cleanup_binaries():
292307
else:
293308
print(f"Keeping: {fpath}")
294309
# remove empty dirs
295-
for root, dirs, files in os.walk(DOCS_BINARIES_DIR, topdown=False):
310+
for root, dirs, files in os.walk(DOCS_EMBED_BINARIES_PATH, topdown=False):
296311
if not os.listdir(root):
297312
try:
298313
os.rmdir(root)
@@ -356,7 +371,7 @@ def build_example_for_target(sketch_dir, target, relative_path, args):
356371
bool: True if build succeeded, False otherwise
357372
"""
358373
print(f"\n > Building example: {relative_path} for target: {target}")
359-
output_dir = DOCS_BINARIES_DIR / relative_path / target
374+
output_dir = DOCS_EMBED_BINARIES_PATH / relative_path / target
360375
output_dir.mkdir(parents=True, exist_ok=True)
361376

362377
sdkconfig = SDKCONFIG_DIR / target / 'sdkconfig'
@@ -405,13 +420,13 @@ def build_all_examples(args):
405420
total_built = 0
406421
total_failed = 0
407422

408-
if DOCS_BINARIES_DIR.exists():
409-
shutil.rmtree(DOCS_BINARIES_DIR)
410-
print(f"Removed existing build directory: {DOCS_BINARIES_DIR}")
423+
if DOCS_EMBED_BINARIES_PATH.exists():
424+
shutil.rmtree(DOCS_EMBED_BINARIES_PATH)
425+
print(f"Removed existing build directory: {DOCS_EMBED_BINARIES_PATH}")
411426

412427
# add gitignore to binaries dir with * for new files
413-
DOCS_BINARIES_DIR.mkdir(parents=True, exist_ok=True)
414-
gitignore_path = DOCS_BINARIES_DIR / '.gitignore'
428+
DOCS_EMBED_BINARIES_PATH.mkdir(parents=True, exist_ok=True)
429+
gitignore_path = DOCS_EMBED_BINARIES_PATH / '.gitignore'
415430
gitignore_path.write_text("*\n")
416431

417432
examples = find_examples_with_upload_binary()
@@ -444,7 +459,7 @@ def build_all_examples(args):
444459
else:
445460
total_failed += 1
446461

447-
output_sketch_dir = DOCS_BINARIES_DIR / relative_path
462+
output_sketch_dir = DOCS_EMBED_BINARIES_PATH / relative_path
448463
output_sketch_dir.mkdir(parents=True, exist_ok=True)
449464

450465
# copy sketch ci.yml to output dir - parent of target dirs
@@ -455,15 +470,20 @@ def build_all_examples(args):
455470
if args.generate_launchpad_config:
456471
print(f"Generating LaunchPad config for {relative_path}/{target}...")
457472
try:
458-
sync = DiagramSync(output_sketch_dir / target)
459-
sync.generate_launchpad_config(STORAGE_URL_PREFIX, REPO_URL_PREFIX, True, output_sketch_dir)
473+
sync = DiagramSync(output_sketch_dir)
474+
sync.generate_launchpad_config(
475+
env_config['DOCS_EMBED_PUBLIC_ROOT'],
476+
env_config['DOCS_EMBED_GITHUB_BASE_URL'],
477+
True,
478+
output_sketch_dir
479+
)
460480
except Exception as e:
461481
print(f"WARNING: Failed to generate LaunchPad config for {relative_path}/{target}: {e}")
462482

463483
print('\nBuild summary:')
464484
print(f" Successfully built: {total_built}")
465485
print(f" Failed builds: {total_failed}")
466-
print(f" Output directory: {DOCS_BINARIES_DIR}")
486+
print(f" Output directory: {DOCS_EMBED_BINARIES_PATH}")
467487
return total_failed
468488

469489

.github/workflows/docs_build.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,19 @@ jobs:
5555
cd ./docs
5656
PATH=/home/runner/.local/bin:$PATH pip3 install -r requirements.txt --prefer-binary
5757
58-
# Build examples using environment variables from install script
58+
# Set documentation embedding environment variables
59+
- name: Set Documentation Environment Variables
60+
run: |
61+
# configure env vars for docs_build_examples.py and docs build
62+
echo "DOCS_EMBED_GITHUB_BASE_URL=https://github.com/${{ github.repository }}" >> $GITHUB_ENV
63+
echo "DOCS_EMBED_GITHUB_BRANCH=${{ github.ref_name }}" >> $GITHUB_ENV
64+
echo "DOCS_EMBED_PUBLIC_ROOT=https://${{ secrets.DOCS_SERVER }}/${{ secrets.DOCS_PATH }}/en/${{ github.ref_name == 'master' && 'latest' || github.ref_name }}/" >> $GITHUB_ENV
65+
echo "DOCS_EMBED_BINARIES_DIR=${{ vars.DOCS_EMBED_BINARIES_DIR }}" >> $GITHUB_ENV
66+
echo "DOCS_EMBED_LAUNCHPAD_URL=${{ vars.DOCS_EMBED_LAUNCHPAD_URL }}" >> $GITHUB_ENV
67+
echo "DOCS_EMBED_WOKWI_VIEWER_URL=${{ vars.DOCS_EMBED_WOKWI_VIEWER_URL }}" >> $GITHUB_ENV
68+
echo "DOCS_EMBED_ABOUT_WOKWI_URL=${{ vars.DOCS_EMBED_ABOUT_WOKWI_URL }}" >> $GITHUB_ENV
69+
70+
# Build examples using environment variables from install script
5971
- name: Build Examples
6072
run: |
6173
PATH=/home/runner/.local/bin:$PATH python3 .github/scripts/docs_build_examples.py --build --diagram --launchpad

.github/workflows/docs_deploy.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,19 @@ jobs:
6363
cd ./docs
6464
PATH=/home/runner/.local/bin:$PATH pip3 install -r requirements.txt --prefer-binary
6565
66-
# Build examples using environment variables from install script
66+
# Set documentation embedding environment variables
67+
- name: Set Documentation Environment Variables
68+
run: |
69+
# configure env vars for docs_build_examples.py and docs deployment
70+
echo "DOCS_EMBED_GITHUB_BASE_URL=https://github.com/${{ github.repository }}" >> $GITHUB_ENV
71+
echo "DOCS_EMBED_GITHUB_BRANCH=${{ github.ref_name }}" >> $GITHUB_ENV
72+
echo "DOCS_EMBED_PUBLIC_ROOT=https://${{ secrets.DOCS_SERVER }}/${{ secrets.DOCS_PATH }}/en/${{ github.ref_name == 'master' && 'latest' || github.ref_name }}/" >> $GITHUB_ENV
73+
echo "DOCS_EMBED_BINARIES_DIR=${{ vars.DOCS_EMBED_BINARIES_DIR }}" >> $GITHUB_ENV
74+
echo "DOCS_EMBED_LAUNCHPAD_URL=${{ vars.DOCS_EMBED_LAUNCHPAD_URL }}" >> $GITHUB_ENV
75+
echo "DOCS_EMBED_WOKWI_VIEWER_URL=${{ vars.DOCS_EMBED_WOKWI_VIEWER_URL }}" >> $GITHUB_ENV
76+
echo "DOCS_EMBED_ABOUT_WOKWI_URL=${{ vars.DOCS_EMBED_ABOUT_WOKWI_URL }}" >> $GITHUB_ENV
77+
78+
# Build examples using environment variables from install script
6779
- name: Build Examples
6880
run: |
6981
PATH=/home/runner/.local/bin:$PATH python3 .github/scripts/docs_build_examples.py --build --diagram --launchpad

docs/en/conf.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
google_analytics_id = "G-F58JM78930"
3434

3535
# Documentation embedding settings
36-
docs_embed_public_root = "https://docs.espressif.com/projects/arduino-esp32-wokwi-test"
37-
docs_embed_esp32_relative_root = "../.."
38-
docs_embed_launchpad_url = "https://espressif.github.io/esp-launchpad/"
39-
docs_embed_github_base_url = "https://github.com/JakubAndrysek/arduino-esp32"
40-
docs_embed_github_branch = "docs-embed"
36+
# docs_embed_public_root = "https://docs.espressif.com/projects/arduino-esp32-wokwi-test"
37+
# docs_embed_esp32_relative_root = "../.."
38+
# docs_embed_launchpad_url = "https://espressif.github.io/esp-launchpad/"
39+
# docs_embed_github_base_url = "https://github.com/JakubAndrysek/arduino-esp32"
40+
# docs_embed_github_branch = "docs-embed"

libraries/ESP32/examples/GPIO/Blink/Blink.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#define LED 12
2-
#define BUTTON 2
1+
#define LED 4
2+
#define BUTTON 0
33

44
uint8_t stateLED = 0;
55

0 commit comments

Comments
 (0)