Skip to content

Crave Builder

Crave Builder #19

Workflow file for this run

name: Build ROMs Using Crave
on:
workflow_dispatch:
inputs:
BASE_PROJECT:
description: 'Select Base Project'
required: true
default: 'lineage-20'
type: choice
options:
- 'lineage-20'
- 'crdroid-10'
- 'arrow-13'
- 'derp-13'
BUILD_DIFFERENT_ROM:
description: 'Replace with Repo Init Command'
required: false
default: 'echo "Build Starting!"'
REMOVALS:
description: 'Folders to Remove Before Syncing'
default: '.repo/local_manifests'
LOCAL_MANIFEST:
description: 'Local Manifest URL'
required: true
default: 'https://github.com/sounddrill31/local_manifests'
LOCAL_MANIFEST_BRANCH:
description: 'Local Manifest Branch'
required: true
default: 'lineage-oxygen'
DEVICE_NAME:
description: 'DEVICE_NAME'
required: true
default: 'oxygen'
MAKEFILE_NAME:
description: 'MAKEFILE_NAME'
required: true
default: 'lineage_oxygen'
BUILD_COMMAND:
description: 'BUILD_COMMAND'
required: true
default: 'mka bacon'
BUILD_TYPE:
description: 'Build Type'
required: true
default: 'userdebug'
type: choice
options:
- 'eng'
- 'userdebug'
- 'user'
CLEAN_BUILD:
description: 'Build Clean?'
default: 'false'
jobs:
test:
name: Build using foss.crave.io
runs-on: ubuntu-latest
steps:
- name: Cleanup
run: rm -rf *
- name: Check-out to repository
uses: actions/checkout@v4
- name: Create workspace
run: mkdir ${{ github.event.inputs.DEVICE_NAME }}
continue-on-error: true
- name: Enter Workspace
run: cd ${{ github.event.inputs.DEVICE_NAME }}
continue-on-error: true
- name: Install gh command
run: curl -sS https://webi.sh/gh | sh
- name: Install repo
run: |
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
sudo ln -sf ~/bin/repo /usr/bin/repo
- name: Test Local Manifests
run: |
if [ "${{ github.event.inputs.BUILD_DIFFERENT_ROM }}" != "echo "Build Starting!"" ]; then
${{ github.event.inputs.BUILD_DIFFERENT_ROM }}
git clone ${{ github.event.inputs.LOCAL_MANIFEST }} --depth 1 -b ${{ github.event.inputs.LOCAL_MANIFEST_BRANCH }} .repo/local_manifests && \
timeout 1m repo sync || true
else
${{ github.event.inputs.BUILD_DIFFERENT_ROM }}
fi
timeout-minutes: 10
- name: Initialize repo
run: |
git config --global user.name "sounddrill31"
git config --global user.email "[email protected]"
if [ "${{ github.event.inputs.BASE_PROJECT }}" == "arrow-13" ]; then
repo init -u https://github.com/ArrowOS/android_manifest.git -b arrow-13.1
fi
if [ "${{ github.event.inputs.BASE_PROJECT }}" == "derp-13" ]; then
repo init -u https://github.com/DerpFest-AOSP/manifest.git -b 13
fi
if [ "${{ github.event.inputs.BASE_PROJECT }}" == "crdroid-10" ]; then
repo init -u https://github.com/crdroidandroid/android.git -b 14.0 --git-lfs
fi
if [ "${{ github.event.inputs.BASE_PROJECT }}" == "lineage-20" ]; then
repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs
fi
id: pwd
- name: Set Up Crave
run: |
rm -rf crave
curl -s https://raw.githubusercontent.com/accupara/crave/master/get_crave.sh | bash -s --
envsubst < crave.conf.sample >> crave.conf
rm -rf crave.conf.sample
env:
CRAVE_USERNAME: ${{ secrets.CRAVE_USERNAME }}
CRAVE_TOKEN: ${{ secrets.CRAVE_TOKEN }}
- name: Crave Run
run: |
if [ "${{ github.event.inputs.CLEAN_BUILD }}" == "true" ]; then
export CLEAN="--clean"
else
export CLEAN=""
fi
./crave run $CLEAN --no-patch -- "rm -rf ${{ github.event.inputs.REMOVALS }} && \
# Clone local_manifests repository
${{ github.event.inputs.BUILD_DIFFERENT_ROM }} ; \
git clone ${{ github.event.inputs.LOCAL_MANIFEST }} --depth 1 -b ${{ github.event.inputs.LOCAL_MANIFEST_BRANCH }} .repo/local_manifests && \
# Sync the repositories
repo sync -c -j$(nproc --all) --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync && \
# Set up build environment
export BUILD_HOSTNAME=crave ; \
export BUILD_USERNAME=sounddrill31 ; \
source build/envsetup.sh && \
# Lunch configuration
lunch ${{ github.event.inputs.MAKEFILE_NAME }}-${{ github.event.inputs.BUILD_TYPE }} && \
# Build the ROM
make clean && \
${{ github.event.inputs.BUILD_COMMAND }}"
- name: Execute if the job is cancelled
if: ${{ cancelled() }}
run: ./crave stop --all
- name: Pull Compiled files
run: |
./crave pull out/target/product/*/*.zip
./crave pull out/target/product/*/*.img
- name: Upload to Release
uses: softprops/action-gh-release@v1
with:
files: |
${{ github.event.inputs.DEVICE_NAME }}/recovery.img
${{ github.event.inputs.DEVICE_NAME }}/boot.img
${{ github.event.inputs.DEVICE_NAME }}/vendor_boot.img
${{ github.event.inputs.DEVICE_NAME }}/vendor.img
${{ github.event.inputs.DEVICE_NAME }}/system.img
${{ github.event.inputs.DEVICE_NAME }}/*.zip
name: ${{ github.event.inputs.MAKEFILE_NAME }}-${{ github.run_id }}
tag_name: ${{ github.run_id }}
body: |
Target: ${{ github.event.inputs.MAKEFILE_NAME }}-${{ github.event.inputs.BUILD_TYPE }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}