Skip to content

Commit

Permalink
Merge b956c9d into a33c96c
Browse files Browse the repository at this point in the history
  • Loading branch information
TwanLuttik authored Aug 12, 2024
2 parents a33c96c + b956c9d commit 6596f6d
Showing 1 changed file with 61 additions and 64 deletions.
125 changes: 61 additions & 64 deletions .github/workflows/build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@ name: Build and Deploy

# Trigger the workflow on push to the specified branch
on:
pull_request:
branches:
- main
push:
branches:
- main

# Define the jobs to be run
jobs:
# Define the build job
# Define the build job for macOS
build:
# Specify the runner environment
runs-on: macos-latest
Expand Down Expand Up @@ -64,11 +67,10 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: macos-silicon
# The current path is very specific and might need adjustments with any changes in the file name or structure. A more generalized path (e.g., src-tauri/target/release/bundle/dmg/*.dmg) would be preferable as it's more flexible and resilient to such changes.
path: src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg
if-no-files-found: error # or 'warn' or 'ignore'
if-no-files-found: error

# Pre command for intell build
# Pre command for Intel build
- name: rustup command
run: rustup target add x86_64-apple-darwin

Expand All @@ -81,9 +83,8 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: macos-intel
# The current path is very specific and might need adjustments with any changes in the file name or structure. A more generalized path (e.g., src-tauri/target/release/bundle/dmg/*.dmg) would be preferable as it's more flexible and resilient to such changes.
path: src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/*.dmg
if-no-files-found: error # or 'warn' or 'ignore'
if-no-files-found: error

# Build the project for MacOS Universal (both Silicon and Intel)
- name: Build for MacOS Universal
Expand All @@ -94,77 +95,82 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: macos-universal
# The current path is very specific and might need adjustments with any changes in the file name or structure. A more generalized path (e.g., src-tauri/target/release/bundle/dmg/*.dmg) would be preferable as it's more flexible and resilient to such changes.
path: src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
if-no-files-found: error # or 'warn' or 'ignore'
if-no-files-found: error

# Placeholder steps for future implementation for Windows
# Build the project for Windows OS
# Define the build job for Windows
windows-build:
# Specify the runner environment
runs-on: windows-latest

- name: Pre windows script
# Define the steps to be performed in the Windows build job
steps:
# Add the target architecture for building Windows apps
- name: Add target architecture
run: rustup target add x86_64-pc-windows-msvc



# Check out the repository code to the runner
- name: Checkout code
uses: actions/checkout@v4

# Set up the required Node.js version
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "20.x"

# Set up the Rust toolchain
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

# Install pnpm (a fast, disk space efficient package manager)
- name: Install pnpm
run: npm install -g pnpm

# Install project dependencies
- name: Install dependencies
run: pnpm i

# Build the project for Windows
- name: Build for Windows
run: pnpm build:app:windows

# Archive Windows build artifacts
- name: Archive Windows artifacts
uses: actions/upload-artifact@v3
with:
name: windows
path: src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe

# Placeholder steps for future implementation for Linux
# Build the project for Linux OS
# - name: Build for Linux
# run: pnpm build:app:linux

# - name: Archive Linux artifacts
# uses: actions/upload-artifact@v3
# with:
# name: linux
# path: src-tauri/target/release/bundle/linux/* # Adjust this path if necessary

# # List the contents of the build directory
# # For Debugging purposes
# - name: List files in the build directory
# run: |
# echo "Listing contents of macos-silicon directory"
# ls -la src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/
# echo "Listing contents of macos-intel directory"
# ls -la src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/
# echo "Listing contents of macos-universal directory"
# ls -la src-tauri/target/universal-apple-darwin/release/bundle/dmg/

# Define the release job which depends on the build job
# Define the release job which depends on both the macOS and Windows build jobs
release:
# Specify that this job needs the build job to complete successfully
needs: build
# Specify that this job needs the build and windows-build jobs to complete successfully
needs: [build, windows-build]
# Specify the runner environment
runs-on: ubuntu-latest

# Define the steps to be performed in the release job
steps:
# Download the build artifacts from the build job
- name: Download artifacts
- name: Download macOS artifacts
uses: actions/download-artifact@v3
with:
name: macos-silicon

- name: Download Windows artifacts
uses: actions/download-artifact@v3
with:
name: windows

# # List the contents of the directories
# # For debugging purposes
# - name: List contents of directories
# run: |
# echo "Listing contents of macos-silicon directory"
# ls -la /home/runner/work/Ollama-Gui/Ollama-Gui/macos-silicon
# echo "Listing contents of macos-intel directory"
# ls -la /home/runner/work/Ollama-Gui/Ollama-Gui/macos-intel
# echo "Listing contents of macos-universal directory"
# ls -la /home/runner/work/Ollama-Gui/Ollama-Gui/macos-universal

# Needs to be updated to use an adequate generated tag
# Generate the tag
- name: Generate tag
id: generate_tag
run: echo "::set-output name=tag::release-$(date +'%Y%m%d%H%M%S')"

# Create a new GitHub release with the generated tag
- name: Create GitHub Release
id: create_release
Expand All @@ -180,7 +186,7 @@ jobs:
# Get the file name and assign it to an object
- name: Get Silicon file name
id: get_filename_silicon
run: echo "::set-output name=filename::$(ls /home/runner/work/Ollama-Gui/Ollama-Gui/macos-silicon/*.dmg)"
run: echo "::set-output name=filename::$(ls src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg)"

# Print the file name
- name: Echo the Silicon file name
Expand All @@ -200,7 +206,7 @@ jobs:
# Get the file name and assign it to an object
- name: Get Intel file name
id: get_filename_intel
run: echo "::set-output name=filename::$(ls /home/runner/work/Ollama-Gui/Ollama-Gui/macos-intel/*.dmg)"
run: echo "::set-output name=filename::$(ls src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/*.dmg)"

# Print the file name
- name: Echo the Intel file name
Expand All @@ -220,19 +226,10 @@ jobs:
# Get the file name and assign it to an object
- name: Get Universal file name
id: get_filename_universal
run: echo "::set-output name=filename::$(ls /home/runner/work/Ollama-Gui/Ollama-Gui/macos-universal/*.dmg)"
run: echo "::set-output name=filename::$(ls src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg)"

# Print the file name
- name: Echo the Universal file name
run: echo "The Universal file name is ${{ steps.get_filename_universal.outputs.filename }}"

# Upload the MacOS Universal build artifact to the GitHub release
- name: Upload Release Asset (MacOS Universal)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ steps.get_filename_universal.outputs.filename }} # adjusted path
asset_name: Ollama-Gui-MacOS-Universal.dmg
asset_content_type: application/octet-stream

0 comments on commit 6596f6d

Please sign in to comment.