These boards support the rather ancient ARMv6 architecture only. We officially stopped supporting them already two releases ago, its time to say goodbye.
185 lines
8.3 KiB
YAML
185 lines
8.3 KiB
YAML
# Home Assistant Operating System release build workflow
|
|
|
|
name: Release build
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
validate_release:
|
|
name: Validate release
|
|
runs-on: [ "ubuntu-20.04" ]
|
|
outputs:
|
|
version: ${{ steps.version_check.outputs.version }}
|
|
version_dev: ${{ steps.version_check.outputs.version_dev }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Validate version
|
|
id: version_check
|
|
run: |
|
|
major=$(cat ${GITHUB_WORKSPACE}/buildroot-external/meta | grep VERSION_MAJOR | cut -d'=' -f2)
|
|
build=$(cat ${GITHUB_WORKSPACE}/buildroot-external/meta | grep VERSION_BUILD | cut -d'=' -f2)
|
|
tag_major=$(echo "${{ github.event.release.tag_name }}" | cut -d '.' -f 1)
|
|
tag_build=$(echo "${{ github.event.release.tag_name }}" | cut -d '.' -f 2)
|
|
tag_dev=$(echo "${{ github.event.release.tag_name }}" | cut -d '.' -f 3)
|
|
if [ "${major}.${build}" != "${tag_major}.${tag_build}" ]; then
|
|
echo "Version number in Buildroot metadata is does not match tag (${major}.${build} vs ${{ github.event.release.tag_name }})."
|
|
exit 1
|
|
fi
|
|
if [ "" != "${tag_dev}" ]; then
|
|
echo "Note: Release build with custom dev part: ${tag_dev}."
|
|
echo "::set-output name=version::${major}.${build}.${tag_dev}"
|
|
else
|
|
echo "::set-output name=version::${major}.${build}"
|
|
fi
|
|
echo "::set-output name=version_dev::${tag_dev}"
|
|
|
|
build:
|
|
name: Release build for ${{ matrix.board.name }}
|
|
needs: validate_release
|
|
strategy:
|
|
matrix:
|
|
board:
|
|
- {"name": "ova", "output": "ova", "runner": "x86-64-runner"}
|
|
- {"name": "generic_x86_64", "output": "generic-x86-64", "runner": "x86-64-runner"}
|
|
- {"name": "khadas_vim3", "output": "khadas-vim3", "runner": "aarch64-runner"}
|
|
- {"name": "odroid_c2", "output": "odroid-c2", "runner": "aarch64-runner"}
|
|
- {"name": "odroid_c4", "output": "odroid-c4", "runner": "aarch64-runner"}
|
|
- {"name": "odroid_n2", "output": "odroid-n2", "runner": "aarch64-runner"}
|
|
- {"name": "odroid_xu4", "output": "odroid-xu4" , "runner": "aarch64-runner"}
|
|
- {"name": "rpi2", "output": "rpi2", "runner": "arm-runner"}
|
|
- {"name": "rpi3", "output": "rpi3", "runner": "arm-runner"}
|
|
- {"name": "rpi3_64", "output": "rpi3-64", "runner": "aarch64-runner"}
|
|
- {"name": "rpi4", "output": "rpi4", "runner": "arm-runner"}
|
|
- {"name": "rpi4_64", "output": "rpi4-64", "runner": "aarch64-runner"}
|
|
- {"name": "tinker", "output": "tinker", "runner": "arm-runner"}
|
|
runs-on: ${{ matrix.board.runner }}
|
|
|
|
steps:
|
|
# Make sure directories of potentially removed submodules are cleaned correctly
|
|
- name: Cleanup git submodules
|
|
run: find . -name .git -type f -exec rm {} \;
|
|
|
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Build container
|
|
run: docker build -t haos-builder .
|
|
|
|
- name: 'Add release PKI certs'
|
|
env:
|
|
RAUC_CERTIFICATE: ${{ secrets.RAUC_CERTIFICATE }}
|
|
RAUC_PRIVATE_KEY: ${{ secrets.RAUC_PRIVATE_KEY }}
|
|
run: |
|
|
echo -e "-----BEGIN CERTIFICATE-----\n${RAUC_CERTIFICATE}\n-----END CERTIFICATE-----" > cert.pem
|
|
echo -e "-----BEGIN PRIVATE KEY-----\n${RAUC_PRIVATE_KEY}\n-----END PRIVATE KEY-----" > key.pem
|
|
|
|
- name: Build
|
|
run: |
|
|
BUILDER_UID="$(id -u)"
|
|
BUILDER_GID="$(id -g)"
|
|
docker run --rm --privileged -v "${GITHUB_WORKSPACE}:/build" \
|
|
-e BUILDER_UID="${BUILDER_UID}" -e BUILDER_GID="${BUILDER_GID}" \
|
|
-v "${{ matrix.board.runner }}-build-cache:/cache" \
|
|
haos-builder make BUILDDIR=/build VERSION_DEV=${{ needs.validate_release.outputs.version_dev }} ${{ matrix.board.name }}
|
|
|
|
- name: Upload disk image
|
|
if: ${{ matrix.board.name != 'ova' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.img.xz
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.img.xz
|
|
asset_content_type: application/x-xz
|
|
|
|
- name: Upload rauc update
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.raucb
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.raucb
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Upload ova image
|
|
if: ${{ matrix.board.name == 'ova' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.ova
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.ova
|
|
asset_content_type: application/x-tar
|
|
|
|
- name: Upload qcow2 image
|
|
if: ${{ matrix.board.name == 'ova' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.qcow2.xz
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.qcow2.xz
|
|
asset_content_type: application/x-xz
|
|
|
|
- name: Upload vdi image
|
|
if: ${{ matrix.board.name == 'ova' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.vdi.zip
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.vdi.zip
|
|
asset_content_type: application/zip
|
|
|
|
- name: Upload vhdx image
|
|
if: ${{ matrix.board.name == 'ova' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.vhdx.zip
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.vhdx.zip
|
|
asset_content_type: application/zip
|
|
|
|
- name: Upload vmdk image
|
|
if: ${{ matrix.board.name == 'ova' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.vmdk.zip
|
|
asset_name: haos_${{ matrix.board.output }}-${{ needs.validate_release.outputs.version }}.vmdk.zip
|
|
asset_content_type: application/zip
|
|
|
|
bump_version:
|
|
name: Bump dev version to ${{ needs.validate_release.outputs.version }}
|
|
needs: [ build, validate_release ]
|
|
runs-on: [ "ubuntu-20.04" ]
|
|
|
|
steps:
|
|
- name: Initialize git
|
|
uses: home-assistant/actions/helpers/git-init@master
|
|
with:
|
|
name: ${{ secrets.GIT_NAME }}
|
|
email: ${{ secrets.GIT_EMAIL }}
|
|
token: ${{ secrets.GIT_TOKEN }}
|
|
|
|
- name: Bump Home Assistant OS beta version
|
|
uses: home-assistant/actions/helpers/version-push@master
|
|
with:
|
|
key: "hassos[]"
|
|
key-description: "Home Assistant OS"
|
|
version: ${{ needs.validate_release.outputs.version }}
|
|
channel: "beta"
|