Skip to content

Commit

Permalink
actions: Add GitHub Actions pipeline for building and releasing
Browse files Browse the repository at this point in the history
  • Loading branch information
PixelyIon committed Jul 30, 2024
1 parent 5cc60a1 commit 3a64fc5
Showing 1 changed file with 131 additions and 0 deletions.
131 changes: 131 additions & 0 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
name: Build and Release DeckTX

on:
push:
branches: [ "main" ]
tags: [ '*' ]
pull_request:
branches: [ "main" ]
workflow_dispatch:

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 reusable strings
id: strings
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$env:GITHUB_ENV"
echo "install-dir=${{ github.workspace }}/install" >> "$env:GITHUB_ENV"
echo "artifact-name=decktx.zip" >> "$env:GITHUB_ENV"
- name: Configure CMake
run: cmake -B ${{ env.build-output-dir }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.install-dir }} -S ${{ github.workspace }}

- name: Build
run: cmake --build ${{ env.build-output-dir }} --config Release --target install

- name: Zip install directory
run: powershell Compress-Archive -Path ${{ env.install-dir }}\* -DestinationPath ${{ env.github.workspace }}\${{ env.artifact-name }}

- name: Package build artifacts
uses: actions/upload-artifact@v3
with:
name: DeckTX-Windows
path: ${{ env.github.workspace }}\${{ env.artifact-name }}

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: |
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- name: Set reusable strings
id: strings
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_ENV"
echo "install-dir=${{ github.workspace }}/install" >> "$GITHUB_ENV"
echo "artifact-name=decktx.flatpak" >> "$GITHUB_ENV"
- name: Build Flatpak
run: |
mkdir -p ${{ env.build-output-dir }}/flatpak-decktx
flatpak-builder --install-deps-from=flathub --force-clean --repo=repo ${{ env.build-output-dir }}/flatpak-decktx ${{ github.workspace }}/flatpak.json
flatpak build-bundle repo ${{ env.github.workspace }}/decktx.flatpak com.pixelyion.DeckTX
- name: Package build artifacts
uses: actions/upload-artifact@v3
with:
name: DeckTX-Linux
path: ${{ env.github.workspace }}/decktx.flatpak

release:
runs-on: ubuntu-latest
needs: [build-windows, build-linux]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4

- name: Download Windows build artifacts
uses: actions/download-artifact@v3
with:
name: DeckTX-Windows
path: ${{ github.workspace }}

- name: Download Linux build artifacts
uses: actions/download-artifact@v3
with:
name: DeckTX-Linux
path: ${{ github.workspace }}

- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body: |
Automatic release of DeckTX for tag ${{ github.ref }}.
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.zip
asset_name: decktx-windows.zip
asset_content_type: application/zip

- name: Upload Release Asset (Linux)
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.flatpak
asset_name: decktx-linux.flatpak
asset_content_type: application/vnd.flatpak

0 comments on commit 3a64fc5

Please sign in to comment.