Skip to content

Commit

Permalink
testing build artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
savaughn committed Oct 1, 2023
1 parent 9228e69 commit 697fb6b
Showing 1 changed file with 118 additions and 14 deletions.
132 changes: 118 additions & 14 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
name: Build and Test
name: Build and Bundle MacOS (x64 and arm64)

on:
push:
branches:
- main

jobs:
build:
build_x64:
runs-on: macos-latest
strategy:
matrix:
arch: [arm64] # Specify the desired architectures here
arch: [x64]

steps:
- name: Checkout Code
Expand All @@ -37,20 +37,60 @@ jobs:
run: |
# Copy libpksav.dylib to the same directory as the executable
cp deps/pksav/build/lib/libpksav.dylib build/
# Update the library path in the executable
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @rpath/libpksav.dylib build/pokeromtrader
install_name_tool -add_rpath @executable_path/../Frameworks build/pokeromtrader
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @executable_path/libpksav.dylib build/pokeromtrader
- name: Publish Build Artifacts
uses: actions/upload-artifact@v3
with:
name: pokeromtrader-artifacts # Specify a name for your artifacts
name: pokeromtrader-artifacts-x64 # Specify a name for your artifacts
path: build/ # Specify the directory containing your build artifacts

bundle_macos_release:
build_arm64:
runs-on: macos-latest
needs: build # Ensure that the 'build' job is completed before this one starts
strategy:
matrix:
arch: [arm64]

steps:
- name: Checkout Code
uses: actions/checkout@v3

- name: Build pksav
run: |
cd deps/pksav/
mkdir build
cd build
cmake ..
make
- name: Build raylib
run: |
cd deps/raylib/src/
make PLATFORM=PLATFORM_DESKTOP
- name: Build Project
run: |
make all
- name: Bundle Executable with Library
run: |
# Copy libpksav.dylib to the same directory as the executable
cp deps/pksav/build/lib/libpksav.dylib build/
# Update the library path in the executable
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @executable_path/libpksav.dylib build/pokeromtrader
- name: Publish Build Artifacts
uses: actions/upload-artifact@v3
with:
name: pokeromtrader-artifacts-arm64 # Specify a name for your artifacts
path: build/ # Specify the directory containing your build artifacts

bundle_macos_arm64:
runs-on: macos-latest
needs: build_arm64 # Ensure that the 'build' job is completed before this one starts

steps:
- name: Checkout Code
Expand All @@ -60,7 +100,7 @@ jobs:
# Download the build artifact from the 'build' job
uses: actions/download-artifact@v2
with:
name: pokeromtrader-artifacts # Specify the name of the build artifact
name: pokeromtrader-artifacts-arm64 # Specify the name of the build artifact

- name: Bundle macOS Release
run: |
Expand Down Expand Up @@ -98,19 +138,83 @@ jobs:
echo '</dict>' >> "${INFO_PLIST}"
echo '</plist>' >> "${INFO_PLIST}"
# Make the executable executable
chmod +x "${MACOS_DESTINATION}/${APP_BUNDLE_EXECUTABLE}"
echo "macOS release bundle created"
- name: Make App Executable
- name: Upload macOS Release
uses: actions/upload-artifact@v2
with:
name: pokeromtrader-arm64 # Specify a name for your macOS release
path: build/macos

- name: Clean Up
run: |
make clean
bundle_macos_x64:
runs-on: macos-latest
needs: build_x64 # Ensure that the 'build' job is completed before this one starts

steps:
- name: Checkout Code
uses: actions/checkout@v3

- name: Download Build Artifact
# Download the build artifact from the 'build' job
uses: actions/download-artifact@v2
with:
name: pokeromtrader-artifacts-x64 # Specify the name of the build artifact

- name: Bundle macOS Release
run: |
chmod +x build/macos/PokeromTrader.app/Contents/MacOS/pokeromtrader
working-directory: ${{ github.workspace }}
# You can access the downloaded artifact in the current directory
BUILD_DIR="build"
MACOS_DESTINATION="${BUILD_DIR}/macos/PokeromTrader.app/Contents/MacOS"
MACOS_FRAMEWORKS_DESTINATION="${BUILD_DIR}/macos/PokeromTrader.app/Contents/Frameworks"
APP_BUNDLE_EXECUTABLE="pokeromtrader"
APP_BUNDLE_ID="com.yourcompany.pokeromtrader"
APP_BUNDLE_NAME="PokeromTrader"
INFO_PLIST="${BUILD_DIR}/macos/PokeromTrader.app/Contents/Info.plist"
# Create the build directory if it doesn't exist
mkdir -p "${BUILD_DIR}"
# Create the directory structure
mkdir -p "${MACOS_DESTINATION}"
mkdir -p "${MACOS_FRAMEWORKS_DESTINATION}"
# Copy the executable to the .app bundle
cp "${{ github.workspace }}/pokeromtrader" "${MACOS_DESTINATION}/pokeromtrader"
cp "${{ github.workspace }}/libpksav.dylib" "${MACOS_FRAMEWORKS_DESTINATION}/libpksav.dylib"
# Create Info.plist file
echo '<?xml version="1.0" encoding="UTF-8"?>' > "${INFO_PLIST}"
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> "${INFO_PLIST}"
echo '<plist version="1.0">' >> "${INFO_PLIST}"
echo '<dict>' >> "${INFO_PLIST}"
echo ' <key>CFBundleExecutable</key>' >> "${INFO_PLIST}"
echo " <string>${APP_BUNDLE_EXECUTABLE}</string>" >> "${INFO_PLIST}"
echo ' <key>CFBundleIdentifier</key>' >> "${INFO_PLIST}"
echo " <string>${APP_BUNDLE_ID}</string>" >> "${INFO_PLIST}"
echo ' <key>CFBundleName</key>' >> "${INFO_PLIST}"
echo " <string>${APP_BUNDLE_NAME}</string>" >> "${INFO_PLIST}"
echo '</dict>' >> "${INFO_PLIST}"
echo '</plist>' >> "${INFO_PLIST}"
# Make the executable executable
chmod +x "${MACOS_DESTINATION}/${APP_BUNDLE_EXECUTABLE}"
echo "macOS release bundle created"
- name: Upload macOS Release
uses: actions/upload-artifact@v2
with:
name: pokeromtrader # Specify a name for your macOS release
name: pokeromtrader-x64 # Specify a name for your macOS release
path: build/macos

- name: Clean Up
run: |
make clean

0 comments on commit 697fb6b

Please sign in to comment.