Publish #147
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 | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
permissions: | |
contents: write | |
jobs: | |
publish: | |
strategy: | |
matrix: | |
cfg: | |
- { platform: linux, platform_name: Linux, os: ubuntu-latest } | |
- { platform: mac, platform_name: macOS, os: macos-latest } | |
- { platform: win, platform_name: Windows, os: windows-latest } | |
name: '${{ matrix.cfg.platform_name }} installer' | |
runs-on: ${{ matrix.cfg.os }} | |
defaults: | |
run: | |
# needed for conda to work | |
shell: bash -el {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: conda-incubator/setup-miniconda@v3 | |
with: | |
auto-update-conda: true | |
auto-activate-base: true | |
activate-environment: '' | |
channels: conda-forge | |
# upgrade conda since v22.11.1 is causing issues in "Install dependencies" step | |
- run: conda install -c conda-forge conda=24.5.0 python=3.10 -y | |
- name: Install node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
cache: 'yarn' | |
- name: Install dependencies | |
# pin Pillow version to prevent Windows build errors | |
run: | | |
npm install --global yarn --prefer-offline | |
yarn install | |
- name: Check JupyterLab version match | |
run: | | |
yarn check_version_match | |
- name: Check Lint & Prettier | |
run: | | |
yarn lint:check | |
- name: Get package info | |
shell: bash | |
id: package-info | |
run: echo "version=$(python scripts/get_package_version.py)" >> $GITHUB_OUTPUT | |
- name: 'Find Release with tag v${{ steps.package-info.outputs.version}}' | |
uses: actions/github-script@v6 | |
id: release-exists | |
env: | |
APP_VERSION: ${{ steps.package-info.outputs.version}} | |
with: | |
script: | | |
const releases = await github.rest.repos.listReleases({ | |
owner: '${{ github.repository_owner }}', | |
repo: '${{ github.repository }}'.split('/')[1] | |
}) | |
const tagName = `v${process.env.APP_VERSION}` | |
const releaseWithTag = releases.data.find(release => release.tag_name === tagName && (release.draft || release.prerelease)) | |
return releaseWithTag ? 'true' : 'false' | |
result-encoding: string | |
- name: Create Application Installer for Test | |
env: | |
CSC_IDENTITY_AUTO_DISCOVERY: false # disable code signing if not release asset | |
run: | | |
yarn dist:${{ matrix.cfg.platform }} | |
if: steps.release-exists.outputs.result == 'false' | |
- name: Create Application Installer for Release | |
env: | |
CSC_IDENTITY_AUTO_DISCOVERY: true # disable code signing if not release asset | |
CSC_FOR_PULL_REQUEST: true | |
APPLEID: ${{ secrets.APPLEID }} | |
APPLEIDPASS: ${{ secrets.APPLEIDPASS }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} | |
CSC_LINK: ${{ secrets.CSC_LINK }} | |
run: | | |
set env DEBUG=electron-builder | |
yarn dist:${{ matrix.cfg.platform }} | |
if: steps.release-exists.outputs.result == 'true' | |
- name: Upload Debian Installer | |
if: matrix.cfg.platform == 'linux' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: debian-installer | |
path: | | |
dist/NeurodeskApp.deb | |
- name: Upload Fedora Installer | |
if: matrix.cfg.platform == 'linux' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: fedora-installer | |
path: | | |
dist/NeurodeskApp.rpm | |
- name: Upload macOS x64 Installer | |
if: matrix.cfg.platform == 'mac' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mac-installer-x64 | |
path: | | |
dist/NeurodeskApp-x64.dmg | |
- name: Upload macOS arm64 Installer | |
if: matrix.cfg.platform == 'mac' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mac-installer-arm64 | |
path: | | |
dist/NeurodeskApp-arm64.dmg | |
- name: Upload Windows Installer | |
if: matrix.cfg.platform == 'win' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-installer | |
path: | | |
dist/NeurodeskApp-Setup.exe | |
- name: Upload Debian Installer as Release asset | |
if: matrix.cfg.platform == 'linux' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp.deb | |
asset_name: NeurodeskApp-Setup-Debian.deb | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload Fedora Installer as Release asset | |
if: matrix.cfg.platform == 'linux' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp.rpm | |
asset_name: NeurodeskApp-Setup-Fedora.rpm | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload macOS x64 Installer as Release asset | |
if: matrix.cfg.platform == 'mac' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp-x64.dmg | |
asset_name: NeurodeskApp-Setup-macOS-x64.dmg | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload macOS arm64 Installer as Release asset | |
if: matrix.cfg.platform == 'mac' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp-arm64.dmg | |
asset_name: NeurodeskApp-Setup-macOS-arm64.dmg | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload macOS x64 App as Release asset | |
if: matrix.cfg.platform == 'mac' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp-x64.zip | |
asset_name: NeurodeskApp-macOS-x64.zip | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload macOS arm64 App as Release asset | |
if: matrix.cfg.platform == 'mac' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp-arm64.zip | |
asset_name: NeurodeskApp-macOS-arm64.zip | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload Windows Installer as Release asset | |
if: matrix.cfg.platform == 'win' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/NeurodeskApp-Setup.exe | |
asset_name: NeurodeskApp-Setup-Windows.exe | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true | |
- name: Upload latest.yml Release asset | |
if: matrix.cfg.platform == 'win' && steps.release-exists.outputs.result == 'true' | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/latest.yml | |
asset_name: latest.yml | |
tag: v${{ steps.package-info.outputs.version}} | |
overwrite: true |