openmv/.github/workflows/firmware.yml
dependabot[bot] def3741770
build(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 15:38:13 +00:00

163 lines
4.3 KiB
YAML

name: '🔥 Firmware Build'
on:
push:
tags:
- 'v*.*.*'
branches:
- 'master'
paths:
- 'src/**'
- '.github/workflows/*.yml'
- '.github/workflows/*.json'
- '!**/README.md'
- '!**.rst'
pull_request:
branches:
- 'master'
paths:
- 'src/**'
- '.github/workflows/*.yml'
- '.github/workflows/*.json'
- '!**/README.md'
- '!**.rst'
jobs:
build-firmware:
runs-on: ubuntu-20.04
strategy:
matrix:
target: [OPENMV2, OPENMV3, OPENMV4, OPENMV4P, ARDUINO_PORTENTA_H7, OPENMVPT, ARDUINO_NICLA_VISION, arduino_nano_33_ble_sense, ARDUINO_NANO_RP2040_CONNECT, OPENMV_RT1060]
fail-fast: false
steps:
- name: '⏳ Checkout repository'
uses: actions/checkout@v4
with:
submodules: false
- name: '🧱 Update submodules'
run: source tools/ci.sh && ci_update_submodules
- name: '♻ Caching dependencies'
uses: actions/cache@v3.3.1
id: cache
with:
path: ~/cache/gcc
key: 'gcc-arm-none-eabi-10-2020-q4-major'
- name: '🛠 Install toolchain '
if: steps.cache.outputs.cache-hit != 'true'
run: source tools/ci.sh && ci_install_arm_gcc
- name: '🏗 Build firmware'
run: source tools/ci.sh && ci_build_target ${{ matrix.target }}
- name: '⬆ Upload artifacts'
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v3
with:
name: firmware
path: firmware
if-no-files-found: error
stable-release:
needs: build-firmware
runs-on: ubuntu-20.04
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- name: '⏳ Checkout repository'
uses: actions/checkout@v4
with:
submodules: false
- name: '🤌 Download artifacts'
uses: actions/download-artifact@v3
with:
name: firmware
path: firmware
- name: '📦 Package firmware'
run: source tools/ci.sh && ci_package_firmware_release ${{github.ref_name}}
- name: "✏️ Generate release changelog"
id: changelog
uses: mikepenz/release-changelog-builder-action@v3
with:
toTag: ${{ github.sha }}
configuration: '.github/workflows/changelog.json'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🔥 Create stable release'
uses: softprops/action-gh-release@v1
with:
draft: true
files: firmware_*.zip
body: ${{steps.changelog.outputs.changelog}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🧹 Remove artifacts'
uses: geekyeggo/delete-artifact@v2
with:
name: firmware
failOnError: false
development-release:
needs: build-firmware
runs-on: ubuntu-20.04
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') == false
permissions:
contents: write
steps:
- name: '⏳ Checkout repository'
uses: actions/checkout@v4
with:
submodules: false
- name: '🤌 Download artifacts'
uses: actions/download-artifact@v3
with:
name: firmware
path: firmware
- name: '📦 Package firmware'
run: source tools/ci.sh && ci_package_firmware_development
- name: '🧹 Delete old release'
uses: dev-drprasad/delete-tag-and-release@v0.2.1
with:
delete_release: true
tag_name: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "✏️ Generate release changelog"
id: changelog
uses: mikepenz/release-changelog-builder-action@v3
with:
toTag: ${{ github.sha }}
configuration: '.github/workflows/changelog.json'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🔥 Create development release'
uses: softprops/action-gh-release@v1
with:
draft: false
name: Development Release
tag_name: development
body: |
**⚠️ This is a development release, and it may be unstable.**
${{steps.changelog.outputs.changelog}}
files: firmware/firmware_*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🧹 Remove artifacts'
uses: geekyeggo/delete-artifact@v2
with:
name: firmware
failOnError: false