mirror of
https://github.com/RROrg/rr.git
synced 2025-06-21 05:51:05 +08:00
125 lines
4.4 KiB
YAML
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
|