Skip to content

updated command name #10

updated command name

updated command name #10

# Name of the GitHub Actions workflow
name: Build and Deploy
# Trigger the workflow on push to the specified branch
on:
push:
branches:
- main
# Define the jobs to be run
jobs:
# Define the build job
build:
# Specify the runner environment
runs-on: macos-latest
# Define the steps to be performed in the build job
steps:
# Add the target architecture for building MacOS Silicon apps
- name: Add target architecture
run: rustup target add aarch64-apple-darwin
# 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
# Check if there is a cache of the pnpm modules and restore it
- name: Cache pnpm modules
uses: actions/cache@v2
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
# 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 MacOS Silicon
- name: Build for MacOS Silicon
run: pnpm build:app:silicon
# Archive the MacOS Silicon build artifacts
- name: Archive MacOS Silicon artifacts
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'
# Pre command for intell build
- name: rustup command
run: rustup target add x86_64-apple-darwin
# Build the project for MacOS Intel
- name: Build for MacOS Intel
run: pnpm build:app:intell
# Archive the MacOS Intel build artifacts
- name: Archive MacOS Intel artifacts
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'
# Build the project for MacOS Universal (both Silicon and Intel)
- name: Build for MacOS Universal
run: pnpm build:app:universal
# Archive the MacOS Universal build artifacts
- name: Archive MacOS Universal artifacts
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'
# Placeholder steps for future implementation for Windows
# Build the project for Windows OS
- name: Build for Windows
run: pnpm build:app:windows
- 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
release:
# Specify that this job needs the build job to complete successfully
needs: 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
uses: actions/download-artifact@v3
# # 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
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.generate_tag.outputs.tag }}
release_name: Release ${{ steps.generate_tag.outputs.tag }}
draft: false
prerelease: false
# 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)"
# Print the file name
- name: Echo the Silicon file name
run: echo "The file name is ${{ steps.get_filename_silicon.outputs.filename }}"
# Upload the MacOS Silicon build artifact to the GitHub release
- name: Upload Release Asset (MacOS Silicon)
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_silicon.outputs.filename }} # adjusted path
asset_name: Ollama-Gui-MacOS-Silicon.dmg
asset_content_type: application/octet-stream
# 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)"
# Print the file name
- name: Echo the Intel file name
run: echo "The Intel file name is ${{ steps.get_filename_intel.outputs.filename }}"
# Upload the MacOS Intel build artifact to the GitHub release
- name: Upload Release Asset (MacOS Intel)
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_intel.outputs.filename }} # adjusted path
asset_name: Ollama-Gui-MacOS-Intel.dmg
asset_content_type: application/octet-stream
# 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)"
# 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