-
Notifications
You must be signed in to change notification settings - Fork 0
98 lines (85 loc) · 3.37 KB
/
ota-deploy.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
name: Build & OTA Deploy
run-name: ${{ inputs.run_name }}
env:
DEFAULT_PYTHON: 3.8
# These parameters are used for OTA payload upload and release deployment
MEMFAULT_PROJECT: thingy91-fleet
MEMFAULT_ORG: memfault
HARDWARE_VERSION: thingy91
SOFTWARE_VERSION: "$(date --iso-8601 | tr - .).${GITHUB_RUN_ID}"
SOFTWARE_TYPE: nrf91ns-fw
COHORT: auto-ota
on:
push:
branches:
- main
workflow_dispatch:
inputs:
run_name:
description: "Name of run to identify it from other runs"
required: false
type: string
jobs:
ota-deploy:
runs-on: ubuntu-latest
# Image generated from: https://github.com/memfault/memfault-port-playground/tree/master/docker/nrf-connect-sdk
container:
image: memfault/nrf-connect-sdk:2024-01-05
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Install Zephyr SDK as CMake package
run: |
${ZEPHYR_SDK_INSTALL_DIR}/setup.sh -c
- name: Build OTA payload
run: |
cd $GITHUB_WORKSPACE
cd ../
python -m venv venv
. venv/bin/activate
pip install -U pip==21.1
pip install west==1.2.0 memfault-cli==1.0.4
west init -l memfault-asset-tracker
west update --narrow -o=--depth=1 -o=--recurse-submodules --path-cache ~/zephyr-thingy91-path-cache
pip install -r zephyr/scripts/requirements.txt
pip install -r nrf/scripts/requirements-build.txt
west build -b thingy91/nrf9160/ns -p always memfault-asset-tracker -- \
-DCONFIG_MEMFAULT_NCS_PROJECT_KEY=\"${{ secrets.THINGY91_OTA_PROJECT_KEY }}\" \
-DOVERLAY_CONFIG=overlay-memfault.conf \
-DCONFIG_MEMFAULT_NCS_FW_VERSION_STATIC=y \
-DCONFIG_MEMFAULT_NCS_FW_VERSION=\"${{ env.SOFTWARE_VERSION }}\"
rm -rf ~/zephyr-thingy91-path-cache
cp -r ${PWD} ~/zephyr-thingy91-path-cache
- name: Update Zephyr Project Cache
uses: actions/cache@v3
with:
path: ~/zephyr-thingy91-path-cache
key: zephyr-thingy91-{{ checksum $GITHUB_WORKSPACE/west.yml }}
- name: Upload payload and deploy release
run: |
cd $GITHUB_WORKSPACE
cd ../
. venv/bin/activate
memfault \
--org-token ${{ secrets.THINGY91_OTA_ORG_TOKEN }} \
--org ${{ env.MEMFAULT_ORG }} \
--project ${{ env.MEMFAULT_PROJECT }} \
upload-mcu-symbols build/memfault-asset-tracker/zephyr/zephyr.elf
memfault \
--org-token ${{ secrets.THINGY91_OTA_ORG_TOKEN }} \
--org ${{ env.MEMFAULT_ORG }} \
--project ${{ env.MEMFAULT_PROJECT }} upload-ota-payload \
--hardware-version ${{ env.HARDWARE_VERSION }} \
--software-type ${{ env.SOFTWARE_TYPE }} \
--software-version ${{ env.SOFTWARE_VERSION }} \
build/memfault-asset-tracker/zephyr/zephyr.signed.bin
memfault \
--org-token ${{ secrets.THINGY91_OTA_ORG_TOKEN }} \
--org ${{ env.MEMFAULT_ORG }} \
--project ${{ env.MEMFAULT_PROJECT }} deploy-release \
--release-version ${{ env.SOFTWARE_VERSION }} \
--cohort ${{ env.COHORT }}