Adds deployment+example test to CI

wch-ch32v003
Felix "xq" Queißner 8 months ago
parent 1643c30d7d
commit a4ac2d1858

@ -3,6 +3,7 @@ name: Continuous Integration
env:
# Specify the current Zig version MicroZig uses:
ZIG_VERSION: 0.11.0
DEPLOYMENT_URL: "https://download.microzig.tech"
on:
push:
@ -69,12 +70,22 @@ jobs:
run: |
pip install dataclasses_json==0.6.3 marshmallow typing-inspect semver pathspec
- name: Generate and validate packages
- name: Generate packages
run: |
./tools/bundle.py
./tools/bundle.py --debug
- name: Upload artifacts
uses: actions/upload-artifact@v4
- name: Spawn local web server
uses: Eun/http-server-action@v1
with:
name: packages
path: microzig-deploy/
directory: "${{ github.workspace }}/microzig-deploy"
port: 8080
content-types: |
{
"gz": "application/gzip",
"json": "application/json"
}
- name: Validate examples
run: |
mkdir -p "${{ github.workspace }}/microzig-test"
./tools/validate-all-examples.sh --build-root "${{ github.workspace }}/microzig-test"

@ -14,6 +14,7 @@ from dataclasses_json import dataclass_json, config as dcj_config, Exclude as J
from semver import Version
from marshmallow import fields
from enum import Enum as StrEnum
from argparse import ArgumentParser
import pathspec
import stat
import tarfile
@ -26,6 +27,9 @@ from typing import Optional, Any
from lib.common import execute_raw, execute, slurp, check_zig_version, check_required_tools
import lib.common as common
DEFAULT_DEPLOYMENT_BASE="https://download.microzig.tech/packages"
DEBUG_DEPLOYMENT_BASE="http://localhost:8080"
LEGAL_PACKAGE_NAME = re.compile("^[A-Za-z]$")
VERBOSE = False
@ -34,8 +38,7 @@ REQUIRED_TOOLS = [
"zig",
"git",
]
# DEPLOYMENT_BASE="https://download.microzig.tech/packages"
DEPLOYMENT_BASE="https://public.devspace.random-projects.net"
REPO_ROOT = Path(__file__).parent.parent
assert REPO_ROOT.is_dir()
@ -230,6 +233,17 @@ def get_batch_timestamp():
def main():
arg_parser = ArgumentParser()
arg_parser.add_argument("--base-url", type=str, required=False, default=DEFAULT_DEPLOYMENT_BASE, help="Sets the download URL for the packages.")
arg_parser.add_argument("--debug", action="store_true", required=False, default=False, help="Creates a deployment for local development, hosted by localhost:8080")
cli_args = arg_parser.parse_args()
base_url = cli_args.base_url if not cli_args.debug else DEBUG_DEPLOYMENT_BASE
check_required_tools(REQUIRED_TOOLS)
check_zig_version("0.11.0")
@ -326,7 +340,7 @@ def main():
assert False
download_path = pkg.out_rel_dir / ALL_FILES_DIR / f"{pkg.out_basename}-{version}.tar.gz"
pkg.download_url = f"{DEPLOYMENT_BASE}/{download_path}"
pkg.download_url = f"{base_url}/{download_path}"
buildzig_path = pkg_dir / "build.zig"
buildzon_path = pkg_dir / "build.zig.zon"

@ -3,12 +3,9 @@
set -e
root="$(dirname "$(realpath "$0")")"
tmpdir="/tmp/microzig-test"
mkdir -p "${tmpdir}"
examples="espressif/esp stmicro/stm32 nordic/nrf5x gigadevice/gd32 raspberrypi/rp2040 nxp/lpc microchip/atsam" # microchip/avr (does not build with 0.11)
for key in ${examples}; do
"${root}/validate-example.py" --build-root "${tmpdir}" --example "$key"
"${root}/validate-example.py" --example "$key" "$@"
done

@ -8,6 +8,7 @@ import sys
import shutil
REQUIRED_TOOLS = ["zig", "curl", "tar", "gunzip"]
DEBUG_DEPLOYMENT_BASE="http://localhost:8080"
def main():
@ -20,10 +21,13 @@ def main():
parser.add_argument("--example", type=PurePosixPath, required=True)
parser.add_argument("--build-root", type=Path, required=True)
parser.add_argument("--base-url", type=str, required=False, default=DEBUG_DEPLOYMENT_BASE, help="Sets the download URL for the packages.")
args = parser.parse_args()
example_id: PurePosixPath = args.example
build_root: Path = args.build_root
base_url: str = args.base_url
if len(example_id.parents) != 2 or str(example_id.parents[1]) != ".":
print(f"example must be <group>/<id>", file=sys.stderr)
@ -41,7 +45,7 @@ def main():
"curl",
"-o",
f"{example_name}.tar.gz",
f"https://public.devspace.random-projects.net/examples/{example_group}/{example_name}.tar.gz",
f"{base_url}/examples/{example_group}/{example_name}.tar.gz",
cwd=build_root,
)

Loading…
Cancel
Save