splitting up builds
This commit is contained in:
committed by
Phoenix
parent
fe8c8230d1
commit
0b50dd47c1
149
.github/workflows/build-flumi.yml
vendored
Normal file
149
.github/workflows/build-flumi.yml
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
name: Build Flumi
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'flumi/**'
|
||||
- '.github/workflows/build-flumi.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'flumi/**'
|
||||
- '.github/workflows/build-flumi.yml'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
use_latest_gdextension:
|
||||
description: 'Use latest GDExtension artifacts from main branch'
|
||||
required: false
|
||||
default: 'false'
|
||||
type: boolean
|
||||
|
||||
jobs:
|
||||
build-flumi:
|
||||
name: Build Flumi
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
platform: linux
|
||||
godot-version: "4.4.1"
|
||||
export-preset: "Linux"
|
||||
- os: windows-latest
|
||||
platform: windows
|
||||
godot-version: "4.4.1"
|
||||
export-preset: "Windows Desktop"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Download GDExtension artifacts (if available)
|
||||
if: github.event.inputs.use_latest_gdextension == 'true'
|
||||
uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
workflow: build-gdextension.yml
|
||||
name: gdextension-${{ matrix.platform }}
|
||||
path: gdextension-artifacts
|
||||
if_no_artifact_found: warn
|
||||
continue-on-error: true
|
||||
|
||||
- name: Cache Godot installation
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.local/share/godot
|
||||
~/AppData/Roaming/Godot
|
||||
key: ${{ runner.os }}-godot-${{ matrix.godot-version }}
|
||||
|
||||
- name: Setup Godot
|
||||
uses: chickensoft-games/setup-godot@v2.3.0
|
||||
with:
|
||||
version: ${{ matrix.godot-version }}
|
||||
include-templates: true
|
||||
|
||||
- name: Prepare GDExtension addon (if artifacts available)
|
||||
if: hashFiles('gdextension-artifacts/*') != ''
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p flumi/addons/gurt-protocol/bin/${{ matrix.platform }}
|
||||
|
||||
# Copy GDExtension files
|
||||
cp gdextension-artifacts/gurt_godot.gdextension flumi/addons/gurt-protocol/
|
||||
cp gdextension-artifacts/plugin.cfg flumi/addons/gurt-protocol/
|
||||
cp gdextension-artifacts/plugin.gd flumi/addons/gurt-protocol/
|
||||
|
||||
# Copy the built library
|
||||
case "${{ matrix.platform }}" in
|
||||
windows)
|
||||
cp gdextension-artifacts/gurt_godot.dll flumi/addons/gurt-protocol/bin/${{ matrix.platform }}/
|
||||
;;
|
||||
linux)
|
||||
cp gdextension-artifacts/libgurt_godot.so flumi/addons/gurt-protocol/bin/${{ matrix.platform }}/
|
||||
;;
|
||||
esac
|
||||
|
||||
- name: Cache Godot import files
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
flumi/.godot/
|
||||
key: ${{ runner.os }}-flumi-import-${{ hashFiles('flumi/**/*.tscn', 'flumi/**/*.tres', 'flumi/**/*.gd') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-flumi-import-
|
||||
|
||||
- name: Import Godot project
|
||||
run: |
|
||||
cd flumi
|
||||
godot --headless --import
|
||||
|
||||
- name: Verify export presets
|
||||
shell: bash
|
||||
run: |
|
||||
cd flumi
|
||||
echo "Available export presets:"
|
||||
if [ -f export_presets.cfg ]; then
|
||||
grep -E '^\[preset\.' export_presets.cfg || echo "No presets found in config"
|
||||
else
|
||||
echo "export_presets.cfg not found"
|
||||
fi
|
||||
|
||||
- name: Export Flumi
|
||||
shell: bash
|
||||
run: |
|
||||
cd flumi
|
||||
mkdir -p ../flumi-builds/${{ matrix.platform }}
|
||||
|
||||
case "${{ matrix.platform }}" in
|
||||
windows)
|
||||
echo "Exporting for Windows..."
|
||||
godot --headless --export-release "${{ matrix.export-preset }}" ../flumi-builds/${{ matrix.platform }}/Flumi.exe --verbose || {
|
||||
echo "Export failed with exit code $?"
|
||||
echo "Trying without --verbose flag..."
|
||||
godot --headless --export-release "${{ matrix.export-preset }}" ../flumi-builds/${{ matrix.platform }}/Flumi.exe
|
||||
}
|
||||
;;
|
||||
linux)
|
||||
echo "Exporting for Linux..."
|
||||
godot --headless --export-release "${{ matrix.export-preset }}" ../flumi-builds/${{ matrix.platform }}/Flumi --verbose || {
|
||||
echo "Export failed with exit code $?"
|
||||
echo "Trying without --verbose flag..."
|
||||
godot --headless --export-release "${{ matrix.export-preset }}" ../flumi-builds/${{ matrix.platform }}/Flumi
|
||||
}
|
||||
;;
|
||||
esac
|
||||
|
||||
# Verify the export was successful
|
||||
if [ -f "../flumi-builds/${{ matrix.platform }}/Flumi${{ matrix.platform == 'windows' && '.exe' || '' }}" ]; then
|
||||
echo "Export successful!"
|
||||
ls -la ../flumi-builds/${{ matrix.platform }}/
|
||||
else
|
||||
echo "Export failed - no output file found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Upload Flumi artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: flumi-${{ matrix.platform }}
|
||||
path: flumi-builds/${{ matrix.platform }}
|
||||
retention-days: 30
|
||||
78
.github/workflows/build-gdextension.yml
vendored
Normal file
78
.github/workflows/build-gdextension.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
name: Build GDExtension
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'protocol/gdextension/**'
|
||||
- 'protocol/library/**'
|
||||
- '.github/workflows/build-gdextension.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'protocol/gdextension/**'
|
||||
- 'protocol/library/**'
|
||||
- '.github/workflows/build-gdextension.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
build-gdextension:
|
||||
name: Build GDExtension
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
platform: linux
|
||||
lib_name: libgurt_godot.so
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
platform: windows
|
||||
lib_name: gurt_godot.dll
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Cache cargo dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
protocol/target/
|
||||
key: ${{ runner.os }}-gdextension-${{ hashFiles('protocol/gdextension/Cargo.lock', 'protocol/library/Cargo.toml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gdextension-
|
||||
${{ runner.os }}-cargo-
|
||||
|
||||
- name: Build GDExtension
|
||||
run: |
|
||||
cd protocol/gdextension
|
||||
cargo build --release --target ${{ matrix.target }}
|
||||
|
||||
- name: Prepare artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts/${{ matrix.platform }}
|
||||
cp protocol/gdextension/target/${{ matrix.target }}/release/${{ matrix.lib_name }} artifacts/${{ matrix.platform }}/
|
||||
|
||||
# Also copy the extension configuration files
|
||||
cp protocol/gdextension/gurt_godot.gdextension artifacts/${{ matrix.platform }}/
|
||||
cp protocol/gdextension/plugin.cfg artifacts/${{ matrix.platform }}/
|
||||
cp protocol/gdextension/plugin.gd artifacts/${{ matrix.platform }}/
|
||||
|
||||
- name: Upload GDExtension artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gdextension-${{ matrix.platform }}
|
||||
path: artifacts/${{ matrix.platform }}
|
||||
retention-days: 30
|
||||
108
.github/workflows/build-gurtca.yml
vendored
Normal file
108
.github/workflows/build-gurtca.yml
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
name: Build GurtCA
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'protocol/gurtca/**'
|
||||
- 'protocol/library/**'
|
||||
- '.github/workflows/build-gurtca.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'protocol/gurtca/**'
|
||||
- 'protocol/library/**'
|
||||
- '.github/workflows/build-gurtca.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
build-gurtca:
|
||||
name: Build GurtCA
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
platform: linux
|
||||
ext: ""
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
platform: windows
|
||||
ext: ".exe"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Cache cargo dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
protocol/target/
|
||||
key: ${{ runner.os }}-gurtca-${{ hashFiles('protocol/gurtca/Cargo.lock', 'protocol/library/Cargo.toml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gurtca-
|
||||
${{ runner.os }}-cargo-
|
||||
|
||||
- name: Install OpenSSL (Ubuntu)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y pkg-config libssl-dev
|
||||
|
||||
- name: Cache vcpkg (Windows)
|
||||
if: matrix.os == 'windows-latest'
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: C:\vcpkg
|
||||
key: ${{ runner.os }}-vcpkg-openssl
|
||||
restore-keys: |
|
||||
${{ runner.os }}-vcpkg-
|
||||
|
||||
- name: Install OpenSSL (Windows)
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: |
|
||||
if (!(Test-Path "C:\vcpkg")) {
|
||||
git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg
|
||||
cd C:\vcpkg
|
||||
.\bootstrap-vcpkg.bat
|
||||
.\vcpkg.exe integrate install
|
||||
}
|
||||
cd C:\vcpkg
|
||||
.\vcpkg.exe install openssl:x64-windows-static-md
|
||||
shell: pwsh
|
||||
|
||||
- name: Set OpenSSL environment variables (Windows)
|
||||
if: matrix.os == 'windows-latest'
|
||||
shell: pwsh
|
||||
run: |
|
||||
echo "VCPKG_ROOT=C:\vcpkg" >> $env:GITHUB_ENV
|
||||
echo "OPENSSL_DIR=C:\vcpkg\installed\x64-windows-static-md" >> $env:GITHUB_ENV
|
||||
|
||||
- name: Build GurtCA
|
||||
run: |
|
||||
cd protocol/gurtca
|
||||
cargo build --release --target ${{ matrix.target }}
|
||||
|
||||
- name: Prepare artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts/${{ matrix.platform }}
|
||||
cp protocol/gurtca/target/${{ matrix.target }}/release/gurtca${{ matrix.ext }} artifacts/${{ matrix.platform }}/
|
||||
|
||||
- name: Upload GurtCA artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gurtca-${{ matrix.platform }}
|
||||
path: artifacts/${{ matrix.platform }}
|
||||
retention-days: 30
|
||||
73
.github/workflows/build-gurty.yml
vendored
Normal file
73
.github/workflows/build-gurty.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
name: Build Gurty
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'protocol/cli/**'
|
||||
- 'protocol/library/**'
|
||||
- '.github/workflows/build-gurty.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'protocol/cli/**'
|
||||
- 'protocol/library/**'
|
||||
- '.github/workflows/build-gurty.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
build-gurty:
|
||||
name: Build Gurty
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
platform: linux
|
||||
ext: ""
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
platform: windows
|
||||
ext: ".exe"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Cache cargo dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
protocol/target/
|
||||
key: ${{ runner.os }}-gurty-${{ hashFiles('protocol/cli/Cargo.lock', 'protocol/library/Cargo.toml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gurty-
|
||||
${{ runner.os }}-cargo-
|
||||
|
||||
- name: Build Gurty
|
||||
run: |
|
||||
cd protocol/cli
|
||||
cargo build --release --target ${{ matrix.target }}
|
||||
|
||||
- name: Prepare artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts/${{ matrix.platform }}
|
||||
cp protocol/cli/target/${{ matrix.target }}/release/gurty${{ matrix.ext }} artifacts/${{ matrix.platform }}/
|
||||
|
||||
- name: Upload Gurty artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: gurty-${{ matrix.platform }}
|
||||
path: artifacts/${{ matrix.platform }}
|
||||
retention-days: 30
|
||||
171
.github/workflows/package-release.yml
vendored
Normal file
171
.github/workflows/package-release.yml
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
name: Package Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: 'Release tag'
|
||||
required: true
|
||||
default: 'v0.1.0'
|
||||
download_artifacts:
|
||||
description: 'Download latest artifacts from main branch'
|
||||
required: false
|
||||
default: 'true'
|
||||
type: boolean
|
||||
|
||||
jobs:
|
||||
package-release:
|
||||
name: Package Release
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Download GurtCA artifacts
|
||||
if: github.event.inputs.download_artifacts == 'true' || github.event_name == 'push'
|
||||
uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
workflow: build-gurtca.yml
|
||||
name_is_regexp: true
|
||||
name: gurtca-.*
|
||||
path: artifacts/
|
||||
if_no_artifact_found: warn
|
||||
continue-on-error: true
|
||||
|
||||
- name: Download Gurty artifacts
|
||||
if: github.event.inputs.download_artifacts == 'true' || github.event_name == 'push'
|
||||
uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
workflow: build-gurty.yml
|
||||
name_is_regexp: true
|
||||
name: gurty-.*
|
||||
path: artifacts/
|
||||
if_no_artifact_found: warn
|
||||
continue-on-error: true
|
||||
|
||||
- name: Download GDExtension artifacts
|
||||
if: github.event.inputs.download_artifacts == 'true' || github.event_name == 'push'
|
||||
uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
workflow: build-gdextension.yml
|
||||
name_is_regexp: true
|
||||
name: gdextension-.*
|
||||
path: artifacts/
|
||||
if_no_artifact_found: warn
|
||||
continue-on-error: true
|
||||
|
||||
- name: Download Flumi artifacts
|
||||
if: github.event.inputs.download_artifacts == 'true' || github.event_name == 'push'
|
||||
uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
workflow: build-flumi.yml
|
||||
name_is_regexp: true
|
||||
name: flumi-.*
|
||||
path: artifacts/
|
||||
if_no_artifact_found: warn
|
||||
continue-on-error: true
|
||||
|
||||
- name: List downloaded artifacts
|
||||
run: |
|
||||
echo "Downloaded artifacts:"
|
||||
find artifacts/ -type f -name "*" | sort
|
||||
|
||||
- name: Prepare release assets
|
||||
run: |
|
||||
mkdir -p release-assets
|
||||
|
||||
# Package Rust binaries (GurtCA + Gurty)
|
||||
for platform in linux windows; do
|
||||
mkdir -p "temp-tools-$platform"
|
||||
|
||||
# Copy GurtCA if available
|
||||
if [ -d "artifacts/gurtca-$platform" ]; then
|
||||
cp artifacts/gurtca-$platform/* "temp-tools-$platform/"
|
||||
fi
|
||||
|
||||
# Copy Gurty if available
|
||||
if [ -d "artifacts/gurty-$platform" ]; then
|
||||
cp artifacts/gurty-$platform/* "temp-tools-$platform/"
|
||||
fi
|
||||
|
||||
# Package if we have any files
|
||||
if [ "$(ls -A temp-tools-$platform)" ]; then
|
||||
cd "temp-tools-$platform"
|
||||
if [ "$platform" = "windows" ]; then
|
||||
zip -r "../release-assets/gurted-tools-$platform.zip" .
|
||||
else
|
||||
tar -czf "../release-assets/gurted-tools-$platform.tar.gz" .
|
||||
fi
|
||||
cd ..
|
||||
fi
|
||||
|
||||
rm -rf "temp-tools-$platform"
|
||||
done
|
||||
|
||||
# Package Flumi builds
|
||||
for platform in linux windows; do
|
||||
if [ -d "artifacts/flumi-$platform" ]; then
|
||||
cd "artifacts/flumi-$platform"
|
||||
if [ "$platform" = "windows" ]; then
|
||||
zip -r "../../release-assets/flumi-$platform.zip" .
|
||||
else
|
||||
tar -czf "../../release-assets/flumi-$platform.tar.gz" .
|
||||
fi
|
||||
cd ../..
|
||||
fi
|
||||
done
|
||||
|
||||
# Package GDExtension separately for developers
|
||||
for platform in linux windows; do
|
||||
if [ -d "artifacts/gdextension-$platform" ]; then
|
||||
cd "artifacts/gdextension-$platform"
|
||||
if [ "$platform" = "windows" ]; then
|
||||
zip -r "../../release-assets/gdextension-$platform.zip" .
|
||||
else
|
||||
tar -czf "../../release-assets/gdextension-$platform.tar.gz" .
|
||||
fi
|
||||
cd ../..
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Get release tag
|
||||
id: get_tag
|
||||
run: |
|
||||
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||
echo "tag=${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ steps.get_tag.outputs.tag }}
|
||||
name: Gurted ${{ steps.get_tag.outputs.tag }}
|
||||
body: |
|
||||
## Gurted Release ${{ steps.get_tag.outputs.tag }}
|
||||
|
||||
This release includes:
|
||||
- **GurtCA**: Certificate Authority for TLS certificates
|
||||
- **Gurty**: CLI tool for managing GURT protocol servers
|
||||
- **Flumi**: The official wayfinder (browser) for the GURT ecosystem
|
||||
- **GDExtension**: Godot extension for GURT protocol integration
|
||||
|
||||
### Downloads
|
||||
- `gurted-tools-*.zip/tar.gz`: Contains GurtCA and Gurty binaries
|
||||
- `flumi-*.zip/tar.gz`: Contains the Flumi wayfinder application
|
||||
- `gdextension-*.zip/tar.gz`: Contains the GDExtension library for developers
|
||||
|
||||
### Platform Support
|
||||
- Linux (x86_64)
|
||||
- Windows (x86_64)
|
||||
|
||||
For documentation and usage instructions, visit [docs.gurted.com](https://docs.gurted.com)
|
||||
files: release-assets/*
|
||||
draft: false
|
||||
prerelease: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
Reference in New Issue
Block a user