SummerCart64/.github/workflows/build.yml
Mateusz Faderewski b6a742ef5d test builder
2024-06-27 21:10:27 +02:00

170 lines
4.9 KiB
YAML

name: build
on:
push:
branches:
- main
pull_request:
branches:
- main
release:
types:
- created
workflow_dispatch:
jobs:
build-firmware:
runs-on: ubuntu-latest
steps:
- name: Download SummerCart64 repository
uses: actions/checkout@v4
- name: Set package version
uses: frabert/replace-string-action@v2
id: version
with:
pattern: '\/'
string: '${{ github.ref_name }}'
replace-with: '-'
- name: Build firmware
run: ./docker_build.sh release --force-clean
env:
SC64_VERSION: ${{ steps.version.outputs.replaced }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: sc64-pkg-${{ steps.version.outputs.replaced }}
path: |
sc64-extra-${{ steps.version.outputs.replaced }}.zip
sc64-firmware-${{ steps.version.outputs.replaced }}.bin
- name: Upload release assets
if: github.event_name == 'release' && github.event.action == 'created'
uses: softprops/action-gh-release@v0.1.15
with:
files: |
sc64-extra-${{ steps.version.outputs.replaced }}.zip
sc64-firmware-${{ steps.version.outputs.replaced }}.bin
build-deployer:
strategy:
matrix:
# version: [windows, windows-32bit, linux, macos]
version: [linux, macos]
include:
# - version: windows
# os: windows-latest
# executable: target/release/sc64deployer.exe
# package-name: sc64-deployer-windows
# package-params: -c -a -f
# package-extension: zip
# - version: windows-32bit
# os: windows-latest
# build-params: --target=i686-pc-windows-msvc
# executable: target/i686-pc-windows-msvc/release/sc64deployer.exe
# package-name: sc64-deployer-windows-32bit
# package-params: -c -a -f
# package-extension: zip
- version: linux
os: ubuntu-latest
apt-packages: libftdi-dev libudev-dev
executable: target/release/sc64deployer
package-name: sc64-deployer-linux
package-params: -czf
package-extension: tar.gz
- version: macos
os: macos-latest
brew-packages: libftdi
executable: target/release/sc64deployer
package-name: sc64-deployer-macos
package-params: -czf
package-extension: tgz
runs-on: ${{ matrix.os }}
steps:
- name: Download SummerCart64 repository
uses: actions/checkout@v4
- name: Set package version
uses: frabert/replace-string-action@v2
id: version
with:
pattern: '\/'
string: '${{ github.ref_name }}'
replace-with: '-'
- name: Install apt packages
if: matrix.apt-packages
run: |
sudo apt-get update
sudo apt-get -y install ${{ matrix.apt-packages }}
- name: Install brew packages
if: matrix.brew-packages
run: yes | brew install ${{ matrix.brew-packages }}
- name: Build deployer
run: cargo b -r ${{ matrix.build-params }}
working-directory: sw/deployer
- name: Package executable
run: |
mkdir -p ./package
cp ${{ matrix.executable }} ./package/
cd ./package
tar ${{ matrix.package-params }} ./${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}.${{ matrix.package-extension }} *
working-directory: sw/deployer
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}
path: sw/deployer/package/${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}.${{ matrix.package-extension }}
- name: Upload release assets
if: github.event_name == 'release' && github.event.action == 'created'
uses: softprops/action-gh-release@v0.1.15
with:
files: |
sw/deployer/package/${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}.${{ matrix.package-extension }}
publish-website:
if: github.ref == 'refs/heads/main'
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Download SummerCart64 repository
uses: actions/checkout@v4
- name: Copy BOM file to the website folder
run: cp ./hw/pcb/sc64v2_bom.html ./web
- name: Setup GitHub pages
uses: actions/configure-pages@v4
- name: Upload website artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./web
- name: Publish website from uploaded artifact
id: deployment
uses: actions/deploy-pages@v4