Skip to content

fix(ci): grant contents write permission to docker workflow #4

fix(ci): grant contents write permission to docker workflow

fix(ci): grant contents write permission to docker workflow #4

Workflow file for this run

name: Release macOS Packages
on:
push:
tags:
- 'v*'
- '[0-9]*'
workflow_dispatch:
inputs:
tag_name:
description: 'Tag name to publish release under (e.g. v1.8.1)'
required: false
type: string
permissions:
contents: write
jobs:
build-macos:
name: Build macOS Packages
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install npm dependencies
run: npm ci
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Cargo registry & build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
src-tauri/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Create .env.local
run: |
cat << 'EOF' > .env.local
VITE_GOOGLE_CLIENT_ID=${{ secrets.VITE_GOOGLE_CLIENT_ID }}
VITE_GOOGLE_API_KEY=${{ secrets.VITE_GOOGLE_API_KEY }}
VITE_GOOGLE_CLIENT_APP=${{ secrets.VITE_GOOGLE_CLIENT_APP }}
VITE_GOOGLE_CLIENT_SECRET=${{ secrets.VITE_GOOGLE_CLIENT_SECRET }}
VITE_GOOGLE_CLIENT_ID_PROD=${{ secrets.VITE_GOOGLE_CLIENT_ID_PROD || secrets.VITE_GOOGLE_CLIENT_ID }}
VITE_GOOGLE_API_KEY_PROD=${{ secrets.VITE_GOOGLE_API_KEY_PROD || secrets.VITE_GOOGLE_API_KEY }}
VITE_ENVIRONMENT=production
VITE_DROPBOX_CLIENT_ID=${{ secrets.VITE_DROPBOX_CLIENT_ID }}
VITE_DROPBOX_CLIENT_SECRET=${{ secrets.VITE_DROPBOX_CLIENT_SECRET }}
VITE_DROPBOX_CLIENT_ID_PROD=${{ secrets.VITE_DROPBOX_CLIENT_ID_PROD || secrets.VITE_DROPBOX_CLIENT_ID }}
VITE_DROPBOX_CLIENT_SECRET_PROD=${{ secrets.VITE_DROPBOX_CLIENT_SECRET_PROD || secrets.VITE_DROPBOX_CLIENT_SECRET }}
VITE_BOX_CLIENT_ID=${{ secrets.VITE_BOX_CLIENT_ID }}
VITE_BOX_CLIENT_SECRET=${{ secrets.VITE_BOX_CLIENT_SECRET }}
VITE_BOX_CLIENT_ID_PROD=${{ secrets.VITE_BOX_CLIENT_ID_PROD || secrets.VITE_BOX_CLIENT_ID }}
VITE_BOX_CLIENT_SECRET_PROD=${{ secrets.VITE_BOX_CLIENT_SECRET_PROD || secrets.VITE_BOX_CLIENT_SECRET }}
VITE_ONEDRIVE_CLIENT_ID=${{ secrets.VITE_ONEDRIVE_CLIENT_ID }}
VITE_ONEDRIVE_CLIENT_SECRET=${{ secrets.VITE_ONEDRIVE_CLIENT_SECRET }}
VITE_PREMIUM_AGENT=${{ secrets.VITE_PREMIUM_AGENT }}
VITE_PREMIUM_MODEL=${{ secrets.VITE_PREMIUM_MODEL }}
AGENT=${{ secrets.AGENT }}
EASYAI_MODEL=${{ secrets.EASYAI_MODEL }}
GEMINI_API=${{ secrets.GEMINI_API }}
EOF
- name: Build Tauri application
run: npm run tauri:build
- name: Compress macOS .app bundle
run: |
if [ -d "src-tauri/target/release/bundle/macos/easyeditor.app" ]; then
cd src-tauri/target/release/bundle/macos
tar -czvf easyeditor-macos.app.tar.gz easyeditor.app
fi
- name: Extract version from tag
id: version
run: |
INPUT_TAG="${{ inputs.tag_name }}"
if [ -n "$INPUT_TAG" ]; then
TAG="$INPUT_TAG"
elif [ "${GITHUB_REF_TYPE}" = "tag" ]; then
TAG="${GITHUB_REF_NAME}"
else
TAG="v$(node -p "require('./package.json').version")"
fi
VERSION="${TAG#v}"
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
- name: List built packages
run: |
echo "Contents of src-tauri/target/release/bundle:"
find src-tauri/target/release/bundle -name "*.dmg" -o -name "*.tar.gz" -o -name "*.zip" || true
- name: Upload macOS packages to GitHub Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
with:
tag_name: ${{ steps.version.outputs.tag }}
files: |
src-tauri/target/release/bundle/dmg/*.dmg
src-tauri/target/release/bundle/macos/*.tar.gz
src-tauri/target/release/bundle/macos/*.zip
fail_on_unmatched_files: false
append_body: true
body: |
### macOS Packages
| Package | Format | Install |
| --- | --- | --- |
| `.dmg` | Disk Image | Open and drag to Applications |
| `.app.tar.gz` | Compressed App | Extract and move to Applications |
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}