[Release] Publish packages and apps #137
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "[Release] Publish packages and apps" | |
on: | |
workflow_dispatch: | |
inputs: | |
app: | |
description: "which app to release (libraries are always published, chose NONE to release libs only)" | |
required: true | |
type: choice | |
default: NONE | |
options: | |
- NONE | |
- LLD | |
- LLM | |
- ALL | |
workflow_run: | |
workflows: | |
- \[Release\] Prepare for releasing | |
- \[Release\](Hotfix) Prepare for releasing | |
types: | |
- "completed" | |
jobs: | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
env: | |
NODE_OPTIONS: "--max-old-space-size=7168" | |
steps: | |
- name: generate token | |
id: generate-token | |
uses: tibdex/github-app-token@v1 | |
with: | |
app_id: ${{ secrets.GH_BOT_APP_ID }} | |
private_key: ${{ secrets.GH_BOT_PRIVATE_KEY }} | |
- uses: actions/checkout@v4 | |
with: | |
ref: main | |
fetch-depth: 2 | |
token: ${{ steps.generate-token.outputs.token }} | |
- name: Setup git user | |
uses: LedgerHQ/ledger-live/tools/actions/composites/setup-git-user@develop | |
- name: Setup the toolchain | |
uses: LedgerHQ/ledger-live/tools/actions/composites/setup-toolchain@develop | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.3.0 | |
- name: Cache LLM pods | |
uses: actions/cache@v3 | |
with: | |
path: | | |
apps/ledger-live-mobile/ios/Pods | |
~/Library/Caches/CocoaPods | |
~/.cocoapods | |
key: ${{ runner.os }}-pods-${{ hashFiles('apps/ledger-live-mobile/ios/Podfile.lock') }} | |
- name: install dependencies | |
run: pnpm i -F "ledger-live" -F "{libs/**}..." -F "@ledgerhq/live-cli" | |
- name: build libs | |
run: pnpm run build:libs | |
- name: publish release | |
run: pnpm changeset publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }} | |
- name: check if desktop versions are different | |
if: ${{ github.event_name == 'workflow_run' }} | |
id: desktop-changed | |
run: | | |
echo "status=$(git diff HEAD HEAD~1 ./apps/ledger-live-desktop/package.json | grep '"version": "' | wc -l)" >> $GITHUB_OUTPUT | |
- name: check if mobile versions are different | |
if: ${{ github.event_name == 'workflow_run' }} | |
id: mobile-changed | |
run: | | |
echo "status=$(git diff HEAD HEAD~1 ./apps/ledger-live-mobile/package.json | grep '"version": "' | wc -l)" >> $GITHUB_OUTPUT | |
- uses: LedgerHQ/ledger-live/tools/actions/get-package-infos@develop | |
id: desktop-version | |
with: | |
path: ${{ github.workspace }}/apps/ledger-live-desktop | |
- uses: LedgerHQ/ledger-live/tools/actions/get-package-infos@develop | |
id: mobile-version | |
with: | |
path: ${{ github.workspace }}/apps/ledger-live-mobile | |
- name: generate desktop changelog | |
if: ${{ steps.desktop-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLD", "ALL"]'), inputs.app) }} | |
uses: LedgerHQ/ledger-live/tools/actions/generate-release-message@develop | |
id: desktop-changelog | |
with: | |
package-path: ${{ github.workspace }}/apps/ledger-live-desktop/package.json | |
changelog-path: ${{ github.workspace }}/apps/ledger-live-desktop/CHANGELOG.md | |
output-path: ${{ github.workspace }} | |
name: desktop-changelog | |
- name: tag desktop | |
if: ${{ steps.desktop-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLD", "ALL"]'), inputs.app) }} | |
run: | | |
git tag @ledgerhq/live-desktop@${{ steps.desktop-version.outputs.version }} | |
- name: generate mobile changelog | |
if: ${{ steps.mobile-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLM", "ALL"]'), inputs.app) }} | |
uses: LedgerHQ/ledger-live/tools/actions/generate-release-message@develop | |
id: mobile-changelog | |
with: | |
package-path: ${{ github.workspace }}/apps/ledger-live-mobile/package.json | |
changelog-path: ${{ github.workspace }}/apps/ledger-live-mobile/CHANGELOG.md | |
output-path: ${{ github.workspace }} | |
name: mobile-changelog | |
- name: tag mobile | |
if: ${{ steps.mobile-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLM", "ALL"]'), inputs.app) }} | |
run: | | |
git tag live-mobile@${{ steps.mobile-version.outputs.version }} | |
- name: push changes | |
run: | | |
git push origin main --tags | |
- name: create desktop github release | |
if: ${{ steps.desktop-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLD", "ALL"]'), inputs.app) }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh release create @ledgerhq/live-desktop@${{ steps.desktop-version.outputs.version }} -F ${{ steps.desktop-changelog.outputs.path }} | |
- name: create mobile github release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: ${{ steps.mobile-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLM", "ALL"]'), inputs.app) }} | |
run: | | |
gh release create live-mobile@${{ steps.mobile-version.outputs.version }} -F ${{ steps.mobile-changelog.outputs.path }} | |
- uses: actions/github-script@v7 | |
name: trigger release build for desktop | |
if: ${{ steps.desktop-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLD", "ALL"]'), inputs.app) }} | |
with: | |
github-token: ${{ steps.generate-token.outputs.token }} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "ledgerhq", | |
repo: "ledger-live-build", | |
ref: "main", | |
workflow_id: "release-desktop.yml", | |
inputs: { | |
branch: "main" | |
} | |
}); | |
- uses: actions/github-script@v7 | |
name: trigger release build for mobile | |
if: ${{ steps.mobile-changed.outputs.status != 0 || github.event_name == 'workflow_dispatch' && contains(fromJson('["LLM", "ALL"]'), inputs.app) }} | |
with: | |
github-token: ${{ steps.generate-token.outputs.token }} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "ledgerhq", | |
repo: "ledger-live-build", | |
ref: "main", | |
workflow_id: "release-mobile.yml", | |
inputs: { | |
ref: "main" | |
} | |
}); |