Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub Actions automatic build & release workflow #1

Merged
merged 14 commits into from
Jun 23, 2023
75 changes: 75 additions & 0 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Build & Release ISO

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
path: byondvm

- name: Cache Buildroot CCache
id: cache-ccache
uses: actions/cache@v3
with:
path: ~/.buildroot-ccache
key: linux-buildroot-ccache

- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v1
id: cpu-cores

- name: Download Buildroot
run: |
wget https://buildroot.org/downloads/buildroot-2022.05.tar.gz
tar -xzf ./buildroot-2022.05.tar.gz
mv -v ./buildroot-2022.05/ ./buildroot
mv -v ./byondvm ./buildroot/byondvm

- name: Setup Buildroot
run: |
sudo apt-get update
sudo apt-get install -y sed make binutils build-essential diffutils gcc gcc-multilib g++ bash patch gzip bzip2 perl tar cpio unzip rsync file bc findutils wget

- name: Compile
run: |
cd ./buildroot
export BR2_EXTERNAL=byondvm
make defconfig byondvm_defconfig
make -j ${{ steps.cpu-cores.outputs.count }}
make -j ${{ steps.cpu-cores.outputs.count }}
mv ./output/images/rootfs.iso9660 ./controller.iso

- name: 'Upload Artifact'
uses: actions/upload-artifact@v3
with:
name: controller.iso
path: buildroot/controller.iso

- name: Set current date as env variable
if: github.event_name == 'push'
run: |
cd ./buildroot/byondvm # Go to the actual repo
echo "HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV

- name: Push tag
if: github.event_name == 'push'
run: |
cd ./buildroot/byondvm # Go to the actual repo
git tag ${{ env.HASH }}
git push origin --tags

- name: Create Release
uses: ncipollo/release-action@v1
if: github.event_name == 'push'
with:
artifacts: "buildroot/controller.iso"
tag: ${{ env.HASH }}
generateReleaseNotes: true