73 lines (66 loc) · 3.13 KB
/
nerves-build.yml
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
name: nerves-build
on:
pull_request:
push:
branches:
- main
- nerves-*
paths-ignore:
- '**/README.md'
- 'examples/**'
- '.github/FUNDING.yml'
- '.github/workflows/linux-*'
- '.github/workflows/macos-*'
- '.github/workflows/test-*.yml'
workflow_dispatch:
jobs:
mix_test:
runs-on: ubuntu-20.04
env:
MIX_ENV: dev
NERVES_PROJ_NAME: nerves_evision
OPENCV_VER: "4.5.5"
strategy:
matrix:
target: [rpi4, rpi3a, rpi3, rpi2, rpi0, rpi, bbb, osd32mp1]
steps:
- uses: actions/checkout@v2
- uses: erlef/setup-beam@v1
with:
otp-version: "24.1.5"
elixir-version: "1.13"
- name: Install nerves and system dependecies
run: |
mkdir -p ~/.ssh
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCulZpVE/JdpWX53C35n45RSIMtaIIiTMnmRo5oDEMbyh0NnKI5byikkOvGnGLOO2KTlq4We+MF5iKx72B1Ixl8RY7L6Kc/h3R6jG4uOWBhw/WBhIebteJVYDzrlU8fHTewquWYT6tJ7v7g54Qe5vofsDeKBDqTJqJPlwNSxP8AjPZ0vQ4O4IhG0CXaDzU/G50sqzquKckgGWURLN9LcsA+kzciKJRhKw4Q7kpOiTNG/fzYxBpgpNrnyyr7bhj0jdOsg9KoG57aLSqbmEVCOyWa6yh6lOTp37S6ijBfQORxUu3I+6B04zUBSEvN4wgqslHU9pbIio8Szz1vbnlqsgO0tG1yqALfs6RVSjW81AujKefeH/8seE7q0yiHJXkE4tejIcewJT+2e6p/fP2pVSwyRqZ1bObtRUCMG3Pwdi0IpfsyBSa02Qc7eT9VB1WN7XD1vpfMDQ/nIWmoA40VkX3F3v5Mht5PZwVmlRyM8BrLtCYTreUP5xl6ZZCSX2IfOI8= nerves-ci-build' > ~/.ssh/id_rsa.pub
sudo apt-get update && sudo apt-get install -y build-essential automake autoconf pkg-config bc m4 unzip zip curl git libssl-dev libncurses5-dev python3 ca-certificates squashfs-tools ssh-askpass libmnl-dev
mix local.hex --force
mix local.rebar --force
mix archive.install hex nerves_bootstrap --force || true
wget -k https://github.com/fwup-home/fwup/releases/download/v1.9.0/fwup_1.9.0_amd64.deb -O fwup_1.9.0_amd64.deb
sudo dpkg -i fwup_1.9.0_amd64.deb
- name: Make a nerves project
run: |
cd ../
mix nerves.new "${NERVES_PROJ_NAME}"
cd "${NERVES_PROJ_NAME}"
LINE="$(grep -n 'toolshed' mix.exs | awk -F: '{print $1+1}')"
head -n "${LINE}" mix.exs > mix.exs.tmp
echo ' {:evision, "~> 0.1.0-dev", path: "../evision"},' >> mix.exs.tmp
tail -n "+${LINE}" mix.exs >> mix.exs.tmp
mv mix.exs.tmp mix.exs
cat mix.exs
export MIX_TARGET=${{ matrix.target }}
mix deps.get 2>&1 >/dev/null
cp -f ../evision/nerves/id_rsa.pub ~/.ssh/id_rsa.pub
cp -f ../evision/nerves/id_rsa ~/.ssh/id_rsa
export MAKE_BUILD_FLAGS="-j$(nproc)"
mix deps.compile
mix firmware
mkdir -p "/tmp/firmware"
cp "./_build/${MIX_TARGET}_${MIX_ENV}/nerves/images/${NERVES_PROJ_NAME}.fw" "/tmp/firmware/${NERVES_PROJ_NAME}_${{ matrix.target }}_${MIX_ENV}.fw"
- name: Upload build artifacts
uses: actions/upload-artifact@v2.2.4
with:
name: ${{ env.NERVES_PROJ_NAME }}_${{ matrix.target }}_${{ env.MIX_ENV }}.fw
path: /tmp/firmware/${{ env.NERVES_PROJ_NAME }}_${{ matrix.target }}_${{ env.MIX_ENV }}.fw