mirror of
https://github.com/dyne/frei0r.git
synced 2025-12-05 14:19:59 +01:00
233 lines
8.4 KiB
YAML
233 lines
8.4 KiB
YAML
name: 020-Release
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows:
|
|
- 010-Test
|
|
types: [completed]
|
|
branches:
|
|
- master
|
|
- release/**
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref_name }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
semantic-release:
|
|
name: 🤖 Semantic release
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.labels.*.name, 'skip-release')"
|
|
# if: ${{ github.ref_name == 'master' && github.event_name == 'push' }}
|
|
outputs:
|
|
release: ${{ steps.tag_release.outputs.release }}
|
|
version: ${{ steps.tag_release.outputs.version }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: latest
|
|
- name: Install semantic-release
|
|
run: |
|
|
npm i npx
|
|
npm i semantic-release/changelog
|
|
- name: Tag release
|
|
id: tag_release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
npx semantic-release | tee semantic-release.log
|
|
if [[ `git tag --points-at HEAD` == "" ]]; then
|
|
echo "release=False" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "release=True" >> $GITHUB_OUTPUT
|
|
awk '/Published release/ { printf("version=v%s\n",$8) }' semantic-release.log >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
linux-build:
|
|
name: 🐧 linux build
|
|
runs-on: ubuntu-latest
|
|
needs: [semantic-release]
|
|
if: ${{ needs.semantic-release.outputs.release == 'True' }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: apt install deps
|
|
run: |
|
|
sudo apt-get update -y -q
|
|
sudo apt-get install -y -q --no-install-recommends cmake ninja-build libopencv-dev libgavl-dev libfreetype-dev libcairo-dev
|
|
- name: Build using cmake+ninja
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake -G "Ninja" ../
|
|
ninja
|
|
- name: Upload linux filter
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-linux-filter
|
|
path: build/src/filter/**/*.so
|
|
- name: Upload linux mixer2
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-linux-mixer2
|
|
path: build/src/mixer2/**/*.so
|
|
- name: Upload linux mixer3
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-linux-mixer3
|
|
path: build/src/mixer3/**/*.so
|
|
- name: Upload linux generator
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-linux-generator
|
|
path: build/src/generator/**/*.so
|
|
|
|
win-build:
|
|
name: 🪟 win64 build
|
|
runs-on: windows-latest
|
|
needs: [semantic-release]
|
|
if: ${{ needs.semantic-release.outputs.release == 'True' }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ilammy/msvc-dev-cmd@v1
|
|
- name: choco install deps
|
|
uses: crazy-max/ghaction-chocolatey@v2
|
|
with:
|
|
args: install libopencv-dev
|
|
- name: Build using nmake
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake -G "NMake Makefiles" ../
|
|
nmake
|
|
- name: Upload win64 filter
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-win64-filter
|
|
path: build/src/filter/**/*.dll
|
|
- name: Upload win64 mixer2
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-win64-mixer2
|
|
path: build/src/mixer2/**/*.dll
|
|
- name: Upload win64 mixer3
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-win64-mixer3
|
|
path: build/src/mixer3/**/*.dll
|
|
- name: Upload win64 generator
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-win64-generator
|
|
path: build/src/generator/**/*.dll
|
|
|
|
osx-build:
|
|
name: 🍏 osx build
|
|
runs-on: macos-latest
|
|
needs: [semantic-release]
|
|
if: ${{ needs.semantic-release.outputs.release == 'True' }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Update Homebrew
|
|
run: |
|
|
brew update
|
|
- name: Install Homebrew dependencies
|
|
run: |
|
|
env HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 \
|
|
brew install ninja cairo
|
|
- name: Build using ninja
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake -G "Ninja" ../
|
|
ninja
|
|
- name: Upload osx filter
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-osx-filter
|
|
path: build/src/filter/**/*.so
|
|
- name: Upload osx mixer2
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-osx-mixer2
|
|
path: build/src/mixer2/**/*.so
|
|
- name: Upload osx mixer3
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-osx-mixer3
|
|
path: build/src/mixer3/**/*.so
|
|
- name: Upload osx generator
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-osx-generator
|
|
path: build/src/generator/**/*.so
|
|
|
|
draft-binary-release:
|
|
name: 📦 Pack release
|
|
needs: [semantic-release, win-build, osx-build, linux-build]
|
|
if: ${{ needs.semantic-release.outputs.release == 'True' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: download binary artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: |
|
|
frei0r-bin
|
|
- name: create compressed archives
|
|
run: |
|
|
dst=frei0r-${{ needs.semantic-release.outputs.version }}_win64
|
|
mkdir -p $dst/filter $dst/generator $dst/mixer2 $dst/mixer3
|
|
find frei0r-bin/release-win64-filter -type f -name '*.dll' -exec cp {} $dst/filter \;
|
|
find frei0r-bin/release-win64-generator -type f -name '*.dll' -exec cp {} $dst/generator \;
|
|
find frei0r-bin/release-win64-mixer2 -type f -name '*.dll' -exec cp {} $dst/mixer2 \;
|
|
find frei0r-bin/release-win64-mixer3 -type f -name '*.dll' -exec cp {} $dst/mixer3 \;
|
|
cp README.md $dst/README.txt
|
|
cp COPYING $dst/LICENSE.txt
|
|
cp ChangeLog $dst/ChangeLog.txt
|
|
cp AUTHORS.md $dst/AUTHORS.txt
|
|
cp include/frei0r.h include/frei0r.hpp $dst/
|
|
echo "${{ needs.semantic-release.outputs.version }}" > $dst/VERSION.txt
|
|
zip -r -9 $dst.zip $dst
|
|
|
|
dst=frei0r-${{ needs.semantic-release.outputs.version }}_osx
|
|
mkdir -p $dst/filter $dst/generator $dst/mixer2 $dst/mixer3
|
|
find frei0r-bin/release-osx-filter -type f -name '*.so' -exec cp {} $dst/filter \;
|
|
find frei0r-bin/release-osx-generator -type f -name '*.so' -exec cp {} $dst/generator \;
|
|
find frei0r-bin/release-osx-mixer2 -type f -name '*.so' -exec cp {} $dst/mixer2 \;
|
|
find frei0r-bin/release-osx-mixer3 -type f -name '*.so' -exec cp {} $dst/mixer3 \;
|
|
cp README.md $dst/README.txt
|
|
cp COPYING $dst/LICENSE.txt
|
|
cp ChangeLog $dst/ChangeLog.txt
|
|
cp AUTHORS.md $dst/AUTHORS.txt
|
|
cp include/frei0r.h include/frei0r.hpp $dst/
|
|
echo "${{ needs.semantic-release.outputs.version }}" > $dst/VERSION.txt
|
|
zip -r -9 $dst.zip $dst
|
|
|
|
dst=frei0r-${{ needs.semantic-release.outputs.version }}_linux
|
|
mkdir -p $dst/filter $dst/generator $dst/mixer2 $dst/mixer3
|
|
find frei0r-bin/release-linux-filter -type f -name '*.so' -exec cp {} $dst/filter \;
|
|
find frei0r-bin/release-linux-generator -type f -name '*.so' -exec cp {} $dst/generator \;
|
|
find frei0r-bin/release-linux-mixer2 -type f -name '*.so' -exec cp {} $dst/mixer2 \;
|
|
find frei0r-bin/release-linux-mixer3 -type f -name '*.so' -exec cp {} $dst/mixer3 \;
|
|
cp README.md $dst/README.txt
|
|
cp COPYING $dst/LICENSE.txt
|
|
cp ChangeLog $dst/ChangeLog.txt
|
|
cp AUTHORS.md $dst/AUTHORS.txt
|
|
cp include/frei0r.h include/frei0r.hpp $dst/
|
|
echo "${{ needs.semantic-release.outputs.version }}" > $dst/VERSION.txt
|
|
tar cvfz $dst.tar.gz $dst
|
|
|
|
sha256sum *.zip *.tar.gz > SHA256SUMS.txt
|
|
|
|
- name: release all archives
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
files: |
|
|
*.zip
|
|
*.tar.gz
|
|
SHA256SUMS.txt
|
|
tag_name: ${{ needs.semantic-release.outputs.version }}
|
|
draft: true
|
|
prerelease: false
|
|
fail_on_unmatched_files: true
|
|
generate_release_notes: true
|