오픈 소스 Tauri 애플리케이션 GitHub Actions 자동화 배포 및 업그레이드 가이드
1. 소개
이 문서에서는 GitHub Actions를 사용하여 Tauri 애플리케이션의 자동화 빌드, 출시 및 UpgradeLink를 통해 자동 애플리케이션 업데이트 기능을 구현하는 방법을 자세히 설명합니다. 이 가이드를 통해 코드 제출에서 애플리케이션 업데이트까지의 전체 자동화 프로세스를 완료하기 위해 GitHub Actions 워크플로를 구성하는 방법을 배울 수 있습니다.
2. 핵심 도구 소개
1. 공식 Tauri GitHub Action
Tauri에서 제공하는 공식 GitHub Action 플러그인은 개발자가 GitHub Actions 환경에서 Tauri 애플리케이션을 자동으로 빌드, 패키징 및 GitHub Releases에 출시하는 데 도움을 줍니다.
2. UpgradeLink Action
UpgradeLink에서 제공하는 Action 플러그인은 Tauri 애플리케이션에서 생성된 업데이트 파일(latest.json)을 UpgradeLink 서버에 업로드하는 데 사용됩니다. UpgradeLink는 json 파일에서 애플리케이션 파일 주소를 읽어 파일을 저장하고 자동으로 애플리케이션 버전 파일 및 해당 업그레이드 전략을 생성합니다.
3. 완전한 워크플로를 갖춘 예제 프로젝트
완전한 워크플로를 갖춘 예제 프로젝트:
3. 워크플로 설명
워크플로는 두 가지 주요 작업으로 구성됩니다:
publish-tauri: Tauri 애플리케이션을 빌드하여 GitHub Releases에 출시합니다.
- 크로스 플랫폼 빌드: macOS, Linux 및 Windows를 동시에 지원합니다.
- 버전 번호 추출: Tauri 빌드 출력에서 애플리케이션 버전 번호를 추출합니다.
- 릴리스 관리: 자동으로 GitHub Release를 생성하고 애플리케이션 설치 패키지를 업로드합니다.
upgradeLink-upload: 업데이트 정보를 UpgradeLink에 동기화합니다.
- 종속성: publish-tauri 작업이 완료될 때까지 기다립니다.
- 버전 인식: 출력 매개변수를 통해 애플리케이션 버전 번호를 얻습니다.
- API 호출: UpgradeLink Action을 사용하여 latest.json을 업그레이드 서버에 업로드합니다.
4. 통합 단계 자세한 설명
1. 준비
먼저 다음을 확인하세요:
- GitHub 리포지토리가 생성되었고 Tauri 애플리케이션 코드가 업로드되었습니다.
- UpgradeLink 플랫폼 계정이 있으며 다음 자격 증명을 얻었습니다:
- UpgradeLink 플랫폼의 tauri 애플리케이션 구성에 GitHub 리포지토리 주소를 구성했습니다.
2. GitHub Secrets 구성
GitHub 리포지토리 Settings > Security > Secrets and variables > Actions에서 다음 암호화된 환경 변수를 추가하세요:
| Secret Name | Description |
|---|---|
| UPGRADE_LINK_ACCESS_KEY | API 호출 인증을 위해 UpgradeLink 플랫폼에서 제공하는 액세스 키 |
| UPGRADE_LINK_ACCESS_SECRET | API 호출 인증을 위해 UpgradeLink 플랫폼에서 제공하는 액세스 시크릿 |
| UPGRADE_LINK_TAURI_KEY | UpgradeLink 플랫폼에서 귀하의 Tauri 애플리케이션에 할당된 고유 식별자 |
| TAURI_SIGNING_PRIVATE_KEY | Tauri 애플리케이션 서명 개인 키 (코드 서명이 필요한 경우) |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD | 서명 개인 키 비밀번호 (설정된 경우) |
3. 먼저 Tauri에서 제공하는 공식 tauri-action을 사용하여 테스트하는 것이 좋습니다. 이를 통해 Releases 버전의 정상적인 빌드 및 출시를 확인할 수 있습니다.
tauri-action 워크플로를 사용하면 다양한 권한 문제에 직면할 수 있으므로 사전에 프로세스를 실행해야 합니다.
4. 공식에서 제공하는 기본 구성 정보를 수정합니다.
공식 예제를 기반으로 다음과 같이 수정합니다:
name: 'publish'
on:
push:
branches:
- main
jobs:
publish-tauri:
permissions:
contents: write
outputs:
appVersion: ${{ steps.set-job-output.outputs.appVersion }}
strategy:
fail-fast: false
matrix:
include:
- platform: 'macos-latest' # Arm 기반 맥(M1 이상)용
args: '--target aarch64-apple-darwin'
- platform: 'macos-latest' # Intel 기반 맥용
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-22.04'
args: ''
- platform: 'ubuntu-22.04-arm' # 공개 리포지토리에서만 사용 가능
args: ''
- platform: 'windows-latest'
args: ''
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: install dependencies (ubuntu only)
if: startsWith(matrix.platform, 'ubuntu-') # 위에서 정의한 platform 값과 일치해야 합니다.
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils
- name: setup node
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'yarn' # 이를 npm, yarn 또는 pnpm으로 설정하세요.
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable # 이를 dtolnay/rust-toolchain@nightly로 설정하세요
with:
# 이러한 타겟은 맥os 러너에서만 사용되므로 윈도우 및 리눅스 빌드를 약간 가속화하기 위해 `if`에 있습니다.
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './src-tauri -> target'
- name: install frontend dependencies
# `beforeBuildCommand`를 구성하지 않은 경우 여기에서 프론트엔드도 빌드해야 할 수 있습니다.
run: yarn install # 사용 중인 도구에 따라 이를 npm 또는 pnpm으로 변경하세요.
- uses: tauri-apps/tauri-action@v0
id: tauri-action # 나중에 참조하기 위해 id 추가
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with:
tagName: tauri-demo-v__VERSION__
releaseName: 'tauri-demo v__VERSION__'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: false # 드래프트 버전 생성하지 않기
prerelease: false # 프리릴리스 버전으로 지정하지 않기
args: ${{ matrix.args }}
- name: Set job output
id: set-job-output
if: matrix.platform == 'ubuntu-22.04'
run: |
echo "appVersion=${{ steps.tauri-action.outputs.appVersion }}" >> $GITHUB_OUTPUT
upgradeLink-upload:
needs: publish-tauri # publish-tauri 작업 완료에 의존
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Send a request to UpgradeLink
uses: toolsetlink/upgradelink-action@3.0.2
with:
access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
config: |
{
"app_type": "tauri",
"request": {
"app_key": "${{ secrets.UPGRADE_LINK_TAURI_KEY }}",
"latest_json_url": "https://github.com/toolsetlink/tauri-demo/releases/download/tauri-demo-v${{ needs.publish-tauri.outputs.appVersion }}/latest.json"
}
}5. 일반적인 문제 및 해결 방법
1. GitHub Actions 권한 문제
권한이 충분하지 않은 오류가 발생하는 경우 다음을 확인하세요:
- 워크플로 파일에
permissions: contents: write가 구성되어 있는지 확인하세요 - 리포지토리 설정에서 Actions 권한이 올바르게 구성되어 있는지 확인하세요
2. 빌드 실패 문제 해결
- GitHub Actions 로그에서 특정 오류 정보를 확인하세요
- 모든 종속성이 올바르게 설치되었는지 확인하세요, 특히 Linux 플랫폼의 시스템 종속성
- Rust 및 Node.js 버전 호환성을 확인하세요
3. UpgradeLink 통합 문제
- UpgradeLink 콘솔의 애플리케이션 식별자가 구성과 일치하는지 확인하세요
- GitHub Releases에 올바른 latest.json 파일이 생성되었는지 확인하세요
6. 요약
위의 구성을 통해 Tauri 애플리케이션 빌드, 출시 및 업데이트 프로세스의 전체 자동화를 실현할 수 있습니다. 코드가 지정된 브랜치에 푸시될 때마다 GitHub Actions는 자동으로 다음 작업을 완료합니다:
- 코드 변경 감지
- 다중 플랫폼 환경에서 Tauri 애플리케이션 빌드
- GitHub Release 생성 및 설치 패키지 업로드
- 애플리케이션 버전 번호 추출
- 업데이트 정보를 UpgradeLink 플랫폼에 동기화
- 최종 사용자는 UpgradeLink를 통해 애플리케이션 업데이트 알림을 받게 됩니다
이 자동화된 프로세스는 개발 효율성을 크게 향상시키고 수동 작업 오류를 줄이며 개발자가 애플리케이션 기능 개발에 더 집중할 수 있도록 합니다.