This repository has been archived by the owner on Mar 29, 2024. It is now read-only.
(5.15) Build Testing Brunch-mac using Github Actions #38
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: (5.15) Build Testing Brunch-mac using Github Actions | |
on: | |
workflow_dispatch: | |
branches: | |
- 'Testing-5.15' | |
paths-ignore: | |
- 'README.md' | |
concurrency: | |
group: environment-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
prepare-kernels: | |
name: Prepare Kernels | |
runs-on: ubuntu-22.04 | |
outputs: | |
matrix: ${{ steps.kernels.outputs.matrix }} | |
steps: | |
- name: Install dependencies | |
run: | | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt update | |
#yes | DEBIAN_FRONTEND=noninteractive sudo apt dist-upgrade | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt install gcc-12 g++-12 git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison sbsigntool | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 110 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12 | |
- name: Checkout Brunch-mac source code | |
uses: actions/checkout@v3 | |
- name: Download kernels and apply patches | |
run: ./prepare_kernels.sh | |
- name: Define kernels matrix | |
id: kernels | |
run: echo "matrix=$(echo [\"$(ls -d ./kernels/* | cut -f3 -d'/' | sed -Ez '$ s/\n+$//' | sed -z 's#\n#","#g')\"])" >> $GITHUB_OUTPUT | |
- name: Compress kernels source files | |
run: tar zcf /tmp/kernels-source.tar.gz kernels | |
- name: Upload kernels source | |
uses: actions/upload-artifact@v3 | |
with: | |
name: kernels-source | |
path: /tmp/kernels-source.tar.gz | |
if-no-files-found: error | |
build-kernels: | |
name: Build Kernels | |
needs: prepare-kernels | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
kernel: ${{ fromJson(needs.prepare-kernels.outputs.matrix) }} | |
steps: | |
- name: Install dependencies | |
run: | | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt update | |
#yes | DEBIAN_FRONTEND=noninteractive sudo apt dist-upgrade | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt install gcc-12 g++-12 git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison sbsigntool | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 110 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12 | |
- name: Free some disk space | |
run: | | |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
sudo apt clean | |
- name: Checkout Brunch-mac source code | |
uses: actions/checkout@v3 | |
- name: Download kernels source | |
uses: actions/download-artifact@v3 | |
with: | |
name: kernels-source | |
path: /tmp | |
- name: Extract kernels source files | |
run: | | |
tar -zxf /tmp/kernels-source.tar.gz | |
rm -f /tmp/kernels-source.tar.gz | |
- name: Install Secure Boot certificate | |
env: | |
BRUNCH_PRIV: ${{ secrets.BRUNCH_PRIV }} | |
BRUNCH_PEM: ${{ secrets.BRUNCH_PEM }} | |
run: | | |
sudo ln -s $RUNNER_TEMP /persist | |
mkdir /persist/keys | |
echo "$BRUNCH_PRIV" | base64 -d > /persist/keys/brunch.priv | |
echo "$BRUNCH_PEM" | base64 -d > /persist/keys/brunch.pem | |
- name: Build kernels | |
run: ./build_kernels.sh ${{ matrix.kernel }} | |
- name: Clear keys | |
run: rm -r /persist/keys | |
- name: Compress built kernel | |
run: tar zcf /tmp/built-kernel-${{ matrix.kernel }}.tar.gz kernels/${{ matrix.kernel }} | |
- name: Upload kernels source | |
uses: actions/upload-artifact@v3 | |
with: | |
name: built-kernel-${{ matrix.kernel }} | |
path: /tmp/built-kernel-${{ matrix.kernel }}.tar.gz | |
if-no-files-found: error | |
build-brunch: | |
name: Build Brunch-mac | |
needs: build-kernels | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install dependencies | |
run: | | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt update | |
#yes | DEBIAN_FRONTEND=noninteractive sudo apt dist-upgrade | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt install gcc-12 g++-12 git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison sbsigntool python3-protobuf rdfind zstd | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 110 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12 | |
pip3 install --upgrade google-api-python-client | |
- name: Free some disk space | |
run: | | |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
sudo apt clean | |
- name: Checkout Brunch-mac source code | |
uses: actions/checkout@v3 | |
- name: Download built kernels | |
uses: actions/download-artifact@v3 | |
with: | |
path: /tmp | |
- name: Copy built kernels | |
run: | | |
for file in /tmp/built-kernel-*/built-kernel-*.tar.gz | |
do | |
tar zxf $file | |
rm -f $file | |
done | |
rm -r /tmp/kernels-source/kernels-source.tar.gz | |
- name: Build brunch-mac | |
run: sudo bash build_brunch.sh | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: brunch-build | |
path: out/brunch_r*.tar.gz | |
if-no-files-found: error | |
release: | |
name: Make a Brunch-mac release | |
permissions: | |
contents: write | |
needs: build-brunch | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Initialize Git repository | |
run: git init # Add this step to initialize Git | |
- name: Install dependencies | |
run: | | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt update | |
yes | DEBIAN_FRONTEND=noninteractive sudo apt install jq | |
- name: Get latest tag | |
id: latest-tag | |
run: | | |
LATEST_TAG=$(curl -s "https://api.github.com/repos/ZProLegend007/brunch-mac/releases/latest" | jq -r .tag_name) | |
echo "Latest tag is $LATEST_TAG" | |
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV | |
shell: bash | |
- name: Download built artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: brunch-build | |
- name: Generate release details | |
run: | | |
RELEASE_FILE=$(ls brunch_r*.tar.gz) | |
RELEASE_VERSION=$(echo "$RELEASE_FILE" | sed -n 's/brunch_r\([0-9]*\).*/\1/p') | |
MAJOR_VERSION="r${RELEASE_VERSION}" | |
LATEST_TAG="${{ env.LATEST_TAG }}" | |
LATEST_MAJOR_VERSION="${LATEST_TAG%%.*}" | |
if [ "$LATEST_MAJOR_VERSION" == "${MAJOR_VERSION}" ]; then | |
LAST_RELEASE_TAG="$LATEST_TAG" | |
LAST_DECIMAL=$(cut -d. -f2 <<< "$LAST_RELEASE_TAG") | |
NEW_DECIMAL=$((LAST_DECIMAL + 1)) | |
else | |
NEW_DECIMAL="0" | |
fi | |
RELEASE_VERSION="${MAJOR_VERSION}.${NEW_DECIMAL}" | |
NEW_RELEASE_NAME="Brunch-mac ${RELEASE_VERSION} - TESTING - Kernel 5.15" | |
NEW_RELEASE_FILE="Brunch-mac_${RELEASE_VERSION}_TESTING_K5.15.tar.gz" | |
echo "Found brunch release: ${RELEASE_FILE} with version ${RELEASE_VERSION}" | |
echo "Renaming release file to: $NEW_RELEASE_FILE" | |
mv "$RELEASE_FILE" "$NEW_RELEASE_FILE" | |
echo "RELEASE_NAME=${NEW_RELEASE_NAME}" >> $GITHUB_ENV | |
echo "RELEASE_TAG=${RELEASE_VERSION}-Testing-K5.15" >> $GITHUB_ENV | |
echo "RELEASE_FILE=${NEW_RELEASE_FILE}" >> $GITHUB_ENV | |
id: generate-release-details | |
- name: Create a release and upload artifacts as assets | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: "${{ env.RELEASE_FILE }}" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: false | |
tag: "${{ env.RELEASE_TAG }}" | |
name: "${{ env.RELEASE_NAME }}" | |
commit: "${{ github.ref_name }}" | |
body: "${{ github.event.head_commit.message }}" |