Skip to content

elrsman: Use SDL Gamepad API instead of Joystick API #24

elrsman: Use SDL Gamepad API instead of Joystick API

elrsman: Use SDL Gamepad API instead of Joystick API #24

Workflow file for this run

name: Build and Release DeckTX
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up CMake
uses: lukka/[email protected]
- name: Set environment variables
run: |
echo "build-dir=${{ github.workspace }}/build" >> "$env:GITHUB_ENV"
echo "install-dir=${{ github.workspace }}/install" >> "$env:GITHUB_ENV"
- name: Configure CMake
run: cmake -B ${{ env.build-dir }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.install-dir }} -S ${{ github.workspace }}
- name: Build
run: cmake --build ${{ env.build-dir }} --config Release --target install
- name: Package build artifacts
uses: actions/upload-artifact@v4
with:
name: DeckTX-Windows
path: ${{ env.install-dir }}
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Flatpak
run: |
sudo apt update
sudo apt install -y flatpak flatpak-builder
- name: Add Flathub Remote
run: |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- name: Set environment variables
run: |
echo "build-dir=${{ github.workspace }}/build" >> "$GITHUB_ENV"
echo "flatpak-json=${{ github.workspace }}/flatpak.json" >> "$GITHUB_ENV"
echo "flatpak-file=${{ github.workspace }}/decktx.flatpak" >> "$GITHUB_ENV"
- name: Allow file protocol in Git
run: git config --global protocol.file.allow always
- name: Generate Flatpak manifest
run: |
cat > ${{ env.flatpak-json }} <<EOL
{
"id": "com.pixelyion.DeckTX",
"runtime": "org.freedesktop.Platform",
"runtime-version": "23.08",
"sdk": "org.freedesktop.Sdk",
"command": "/app/DeckTX",
"modules": [
{
"name": "DeckTX",
"buildsystem": "cmake",
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release"
],
"build-options": {
"build-args": [ "--share=network" ]
},
"sources": [
{
"type": "dir",
"path": "."
}
]
}
],
"finish-args": [
"--share=network",
"--share=ipc",
"--device=dri",
"--socket=x11",
"--socket=wayland",
"--device=all"
]
}
EOL
- name: Build Flatpak
run: |
mkdir -p ${{ env.build-dir }}/flatpak-decktx
sudo flatpak-builder --install-deps-from=flathub --force-clean --repo=repo ${{ env.build-dir }}/flatpak-decktx ${{ env.flatpak-json }}
flatpak build-bundle repo ${{ env.flatpak-file }} com.pixelyion.DeckTX
- name: Package build artifacts
uses: actions/upload-artifact@v4
with:
name: DeckTX-Linux
path: ${{ env.flatpak-file }}
release:
runs-on: ubuntu-latest
needs: [build-windows, build-linux]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all tags and history
filter: tree:0
- name: Download Windows build artifacts
uses: actions/download-artifact@v4
with:
name: DeckTX-Windows
path: ${{ github.workspace }}/win
- name: Zip Windows build artifacts
run: |
cd ${{ github.workspace }}/win
zip -r ../decktx-windows.zip *
- name: Download Linux build artifacts
uses: actions/download-artifact@v4
with:
name: DeckTX-Linux
path: ${{ github.workspace }}
- name: Determine Next Tag
run: |
latest_tag=$(git tag --sort=-creatordate | grep -E '^v[0-9]+$' | head -n 1); \
if [ -z "$latest_tag" ]; then \
version=1; \
else \
tag_number=$(echo $latest_tag | sed -E 's/^v([0-9]+).*/\1/'); \
version=$((tag_number + 1)); \
fi; \
echo "VERSION=$version" >> $GITHUB_ENV
- name: Create Annotated Tag
run: |
git config --local user.email "actions-${{ github.run_id }}@github.com"
git config --local user.name "GitHub Actions ${{ github.run_id }}"
git tag -a v${{ env.VERSION }} -m "Release v${{ env.VERSION }}"
git push origin v${{ env.VERSION }}
- name: Create Release
id: create_release
uses: comnoco/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ env.VERSION }}
release_name: "Release v${{ env.VERSION }}"
body: |
Automatic release of DeckTX for ${{ github.sha }}.
draft: false
prerelease: false
- name: Upload Release Asset (Windows)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ github.workspace }}/decktx-windows.zip
asset_name: decktx-windows.zip
asset_content_type: application/zip
- name: Upload Release Asset (Linux)
uses: actions/upload-release-asset@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ github.workspace }}/decktx.flatpak
asset_name: decktx-linux.flatpak
asset_content_type: application/vnd.flatpak