build.yml: Use unique IDs for the artifact outputs #38
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Reusable sigrok Artifact Builder Workflows | ||
on: | ||
push: | ||
workflow_dispatch: | ||
workflow_call: | ||
defaults: | ||
run: | ||
shell: bash | ||
env: | ||
# The path where the compiled packages will be installed. | ||
INSTALL_DIR: "${{ github.workspace }}/sr" | ||
# Git URL for the libserialport dependency | ||
LIBSERIALPORT_REPO: "git://sigrok.org/libserialport" | ||
# Git URL for the libsigrok dependency | ||
LIBSIGROK_REPO: "git://sigrok.org/libsigrok" | ||
# Git branch for the libsigrok dependency | ||
LIBSIGROK_BRANCH: "master" | ||
# Git URL for the libsigrokdecode dependency | ||
LIBSIGROKDECODE_REPO: "git://sigrok.org/libsigrokdecode" | ||
# Git URL for the sigrok-firmware dependency | ||
SIGROK_FIRMWARE_REPO: "git://sigrok.org/sigrok-firmware" | ||
# Git URL for the sigrok-firmware-fx2lafw dependency | ||
SIGROK_FIRMWARE_FX2LAFW_REPO: "git://sigrok.org/sigrok-firmware-fx2lafw" | ||
# Git URL for the sigrok-dumps dependency | ||
SIGROK_DUMPS_REPO: "git://sigrok.org/sigrok-dumps" | ||
# Misc commands | ||
WGET: "wget -c --quiet" | ||
GIT_CLONE: "git clone --depth=1" | ||
jobs: | ||
build_pulseview_mxe: | ||
name: PulseView MXE build (${{ matrix.target.target }}) (${{ matrix.build_type.type }}) | ||
if: | | ||
((endsWith(github.repository, 'pulseview')) || | ||
(endsWith(github.repository, 'sigrok-build'))) | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/sigrokproject/sigrok-mxe:latest | ||
strategy: | ||
matrix: | ||
target: | ||
- { target: "i686", nsis_param: "" } | ||
- { target: "x86_64", nsis_param: "-DPE64=1" } | ||
build_type: | ||
- { type: "Release", name: "release" } | ||
- { type: "Debug", name: "debug" } | ||
env: | ||
TARGET: ${{ matrix.target.target }} | ||
DEBUG: 0 | ||
# When downloading python from sigrok.org, smth is wrong with the cert | ||
WGET: "wget -c --quiet --no-check-certificate" | ||
ARTIFACT_VERSION: "NIGHTLY" | ||
steps: | ||
- name: Set artifact version to PR | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo "ARTIFACT_VERSION=PR${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
- name: Checkout sigrok-build | ||
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | ||
run: | | ||
git clone https://github.com/sigrokproject/sigrok-build.git | ||
- name: Build dependencies | ||
run: | | ||
cd sigrok-build/ci/mxe | ||
source sigrok-mxe-init-toolchain.sh | ||
./sigrok-mxe-build-dependencies.sh | ||
- name: Checkout sigrok's PulseView | ||
# Check out default PV repository unless we're processing a pull request | ||
uses: actions/checkout@v4 | ||
with: | ||
# TODO: Clone from sigrok.org | ||
repository: sigrokproject/pulseview | ||
path: pulseview | ||
- name: Checkout PulseView from PR | ||
# Check out PV branch of the pull request we're processing | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
path: pulseview | ||
fetch-depth: 0 | ||
- name: Build PulseView | ||
run: | | ||
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | ||
mkdir -p pulseview/build | ||
cd pulseview/build | ||
$CMAKE \ | ||
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR \ | ||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type.type }} \ | ||
-DDISABLE_WERROR=FALSE \ | ||
-DENABLE_TESTS=FALSE \ | ||
.. | ||
make $PARALLEL $V | ||
make install/strip $V | ||
- name: Build NSIS installer | ||
run: | | ||
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | ||
# Zadig (we ship this with frontends for easy driver switching). | ||
$WGET https://github.com/pbatard/libwdi/releases/download/b721/zadig-2.4.exe -O $INSTALL_DIR/zadig.exe | ||
$WGET https://github.com/pbatard/libwdi/releases/download/v1.2.5/zadig_xp-2.2.exe -O $INSTALL_DIR/zadig_xp.exe | ||
cp sigrok-build/ci/mxe/contrib-mxe/FileAssociation.nsh pulseview/build/contrib | ||
makensis ${{ matrix.target.nsis_param }} pulseview/build/contrib/pulseview_cross.nsi | ||
- name: Rename artifact | ||
run: | | ||
cd pulseview/build/contrib | ||
mv pulseview-*installer.exe pulseview-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-${{ matrix.build_type.name }}-installer.exe | ||
- name: Upload artifact | ||
id: upload_pulseview_${{ matrix.target.target }}_${{ matrix.build_type.name }}_mxe_artifact | ||
Check failure on line 129 in .github/workflows/build.yml GitHub Actions / Reusable sigrok Artifact Builder WorkflowsInvalid workflow file
|
||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: artifact-pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-mxe | ||
path: pulseview/build/contrib/pulseview*installer.exe | ||
- name: Add artifact message to pull request | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/github-script@v7 | ||
env: | ||
PR_NOTES: | | ||
pulseview-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-${{ matrix.build_type.name }}-installer.exe created: ${{ env[format('steps.upload_pulseview-{0}_{1}_mxe_artifact.outputs.artifact-url', matrix.target.target, matrix.build_type.name)] }} | ||
with: | ||
script: | | ||
github.rest.issues.createComment({ | ||
issue_number: ${{ github.event.pull_request.number }}, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: process.env.PR_NOTES | ||
}) | ||
build_sigrok-cli_mxe: | ||
name: sigrok-cli MXE build (${{ matrix.target.target }}) | ||
if: | | ||
((endsWith(github.repository, 'sigrok-cli')) || | ||
(endsWith(github.repository, 'sigrok-build'))) | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/sigrokproject/sigrok-mxe:latest | ||
strategy: | ||
matrix: | ||
target: | ||
- { target: "i686", nsis_param: "" } | ||
- { target: "x86_64", nsis_param: "-DPE64=1" } | ||
env: | ||
TARGET: ${{ matrix.target.target }} | ||
DEBUG: 0 | ||
# When downloading python from sigrok.org, smth is wrong with the cert | ||
WGET: "wget -c --quiet --no-check-certificate" | ||
ARTIFACT_VERSION: "NIGHTLY" | ||
steps: | ||
- name: Set artifact version to PR | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo "ARTIFACT_VERSION=PR${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
- name: Checkout sigrok-build | ||
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | ||
run: | | ||
git clone https://github.com/sigrokproject/sigrok-build.git | ||
- name: Build dependencies | ||
run: | | ||
cd sigrok-build/ci/mxe | ||
source sigrok-mxe-init-toolchain.sh | ||
./sigrok-mxe-build-dependencies.sh | ||
- name: Checkout sigrok's sigrok-cli | ||
# Check out default sigrok-cli repository unless we're processing a pull request | ||
if: (github.event_name != 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: sigrokproject/sigrok-cli | ||
path: sigrok-cli | ||
- name: Checkout sigrok-cli from PR | ||
# Check out sigrok-cli branch of the pull request we're processing | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
path: sigrok-cli | ||
fetch-depth: 0 | ||
- name: Build sigrok-cli | ||
run: | | ||
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | ||
cd sigrok-cli | ||
./autogen.sh | ||
./configure $C | ||
make $PARALLEL $V | ||
make install $V | ||
- name: Build NSIS installer | ||
run: | | ||
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | ||
# Zadig (we ship this with frontends for easy driver switching). | ||
$WGET https://github.com/pbatard/libwdi/releases/download/b721/zadig-2.4.exe -O $INSTALL_DIR/zadig.exe | ||
$WGET https://github.com/pbatard/libwdi/releases/download/v1.2.5/zadig_xp-2.2.exe -O $INSTALL_DIR/zadig_xp.exe | ||
cp sigrok-build/ci/mxe/contrib-mxe/FileAssociation.nsh sigrok-cli/contrib | ||
makensis ${{ matrix.target.nsis_param }} sigrok-cli/contrib/sigrok-cli_cross.nsi | ||
- name: Rename artifact | ||
run: | | ||
cd sigrok-cli/contrib | ||
mv sigrok-cli-*installer.exe sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug-installer.exe | ||
- name: Upload artifact | ||
id: upload_sigrok-cli_${{ matrix.target.target }}_debug_mxe_artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: artifact-sigrok-cli-${{ matrix.target.target }}-mxe | ||
path: sigrok-cli/contrib/sigrok-cli*installer.exe | ||
- name: Add artifact message to pull request | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/github-script@v7 | ||
env: | ||
PR_NOTES: | | ||
sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug-installer.exe created: ${{ env[format('steps.upload_sigrok-cli_{0}_debug_mxe_artifact.outputs.artifact-url', matrix.target.target)] }} | ||
with: | ||
script: | | ||
github.rest.issues.createComment({ | ||
issue_number: ${{ github.event.pull_request.number }}, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: process.env.PR_NOTES | ||
}) | ||
build_pulseview_appimage: | ||
name: PulseView AppImage build (${{ matrix.target.target }}) (${{ matrix.build_type.type }}) | ||
if: | | ||
((endsWith(github.repository, 'pulseview')) || | ||
(endsWith(github.repository, 'sigrok-build'))) | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/sigrokproject/sigrok-appimage-${{ matrix.target.container }}:latest | ||
strategy: | ||
matrix: | ||
target: | ||
# - target: "i386" | ||
# container: "x86_64-i386" | ||
# cc: "gcc -m32" | ||
# cxx: "g++ -m32" | ||
# ld: "ld -melf_i386" | ||
# ldflags: "-m32" | ||
- target: "x86_64" | ||
container: "x86_64" | ||
cc: "gcc" | ||
cxx: "g++" | ||
ld: "ld" | ||
ldflags: "" | ||
build_type: | ||
- { type: "Release", name: "release" } | ||
- { type: "Debug", name: "debug" } | ||
env: | ||
TARGET: ${{ matrix.target.target }} | ||
CC: ${{ matrix.target.cc }} | ||
CXX: ${{ matrix.target.cxx }} | ||
LD: ${{ matrix.target.ld }} | ||
LDFLAGS: ${{ matrix.target.ldflags }} | ||
APP_DIR: "${{ github.workspace }}/AppDir" | ||
# Artifact infos | ||
ARTIFACT_TITLE: "PulseView" | ||
ARTIFACT_BIN_NAME: "pulseview" | ||
ARTIFACT_VERSION: "NIGHTLY" | ||
steps: | ||
- name: Set artifact version to PR | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo "ARTIFACT_VERSION=PR${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
- name: Update dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get upgrade -y | ||
# Version must match the one in ci/appimage/sigrok-appimage-create-appimage.sh | ||
sudo apt-get install -y python3.8-dev | ||
- name: Checkout sigrok-build | ||
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | ||
run: | | ||
git clone https://github.com/sigrokproject/sigrok-build.git | ||
- name: Build dependencies | ||
run: | | ||
cd sigrok-build/ci/appimage | ||
source sigrok-appimage-init-toolchain.sh | ||
./sigrok-appimage-build-dependencies.sh | ||
- name: Checkout sigrok's PulseView | ||
# Check out default PV repository unless we're processing a pull request | ||
uses: actions/checkout@v4 | ||
with: | ||
# TODO: Clone from sigrok.org | ||
repository: sigrokproject/pulseview | ||
path: pulseview | ||
- name: Checkout PulseView from PR | ||
# Check out PV branch of the pull request we're processing | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
path: pulseview | ||
fetch-depth: 0 | ||
- name: Build PulseView | ||
run: | | ||
source sigrok-build/ci/appimage/sigrok-appimage-init-toolchain.sh | ||
mkdir -p "$APP_DIR" | ||
mkdir -p pulseview/build | ||
cd pulseview/build | ||
PKG_CONFIG_PATH=$P cmake \ | ||
-DCMAKE_INSTALL_PREFIX:PATH="$APP_DIR"/usr \ | ||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type.type }} \ | ||
-DDISABLE_WERROR=FALSE \ | ||
-DENABLE_TESTS=FALSE \ | ||
.. | ||
make $PARALLEL $V | ||
make install/strip $V | ||
- name: Build AppImage | ||
run: | | ||
cd sigrok-build/ci/appimage | ||
source sigrok-appimage-init-toolchain.sh | ||
./sigrok-appimage-create-appimage.sh | ||
- name: Rename artifact | ||
run: | | ||
cd sigrok-build/ci/appimage/appimage-build | ||
mv PulseView-*.AppImage pulseview-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-${{ matrix.build_type.name }}.appimage | ||
- name: Upload artifact | ||
id: upload_pulseview_${{ matrix.target.target }}_${{ matrix.build_type.name }}_appimage_artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: artifact-pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-appimage | ||
path: sigrok-build/ci/appimage/appimage-build/pulseview-*.appimage | ||
- name: Add artifact message to pull request | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/github-script@v7 | ||
env: | ||
PR_NOTES: | | ||
pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-appimage created: ${{ env[format('steps.upload_pulseview-{0}_{1}_appimage_artifact.outputs.artifact-url', matrix.target.target, matrix.build_type.name)] }} | ||
with: | ||
script: | | ||
github.rest.issues.createComment({ | ||
issue_number: ${{ github.event.pull_request.number }}, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: process.env.PR_NOTES | ||
}) | ||
build_sigrok-cli_appimage: | ||
name: sigrok-cli AppImage build (${{ matrix.target.target }}) | ||
if: | | ||
((endsWith(github.repository, 'sigrok-cli')) || | ||
(endsWith(github.repository, 'sigrok-build'))) | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/sigrokproject/sigrok-appimage-${{ matrix.target.container }}:latest | ||
strategy: | ||
matrix: | ||
target: | ||
# - target: "i386" | ||
# container: "x86_64-i386" | ||
# cc: "gcc -m32" | ||
# cxx: "g++ -m32" | ||
# ld: "ld -melf_i386" | ||
# ldflags: "-m32" | ||
- target: "x86_64" | ||
container: "x86_64" | ||
cc: "gcc" | ||
cxx: "g++" | ||
ld: "ld" | ||
ldflags: "" | ||
env: | ||
TARGET: ${{ matrix.target.target }} | ||
CC: ${{ matrix.target.cc }} | ||
CXX: ${{ matrix.target.cxx }} | ||
LD: ${{ matrix.target.ld }} | ||
LDFLAGS: ${{ matrix.target.ldflags }} | ||
APP_DIR: "${{ github.workspace }}/AppDir" | ||
# Artifact infos | ||
ARTIFACT_TITLE: "sigrok-cli" | ||
ARTIFACT_BIN_NAME: "sigrok-cli" | ||
ARTIFACT_VERSION: "NIGHTLY" | ||
steps: | ||
- name: Set artifact version to PR | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo "ARTIFACT_VERSION=PR${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
- name: Update dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get upgrade -y | ||
# Temp! | ||
sudo apt-get install -y libffi-dev | ||
# Version must match the one in ci/appimage/sigrok-appimage-create-appimage.sh | ||
sudo apt-get install -y python3.8-dev | ||
- name: Checkout sigrok-build | ||
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | ||
run: | | ||
git clone https://github.com/sigrokproject/sigrok-build.git | ||
- name: Build dependencies | ||
run: | | ||
cd sigrok-build/ci/appimage | ||
source sigrok-appimage-init-toolchain.sh | ||
./sigrok-appimage-build-dependencies.sh | ||
- name: Checkout sigrok's sigrok-cli | ||
# Check out default sigrok-cli repository unless we're processing a pull request | ||
if: (github.event_name != 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: sigrokproject/sigrok-cli | ||
path: sigrok-cli | ||
- name: Checkout sigrok-cli from PR | ||
# Check out sigrok-cli branch of the pull request we're processing | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
path: sigrok-cli | ||
fetch-depth: 0 | ||
- name: Build sigrok-cli | ||
run: | | ||
source sigrok-build/ci/appimage/sigrok-appimage-init-toolchain.sh | ||
mkdir -p "$APP_DIR" | ||
cd sigrok-cli | ||
./autogen.sh | ||
PKG_CONFIG_PATH=$P ./configure --prefix="$APP_DIR"/usr | ||
make $PARALLEL $V | ||
make install $V | ||
- name: Build AppImage | ||
run: | | ||
cd sigrok-build/ci/appimage | ||
source sigrok-appimage-init-toolchain.sh | ||
./sigrok-appimage-create-appimage.sh | ||
- name: Rename artifact | ||
run: | | ||
cd sigrok-build/ci/appimage/appimage-build | ||
mv sigrok-cli-*.AppImage sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug.appimage | ||
- name: Upload artifact | ||
id: upload_sigrok-cli_${{ matrix.target.target }}_appimage_artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: artifact-sigrok-cli-${{ matrix.target.target }}-appimage | ||
path: sigrok-build/ci/appimage/appimage-build/sigrok-cli-*.appimage | ||
- name: Output artifact URL to log | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo 'Artifact URL is ${{ steps.upload_sigrok-cli_appimage_artifact.outputs.artifact-url }}' | ||
- name: Add artifact message to pull request | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/github-script@v7 | ||
env: | ||
PR_NOTES: | | ||
sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug.appimage created: ${{ env[format('steps.upload_sigrok-cli_{0}_appimage_artifact.outputs.artifact-url', matrix.target.target)] }} | ||
with: | ||
script: | | ||
github.rest.issues.createComment({ | ||
issue_number: ${{ github.event.pull_request.number }}, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: process.env.PR_NOTES | ||
}) | ||
build_pulseview_macos: | ||
name: PulseView macOS build | ||
if: | | ||
((endsWith(github.repository, 'pulseview')) || | ||
(endsWith(github.repository, 'sigrok-build'))) | ||
runs-on: macos-12 | ||
# Note: For now, we only supply debug builds | ||
# strategy: | ||
# matrix: | ||
# build_type: | ||
# - { type: "Release", name: "release" } | ||
# - { type: "Debug", name: "debug" } | ||
env: | ||
TARGET: "x86" | ||
BREW_PYTHON_VERSION: "python@3" | ||
BREW_QT_VERSION: "qt" | ||
# Artifact infos | ||
ARTIFACT_TITLE: "pulseview" | ||
ARTIFACT_BIN_NAME: "pulseview" | ||
ARTIFACT_VERSION: "NIGHTLY" | ||
steps: | ||
- name: Set artifact version to PR | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo "ARTIFACT_VERSION=PR${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
- name: Install dependencies | ||
run: | | ||
brew install autoconf automake autoconf-archive pkg-config libtool \ | ||
libzip libusb libftdi hidapi nettle check doxygen swig \ | ||
glib [email protected] cmake boost sdcc $BREW_PYTHON_VERSION $BREW_QT_VERSION | ||
# - name: Provide qt also in prefix directory as qt is using a keg | ||
# run: | | ||
# brew link -f $BREW_QT_VERSION | ||
- name: Checkout sigrok-build | ||
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | ||
run: | | ||
git clone https://github.com/sigrokproject/sigrok-build.git | ||
- name: Build dependencies | ||
run: | | ||
cd sigrok-build/ci/macos | ||
source sigrok-macos-init-toolchain.sh | ||
./sigrok-macos-build-dependencies.sh | ||
- name: Checkout sigrok's PulseView | ||
# Check out default PV repository unless we're processing a pull request | ||
uses: actions/checkout@v4 | ||
with: | ||
# TODO: Clone from sigrok.org | ||
repository: sigrokproject/pulseview | ||
path: pulseview | ||
- name: Checkout PulseView from PR | ||
# Check out PV branch of the pull request we're processing | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
path: pulseview | ||
fetch-depth: 0 | ||
- name: Build PulseView | ||
run: | | ||
source sigrok-build/ci/macos/sigrok-macos-init-toolchain.sh | ||
mkdir -p pulseview/build | ||
cd pulseview/build | ||
PKG_CONFIG_PATH=$P cmake \ | ||
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR \ | ||
-DCMAKE_BUILD_TYPE=Debug \ | ||
-DDISABLE_WERROR=FALSE \ | ||
-DENABLE_TESTS=FALSE \ | ||
.. | ||
make $PARALLEL $V | ||
make install $V | ||
- name: Build DMG | ||
run: | | ||
cd sigrok-build/ci/macos | ||
source sigrok-macos-init-toolchain.sh | ||
./sigrok-macos-create-dmg.sh | ||
- name: Upload artifact | ||
id: upload_pulseview_dmg_artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: artifact-pulseview-macos | ||
path: sigrok-build/ci/macos/pulseview*.dmg | ||
- name: Add artifact message to pull request | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/github-script@v7 | ||
env: | ||
PR_NOTES: | | ||
pulseview-${{ env.ARTIFACT_VERSION }}-${{ env.TARGET }}.dmg created: ${{ steps.upload_pulseview_appimage_artifact.outputs.artifact-url }} | ||
with: | ||
script: | | ||
github.rest.issues.createComment({ | ||
issue_number: ${{ github.event.pull_request.number }}, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: process.env.PR_NOTES | ||
}) | ||
build_sigrok-cli_macos: | ||
name: sigrok-cli macOS build | ||
if: | | ||
((endsWith(github.repository, 'sigrok-cli')) || | ||
(endsWith(github.repository, 'sigrok-build'))) | ||
runs-on: macos-12 | ||
env: | ||
TARGET: "x86" | ||
BREW_QT_VERSION: "qt" | ||
BREW_PYTHON_VERSION: "python@3" | ||
# Artifact infos | ||
ARTIFACT_TITLE: "sigrok-cli" | ||
ARTIFACT_BIN_NAME: "sigrok-cli" | ||
ARTIFACT_VERSION: "NIGHTLY" | ||
steps: | ||
- name: Set artifact version to PR | ||
if: (github.event_name == 'pull_request') | ||
run: | | ||
echo "ARTIFACT_VERSION=PR${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
- name: Install dependencies | ||
run: | | ||
brew install autoconf automake autoconf-archive pkg-config sdcc \ | ||
libtool libzip libusb libftdi hidapi nettle check doxygen swig \ | ||
glib "$BREW_PYTHON_VERSION" "$BREW_QT_VERSION" | ||
- name: Checkout sigrok-build | ||
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | ||
run: | | ||
git clone https://github.com/sigrokproject/sigrok-build.git | ||
- name: Build dependencies | ||
run: | | ||
cd sigrok-build/ci/macos | ||
source sigrok-macos-init-toolchain.sh | ||
./sigrok-macos-build-dependencies.sh | ||
- name: Checkout sigrok's sigrok-cli | ||
# Check out default sigrok-cli repository unless we're processing a pull request | ||
if: (github.event_name != 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: sigrokproject/sigrok-cli | ||
path: sigrok-cli | ||
- name: Checkout sigrok-cli from PR | ||
# Check out sigrok-cli branch of the pull request we're processing | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
path: sigrok-cli | ||
fetch-depth: 0 | ||
- name: Build sigrok-cli | ||
run: | | ||
source sigrok-build/ci/macos/sigrok-macos-init-toolchain.sh | ||
cd sigrok-cli | ||
./autogen.sh | ||
PKG_CONFIG_PATH=$P ./configure $C | ||
make $PARALLEL $V | ||
make install $V | ||
- name: Build DMG | ||
run: | | ||
cd sigrok-build/ci/macos | ||
source sigrok-macos-init-toolchain.sh | ||
./sigrok-macos-create-dmg.sh | ||
- name: Upload artifact | ||
id: upload_sigrok-cli_dmg_artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: artifact-sigrok-cli-macos | ||
path: sigrok-build/ci/macos/sigrok-cli*.dmg | ||
- name: Add artifact message to pull request | ||
# Only relevant for pull requests | ||
if: (github.event_name == 'pull_request') | ||
uses: actions/github-script@v7 | ||
env: | ||
PR_NOTES: | | ||
sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ env.TARGET }}.dmg created: ${{ steps.upload_sigrok-cli_dmg_artifact.outputs.artifact-url', matrix.target.target }} | ||
with: | ||
script: | | ||
github.rest.issues.createComment({ | ||
issue_number: ${{ github.event.pull_request.number }}, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: process.env.PR_NOTES | ||
}) | ||
continuous_release_pulseview: | ||
name: Create continuous PulseView release and add artifacts to it | ||
if: | | ||
(endsWith(github.repository, 'pulseview') || endsWith(github.repository, 'sigrok-build')) && | ||
((github.event_name == 'push' && github.ref == 'refs/heads/master') || | ||
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master')) | ||
runs-on: ubuntu-latest | ||
needs: | ||
- build_pulseview_mxe | ||
- build_pulseview_appimage | ||
- build_pulseview_macos | ||
steps: | ||
- name: Download all other artifacts | ||
uses: actions/download-artifact@v4 | ||
- name: Inspect directory after downloading artifacts | ||
run: ls -alFR | ||
- name: Create release | ||
id: create_release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
files: | | ||
artifact-pulseview-i686-debug-mxe/pulseview-* | ||
artifact-pulseview-i686-release-mxe/pulseview-* | ||
artifact-pulseview-x86_64-debug-mxe/pulseview-* | ||
artifact-pulseview-x86_64-release-mxe/pulseview-* | ||
artifact-pulseview-x86_64-debug-appimage/pulseview-* | ||
artifact-pulseview-x86_64-release-appimage/pulseview-* | ||
artifact-pulseview-macos/pulseview-* | ||
tag_name: continuous | ||
generate_release_notes: false | ||
draft: false | ||
fail_on_unmatched_files: true | ||
continuous_release_sigrok-cli: | ||
name: Create continuous sigrok-cli release and add artifacts to it | ||
if: | | ||
(endsWith(github.repository, 'sigrok-cli') || endsWith(github.repository, 'sigrok-build')) && | ||
((github.event_name == 'push' && github.ref == 'refs/heads/master') || | ||
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master')) | ||
runs-on: ubuntu-latest | ||
needs: | ||
- build_sigrok-cli_mxe | ||
- build_sigrok-cli_appimage | ||
- build_sigrok-cli_macos | ||
steps: | ||
- name: Download all other artifacts | ||
uses: actions/download-artifact@v4 | ||
- name: Inspect directory after downloading artifacts | ||
run: ls -alFR | ||
- name: Create release | ||
id: create_release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
files: | | ||
artifact-sigrok-cli-i686-mxe/sigrok-cli-* | ||
artifact-sigrok-cli-x86_64-mxe/sigrok-cli-* | ||
artifact-sigrok-cli-x86_64-appimage/sigrok-cli-* | ||
artifact-sigrok-cli-macos/sigrok-cli-* | ||
tag_name: continuous | ||
generate_release_notes: false | ||
draft: false | ||
fail_on_unmatched_files: true | ||
continuous_release_all: | ||
name: Create continuous release and add artifacts to it | ||
if: | | ||
(endsWith(github.repository, 'sigrok-build')) && | ||
(github.event_name == 'push' && github.ref == 'refs/heads/master') || | ||
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master') | ||
runs-on: ubuntu-latest | ||
needs: | ||
- continuous_release_pulseview | ||
- continuous_release_sigrok-cli | ||
steps: | ||
- name: Debug output | ||
run: echo | ||
debug_output: | ||
name: Debug output | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Debug output | ||
env: | ||
GH_REPO: ${{ github.repository }} | ||
GH_EVENT_NAME: ${{ github.event_name }} | ||
GH_REF: ${{ github.ref }} | ||
run: echo "Repo $GH_REPO, Event $GH_EVENT_NAME, Ref $GH_REF" | ||
- name: Runner debug output | ||
run: ldd --version |