2022-12-12 15:21:50 -03:00

134 lines
5.4 KiB
YAML

name: Build image
on:
push:
branches:
- main
tags:
- v*
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Check cache
- name: Cache buildroot
id: cache
uses: actions/cache@v3
with:
path: .buildroot
key: ${{ runner.os }}-${{ hashFiles('files/configs/arpl_defconfig') }}
# Install dependencies
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libelf-dev qemu-utils
sudo cp -f files/board/arpl/overlayfs/usr/bin/yq /usr/bin/yq
# Prepare buildroot for first make (for cache)
- name: Prepare buildroot
if: steps.cache.outputs.cache-hit != 'true'
run: |
git clone --single-branch -b 2022.02 https://github.com/buildroot/buildroot.git .buildroot
# Copy files
echo "Copying files"
cp -Ru files/* .buildroot
cd .buildroot
echo "Generating default config"
make BR2_EXTERNAL=../external arpl_defconfig
echo "First make"
make BR2_EXTERNAL=../external
# Build incremental from cache
- name: Build image
id: build
run: |
VERSION=`<VERSION`
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
# Remove old files
rm -rf .buildroot/output/target/opt/arpl
rm -rf .buildroot/board/arpl/overlayfs
rm -rf .buildroot/board/arpl/p1
rm -rf .buildroot/board/arpl/p3
# Get latest LKMs
echo "Getting latest LKMs"
TAG=`curl -s https://api.github.com/repos/fbelavenuto/redpill-lkm/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
curl -L "https://github.com/fbelavenuto/redpill-lkm/releases/download/${TAG}/rp-lkms.zip" -o /tmp/rp-lkms.zip
rm -rf files/board/arpl/p3/lkms/*
unzip /tmp/rp-lkms.zip -d files/board/arpl/p3/lkms
# Get latest addons and install its
echo "Getting latest Addons"
TAG=`curl -s https://api.github.com/repos/fbelavenuto/arpl-addons/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
curl -L "https://github.com/fbelavenuto/arpl-addons/releases/download/${TAG}/addons.zip" -o /tmp/addons.zip
mkdir -p /tmp/addons
unzip /tmp/addons.zip -d /tmp/addons
DEST_PATH="files/board/arpl/p3/addons"
echo "Installing addons to ${DEST_PATH}"
for PKG in `ls /tmp/addons/*.addon`; do
ADDON=`basename ${PKG} | sed 's|.addon||'`
mkdir -p "${DEST_PATH}/${ADDON}"
echo "Extracting ${PKG} to ${DEST_PATH}/${ADDON}"
tar xaf "${PKG}" -C "${DEST_PATH}/${ADDON}"
done
# Get latest modules
echo "Getting latest modules"
MODULES_DIR="files/board/arpl/p3/modules"
TAG=`curl -s https://api.github.com/repos/fbelavenuto/arpl-modules/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
while read PLATFORM KVER; do
FILE="${PLATFORM}-${KVER}"
curl -L "https://github.com/fbelavenuto/arpl-modules/releases/download/${TAG}/${FILE}.tgz" -o "${MODULES_DIR}/${FILE}.tgz"
done < PLATFORMS
curl -L "https://github.com/fbelavenuto/arpl-modules/releases/download/${TAG}/firmware.tgz" -o "${MODULES_DIR}/firmware.tgz"
# Copy files
echo "Copying files"
sed 's/^ARPL_VERSION=.*/ARPL_VERSION="'${VERSION}'"/' -i files/board/arpl/overlayfs/opt/arpl/include/consts.sh
echo "${VERSION}" > files/board/arpl/p1/ARPL-VERSION
cp -Ru files/* .buildroot/
cd .buildroot
echo "Generating default config"
make BR2_EXTERNAL=../external arpl_defconfig
echo "Version: ${VERSION}"
echo "Building..."
make BR2_EXTERNAL=../external
cd -
qemu-img convert -O vmdk arpl.img arpl-dyn.vmdk
qemu-img convert -O vmdk -o adapter_type=lsilogic arpl.img -o subformat=monolithicFlat arpl.vmdk
# Zip image and generate checksum
- name: Pack
shell: bash
run: |
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.img.zip" arpl.img
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.vmdk-dyn.zip" arpl-dyn.vmdk
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.vmdk-flat.zip" arpl.vmdk arpl-flat.vmdk
sha256sum update-list.yml > sha256sum
yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml | while read F; do
(cd `dirname ${F}` && sha256sum `basename ${F}`) >> sha256sum
done
yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml | xargs zip -9j "update.zip" sha256sum update-list.yml
# Upload artifact
- name: Upload
uses: actions/upload-artifact@v3
with:
name: Images
path: |
arpl.img
arpl*.vmdk
retention-days: 5
# Publish a release if is a tag
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
arpl-${{ steps.build.outputs.VERSION }}.img.zip
arpl-${{ steps.build.outputs.VERSION }}.vmdk-dyn.zip
arpl-${{ steps.build.outputs.VERSION }}.vmdk-flat.zip
update.zip