Fabio Belavenuto 6df00babb3 change main.yml
2022-07-14 13:07:47 -03:00

125 lines
4.4 KiB
YAML

name: Build image
# Controls when the workflow will run
on:
# Push
push:
tags:
- v*
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- 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
# 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 arpl_defconfig
echo "First make"
make BR2_EXTERNAL=../external
# Build incremental from cache
- name: Build image
id: build
run: |
VERSION=`<VERSION`
echo "::set-output name=VERSION::${VERSION}"
# 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
# Copy files
echo "Copying files"
sed 's/^ARPL_VERSION=.*/ARPL_VERSION="'${VERSION}'"/' -i files/board/arpl/overlayfs/opt/arpl/include/consts.sh
cp -Ru files/* .buildroot/
cd .buildroot
echo "Generating default config"
make arpl_defconfig
echo "Version: ${VERSION}"
echo "Building..."
make BR2_EXTERNAL=../external
cd -
qemu-img convert -O vmdk arpl.img arpl.vmdk
# Zip image
- name: Pack
shell: bash
run: |
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.img.zip" arpl.img
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.vmdk.zip" arpl.vmdk
# Upload artifact
- name: Upload
uses: actions/upload-artifact@v3
with:
name: Images
path: |
arpl.img
arpl.vmdk
retention-days: 1
# 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.zip
.buildroot/output/images/bzImage
.buildroot/output/images/rootfs.cpio.xz