Skip to content

Commit

Permalink
Merge pull request #307 from COS301-SE-2024/develop
Browse files Browse the repository at this point in the history
v0.9.0
  • Loading branch information
waveyboym committed Aug 12, 2024
2 parents 36f5318 + 17a4f95 commit 0da0807
Show file tree
Hide file tree
Showing 778 changed files with 141,182 additions and 29,381 deletions.
1 change: 1 addition & 0 deletions .anima/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cache
1 change: 1 addition & 0 deletions .anima/conventions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"assetsPath":"frontend/occupi-mobile3/screens/Login/assets/images/Occupi/","componentLibrary":"none","componentsPath":"frontend/occupi-web/src","framework":"react","language":"typescript","nextRouterType":"app-router","styling":"tailwind","tailwindConfigPath":"frontend/occupi-mobile3/tailwind.config.js","tailwindConfigReuseEnabled":false}
1 change: 1 addition & 0 deletions .anima/enrichments.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"codeFolding":false,"componentsReuse":true,"deepComponentDetection":false,"include":[],"localComponents":true,"packages":[],"remoteComponents":true,"useUsageExamples":true}
1 change: 1 addition & 0 deletions .anima/workspace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"workspaceId":"6ba95ff2-1dfa-467d-8afc-b1c1355dd1d4"}
312 changes: 213 additions & 99 deletions .github/workflows/build-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,147 +7,261 @@ on:

jobs:
build-backend-binary:
strategy:
matrix:
include:
- os: macos-latest # for Arm based macs (M1 and above).
goos: darwin
extension: ""
args: '--target aarch64-apple-darwin'
arch: arm64
- os: macos-latest # for Intel based macs.
goos: darwin
extension: ""
args: '--target x86_64-apple-darwin'
arch: x86_64
- os: windows-latest # for Windows.
goos: windows
extension: ".exe"
args: ''
arch: x86_64
- os: ubuntu-latest # for Linux.
goos: linux
extension: ""
args: ''
arch: x86_64

name: Build Backend Binary
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}

# set working directory
defaults:
run:
working-directory: occupi-backend

steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21' # Specify the Go version you are using

- name: Build application
run: |
go build -o occupi-backend_${{ matrix.goos }}_${{ matrix.arch }}${{ matrix.extension }} ${{ matrix.args }} -v cmd/occupi-backend/main.go
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: occupi-backend_${{ matrix.goos }}_${{ matrix.arch }}${{ matrix.extension }}
path: occupi-backend_${{ matrix.goos }}_${{ matrix.arch }}${{ matrix.extension }}

- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: '1.16'
build-android:
runs-on: ubuntu-latest

- name: Build Backend Binary
run: |
go build -o occupi-backend ./occupi-backend/cmd/occupi-backend/main.go
# set working directory
defaults:
run:
working-directory: frontend/occupi-mobile4

- name: Archive Backend Binary
run: |
mkdir -p dist
mv occupi-backend/occupi-backend dist/occupi-backend
zip -r dist/occupi-backend.zip dist/occupi-backend
steps:
- name: Setup repo
uses: actions/checkout@v4

- name: Setup node
uses: actions/[email protected]
with:
node-version: 18.x
cache: 'npm'

- name: Upload Backend Binary
uses: actions/upload-artifact@v2
with:
name: occupi-backend
path: dist/occupi-backend.zip
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Setup Android SDK
uses: android-actions/setup-android@v3

build-expo-app:
name: Build Expo App for Android and iOS
runs-on: [ubuntu-latest, macos-latest]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Expo
uses: expo/expo-github-action@v8
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '20'
- name: Install dependencies
run: npm install --legacy-peer-deps

- name: Install Expo CLI
run: |
npm install -g expo-cli
- name: Build Android app
run: eas build --platform android --profile preview --local --output ${{ github.workspace }}/occupi-mobile-android.apk

- name: Install Expo dependencies
run: |
cd occupi-frontend
npm install
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: occupi-mobile-android.apk
path: occupi-mobile-android.apk

- name: Build Expo App for native platforms
run: |
cd occupi-frontend/occupi-mobile
expo build
- name: Archive Expo App for Android and iOS
run: |
mkdir -p dist
mv occupi-frontend/occupi-mobile/dist dist/occupi-mobile
zip -r dist/occupi-mobile.zip dist/occupi-mobile
build-ios:
runs-on: macos-latest

- name: Upload Expo App for Android and iOS
uses: actions/upload-artifact@v2
with:
name: occupi-mobile
path: dist/occupi-backend.zip
# set working directory
defaults:
run:
working-directory: frontend/occupi-mobile4

steps:
- name: Setup repo
uses: actions/checkout@v4

- name: Setup node
uses: actions/[email protected]
with:
node-version: 18.x
cache: 'npm'

- name: Setup Expo
uses: expo/expo-github-action@v8
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}

- name: Install dependencies
run: npm install --legacy-peer-deps

- name: Build iOS app
run: eas build --platform ios --local --non-interactive --output ${{ github.workspace }}/occupi-mobile-ios.ipa

- name: Upload IPA artifact
uses: actions/upload-artifact@v4
with:
name: occupi-mobile-ios
path: ${{ github.workspace }}/occupi-mobile-ios.ipa

build-vite-app:
name: Build Vite App
runs-on: ubuntu-latest
steps:
- name: Checkout code
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
node-version: '14'
bun-version: latest # or "latest", "canary", <sha>

- name: Install Vite
- name: Install dependencies with Bun
run: |
npm install -g create-vite
cd frontend/occupi-web
bun install
- name: Install Vite dependencies
- name: Build with Vite
run: |
cd occupi-frontend
npm install
- name: Build Vite App
cd frontend/occupi-web
bun run build
- name: Archive Vite App from dist folder
run: |
cd occupi-frontend
npm run build
zip -r dist/occupi-web.zip frontend/occupi-web/dist
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: occupi-web
path: frontend/occupi-web/dist/occupi-web.zip

build-tauri-app:
strategy:
matrix:
include:
- os: macos-latest # for Arm based macs (M1 and above).
goos: darwin
extension: ""
args: '--target aarch64-apple-darwin'
arch: arm64
- os: macos-latest # for Intel based macs.
goos: darwin
extension: ""
args: '--target x86_64-apple-darwin'
arch: x86_64
- os: windows-latest # for Windows.
goos: windows
extension: ".exe"
args: ''
arch: x86_64
- os: ubuntu-latest # for Linux.
goos: linux
extension: ""
args: ''
arch: x86_64

# set working directory
defaults:
run:
working-directory: frontend/occupi-desktop

name: Build Tauri App
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Rust
uses: actions/setup-rust@v1
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
rust-version: '1.53.0'
bun-version: latest # or "latest", "canary", <sha>

- name: Install Tauri
- name: Install dependencies with Bun
run: |
cargo install tauri-bundler --force
cd frontend/occupi-desktop
bun install
- name: Build Tauri App
- name: Build with Tauri
run: |
cd occupi-frontend
tauri build
release:
name: Release
runs-on: ubuntu-latest
needs: [build-backend-binary, build-expo-app, build-vite-app, build-tauri-app]
steps:
- name: Checkout code
uses: actions/checkout@v4
cd frontend/occupi-desktop
bun run tauri build
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'

- name: Install GitHub CLI
- name: Archive and Upload MacOS Tauri App
if: startsWith(matrix.os, 'macos')
run: |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
sudo apt-add-repository https://cli.github.com/packages
sudo apt update
sudo apt install gh
mkdir -p tauri_artifacts
cp -R src-tauri/target/release/bundle/dmg/* tauri_artifacts/ || true
cp -R src-tauri/target/release/bundle/macos/* tauri_artifacts/ || true
- name: Login to GitHub
- name: Archive and Upload Windows Tauri App
if: startsWith(matrix.os, 'windows')
run: |
gh auth login
mkdir -p tauri_artifacts
cp -R src-tauri/target/release/bundle/nsis/* tauri_artifacts/ || true
cp -R src-tauri/target/release/bundle/msi/* tauri_artifacts/ || true
- name: Create a Release
- name: Archive and Upload Linux Tauri App
if: startsWith(matrix.os, 'ubuntu')
run: |
gh release create v1.0.0 -t "v1.0.0" -n "v1.0.0" ./occupi-backend/occupi-backend ./occupi-frontend/occupi-frontend ./occupi-frontend/dist ./occupi-frontend/build ./occupi-frontend/target/release/occupi-frontend
mkdir -p tauri_artifacts
cp -R src-tauri/target/release/bundle/deb/* tauri_artifacts/ || true
cp -R src-tauri/target/release/bundle/appimage/* tauri_artifacts/ || true
cp -R src-tauri/target/release/bundle/rpm/* tauri_artifacts/ || true
cp -R src-tauri/target/release/bundle/flatpak/* tauri_artifacts/ || true
- name: Upload Tauri Artifacts
uses: actions/upload-artifact@v4
with:
name: tauri-artifacts-${{ matrix.os }}
path: frontend/occupi-desktop/tauri_artifacts

- name: Upload Release Assets
run: |
gh release upload v1.0.0 ./occupi-backend/occupi-backend ./occupi-frontend/occupi-frontend ./occupi-frontend/dist ./occupi-frontend/build ./occupi-frontend/target/release/occupi-frontend
release:
name: Release
runs-on: ubuntu-latest
needs: [build-backend-binary, build-android, build-ios, build-vite-app, build-tauri-app]
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
# according to the docs, if name is not specified, all artifacts are downloaded
# https://github.com/actions/download-artifact/tree/v4/?tab=readme-ov-file#inputs
with:
path: dist
merge-multiple: true
Loading

0 comments on commit 0da0807

Please sign in to comment.