Skip to content

Build

Build #962

Workflow file for this run

name: Build
# Trigger the workflow on push or pull request
on:
push:
paths:
- 'build.bash'
- 'build-image/openhabian-installer.service'
- 'build-image/first-boot.bash'
- 'includes/offline-image-modifications.bash'
- '.github/workflows/build-action.yml'
pull_request:
paths:
- 'build.bash'
- 'build-image/openhabian-installer.service'
- 'build-image/first-boot.bash'
- 'includes/offline-image-modifications.bash'
- '.github/workflows/build-action.yml'
workflow_dispatch:
inputs:
comments:
description: 'Build comments'
default: 'Build for testing purposes'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
- name: Setup environment
id: setup
run: |
sudo -E bash -c set
sudo apt-get update
sudo apt-get install --yes libarchive-zip-perl dos2unix systemd-container qemu-user-static qemu-utils
echo "image32=$(basename "$(curl "https://downloads.raspberrypi.org/raspios_lite_armhf_latest" -s -L -I -o /dev/null -w '%{url_effective}')")" >> $GITHUB_OUTPUT
echo "image64=$(basename "$(curl "https://downloads.raspberrypi.org/raspios_lite_arm64_latest" -s -L -I -o /dev/null -w '%{url_effective}')")" >> $GITHUB_OUTPUT
- name: Cache Raspberry Pi OS 32bit image
uses: actions/cache@v4
with:
path: ${{ steps.setup.outputs.image32 }}
key: ${{ steps.setup.outputs.image32 }}
- name: Cache Raspberry Pi OS 64bit image
uses: actions/cache@v4
with:
path: ${{ steps.setup.outputs.image64 }}
key: ${{ steps.setup.outputs.image64 }}
- name: Build openHABian images
id: build
run: |
sudo -E ./tests/ci-setup.bash github ${{ github.ref_name }}
for f in "openhabian.conf openhabian.pi-raspios32.conf openhabian.pi-raspios64.conf"; do
if [[ -f build-image/$f ]]; then
sed -i -e "s|^userpw=.*$|userpw=\"${{secrets.USERPW}}\"|g" build-image/$f
fi
done
sed -i -e "s|ap_password:.*$|ap_password: ${{secrets.HOTSPOTPW}}|g" includes/comitup.conf
cp build-image/template_rpi-imager-openhab.json rpi-imager-openhab.json
sudo -E ./build.bash rpi oldstable
sudo -E ./build.bash rpi64 oldstable
sudo -E ./build.bash rpi64 latest
echo "image32=$(ls openhabian-raspios32-oldstable*.img.xz)" >> $GITHUB_OUTPUT
echo "image64=$(ls openhabian-raspios64-oldstable*.img.xz)" >> $GITHUB_OUTPUT
echo "image64latest=$(ls openhabian-raspios64-latest*.img.xz)" >> $GITHUB_OUTPUT
#echo "image32=$(ls openhabian-raspios32*.img.xz)" >> $GITHUB_OUTPUT
#echo "image64=$(ls -1t openhabian-raspios64*.img.xz | tail -1)" >> $GITHUB_OUTPUT
#echo "image64latest=$(ls -1t openhabian-raspios64*.img.xz | head -1)" >> $GITHUB_OUTPUT
echo "json_image=$(ls rpi-imager-openhab.json)" >> $GITHUB_OUTPUT
- name: Archive openHABian 32bit bullseye image
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.image32 }}
path: ${{ steps.build.outputs.image32 }}
- name: Archive openHABian 64bit bullseye image
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.image64 }}
path: ${{ steps.build.outputs.image64 }}
- name: Archive openHABian 64bit bookworm image
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.image64latest }}
path: ${{ steps.build.outputs.image64latest }}
- name: Archive openHABian json of image download
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.json_image }}
path: ${{ steps.build.outputs.json_image }}
- name: Create release template
if: ${{ success() && github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }}
uses: "marvinpinto/action-automatic-releases@v1.2.1"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
title: "openHABian ${{ github.ref_name }}"
automatic_release_tag: "${{ github.ref_name }}"
prerelease: false
draft: true
files: |
${{ steps.build.outputs.image32 }}
${{ steps.build.outputs.image64 }}
${{ steps.build.outputs.image64latest }}
${{ steps.build.outputs.json_image }}