feat(chore): migrate to react 19 (#1418) #687
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: "publish-pre-release" | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
create-pre-release: | |
runs-on: ubuntu-latest | |
outputs: | |
latest_release_id: ${{ steps.latest_release_id.outputs.result }} | |
latest_release_version: ${{ steps.release.outputs.version }} | |
permissions: | |
contents: write # to be able to publish a GitHub release | |
issues: write # to be able to comment on released issues | |
pull-requests: write # to be able to comment on released pull requests | |
id-token: write # to enable use of OIDC for npm provenance | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: main | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "lts/*" | |
- run: cargo install cargo-edit | |
- name: Install dependencies | |
run: npm clean-install | |
- name: Release | |
id: release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GIT_AUTHOR_NAME: oplabot | |
GIT_AUTHOR_EMAIL: [email protected] | |
GIT_COMMITTER_NAME: oplabot | |
GIT_COMMITTER_EMAIL: [email protected] | |
run: npx -p @semantic-release/exec -p @semantic-release/commit-analyzer -p @semantic-release/npm -p @semantic-release/github -p @semantic-release/release-notes-generator -p @semantic-release/changelog -p @semantic-release/git -p semantic-release semantic-release | |
- run: | | |
echo "ref_name= ${{ github.ref_name }}" | |
echo "version= ${{ steps.release.outputs.version }}" | |
# Get generated release id | |
- name: Get Latest Release id | |
if: steps.release.outputs.version && steps.release.outputs.version != '' | |
id: latest_release_id | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const { data } = await github.rest.repos.getReleaseByTag({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag: "v${{ steps.release.outputs.version }}" | |
}) | |
return data.id | |
- name: Set latest release to draft | |
if: steps.release.outputs.version != '' | |
uses: actions/github-script@v7 | |
env: | |
release_id: ${{ steps.latest_release_id.outputs.result }} | |
with: | |
script: | | |
github.rest.repos.updateRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: process.env.release_id, | |
draft: true, | |
prerelease: false | |
}) | |
- uses: getsentry/action-release@v1 | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
with: | |
environment: 'production' | |
version: "v${{ steps.release.outputs.version }}" | |
build-pre-release: | |
needs: create-pre-release | |
if: needs.create-pre-release.outputs.latest_release_id | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- platform: "macos-latest" | |
target: "x86_64-apple-darwin" | |
args: "--target x86_64-apple-darwin" | |
- platform: "macos-latest" | |
target: "aarch64-apple-darwin" | |
args: "--target aarch64-apple-darwin" | |
- platform: "ubuntu-20.04" | |
target: "x86_64-unknown-linux-gnu" | |
args: "--target x86_64-unknown-linux-gnu" | |
- platform: "windows-latest" | |
target: "x86_64-pc-windows-msvc" | |
args: "--target x86_64-pc-windows-msvc" | |
runs-on: ${{ matrix.settings.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: main | |
- name: setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: install Rust stable | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: aarch64-apple-darwin | |
- name: install dependencies (ubuntu only) | |
if: matrix.settings.platform == 'ubuntu-20.04' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf | |
- name: Rustup add target # Do it for all ? | |
if: matrix.settings.target == 'x86_64-apple-darwin' | |
run: rustup target add ${{ matrix.settings.target }} | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
- name: install frontend dependencies | |
run: npm instal | |
#- name: import windows certificate | |
# if: matrix.settings.platform == 'windows-latest' | |
# env: | |
# WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }} | |
# WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }} | |
# run: | | |
# New-Item -ItemType directory -Path certificate | |
# Set-Content -Path certificate/tempCert.txt -Value $env:WINDOWS_CERTIFICATE | |
# certutil -decode certificate/tempCert.txt certificate/certificate.pfx | |
# Remove-Item -path certificate -include tempCert.txt | |
# Import-PfxCertificate -FilePath certificate/certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -String $env:WINDOWS_CERTIFICATE_PASSWORD -Force -AsPlainText) | |
# If tagName and releaseId are omitted tauri-action will only build the app and won't try to upload any assets. | |
- uses: tauri-apps/tauri-action@v0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | |
APPLE_ID: ${{ secrets.APPLE_ID }} | |
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} | |
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} | |
APPLE_API_KEY_PATH: ${{ secrets.APPLE_API_KEY_PATH }} | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
SENTRY_RELEASE: "v${{ needs.create-pre-release.outputs.latest_release_version }}" | |
NEXT_PUBLIC_SENTRY_RELEASE: "v${{ needs.create-pre-release.outputs.latest_release_version }}" | |
with: | |
#tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version | |
#releaseName: "App v__VERSION__" | |
#releaseBody: "See the assets to download this version and install." | |
#releaseDraft: true | |
#prerelease: false | |
releaseId: ${{ needs.create-pre-release.outputs.latest_release_id }} | |
args: ${{ matrix.settings.args}} | |
undraft-pre-release: | |
needs: [create-pre-release,build-pre-release] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Publish latest release | |
uses: actions/github-script@v7 | |
env: | |
release_id: ${{ needs.create-pre-release.outputs.latest_release_id }} | |
with: | |
script: | | |
github.rest.repos.updateRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: process.env.release_id, | |
draft: false, | |
prerelease: false | |
}) | |
modify-updater-gist: | |
needs: [create-pre-release,build-pre-release,undraft-pre-release] | |
uses: Opla/opla/.github/workflows/modify-updater-with-latest-release.yml@main | |
secrets: inherit |