Skip to content

Migrate from save-state to environment files #10

Migrate from save-state to environment files

Migrate from save-state to environment files #10

name: Notion Repackaged Main
on:
push:
branches: [main, bump-notion-v400]
paths:
- "notion-repackaged.sh"
- ".github/workflows/notion-repackaged.yml"
workflow_dispatch:
inputs: {}
env:
NOTION_REPACKAGED_DEBUG: true
jobs:
preload-variables:
name: Preload variables
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: preload-variables
name: Load variables and set them as outputs
run: |
source notion-repackaged.sh
echo "notion_version=$NOTION_VERSION" >> $GITHUB_OUTPUT
echo "notion_repackaged_revision=$NOTION_REPACKAGED_REVISION" >> $GITHUB_OUTPUT
echo "notion_download_hash=$NOTION_DOWNLOAD_HASH" >> $GITHUB_OUTPUT
echo "notion_enhancer_desktop_commit=$NOTION_ENHANCER_DESKTOP_COMMIT" >> $GITHUB_OUTPUT
NOTION_REPACKAGED_VERSION_REV="${NOTION_VERSION}-${NOTION_REPACKAGED_REVISION}"
echo "notion_repackaged_version_rev=$NOTION_REPACKAGED_VERSION_REV" >> $GITHUB_OUTPUT
outputs:
notion_version: ${{ steps.preload-variables.outputs.notion_version }}
notion_repackaged_revision: ${{ steps.preload-variables.outputs.notion_repackaged_revision }}
notion_download_hash: ${{ steps.preload-variables.outputs.notion_download_hash }}
notion_enhancer_desktop_commit: ${{ steps.preload-variables.outputs.notion_enhancer_desktop_commit }}
notion_repackaged_version_rev: ${{ steps.preload-variables.outputs.notion_repackaged_version_rev }}
create-release:
name: Create release
runs-on: ubuntu-latest
needs: [preload-variables]
steps:
- uses: actions/checkout@v4
- uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
version: ${{ needs.preload-variables.outputs.notion_repackaged_version_rev }}
tag: v${{ needs.preload-variables.outputs.notion_repackaged_version_rev }}
make-vanilla-sources:
name: Make vanilla sources
runs-on: ubuntu-latest
needs: [preload-variables]
env:
NOTION_VERSION: ${{ needs.preload-variables.outputs.notion_version }}
NOTION_REPACKAGED_REVISION: ${{ needs.preload-variables.outputs.notion_repackaged_revision }}
steps:
- uses: actions/checkout@v4
- name: Install moreutils
run: sudo apt-get install -y moreutils
- name: Download official Windows build
env:
NOTION_DOWNLOAD_HASH: ${{ needs.preload-variables.outputs.notion_download_hash }}
run: scripts/download-exe.sh
- name: Extract sources from Windows Build
run: scripts/extract-src.sh
- name: Zip sources dir with 7z
working-directory: build
run: 7z a vanilla-src.zip vanilla-src
- name: Save vanilla sources as artifact
uses: actions/upload-artifact@v4
with:
name: vanilla-sources
path: build/vanilla-src.zip
make-enhanced-sources:
name: Make enhanced sources
needs: [make-vanilla-sources, preload-variables]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install icnsutils and moreutils
run: sudo apt-get install -y icnsutils moreutils
- name: Force to use HTTPS instead of SSH
run: git config --global url."https://github.com/".insteadOf "[email protected]:"
- name: Retrieve saved vanilla sources
uses: actions/download-artifact@v4
with:
name: vanilla-sources
path: build/vanilla-src.zip
- name: Unzip sources with 7z
working-directory: build
run: 7z x vanilla-src.zip
- name: Enhance extracted sources
env:
NOTION_ENHANCER_DESKTOP_COMMIT: ${{ needs.preload-variables.outputs.notion_enhancer_desktop_commit }}
run: scripts/enhance-src.sh
- name: Zip sources dir with 7z
working-directory: build
run: 7z a enhanced-src.zip enhanced-src
- name: Save enhanced sources as artifact
uses: actions/upload-artifact@v4
with:
name: enhanced-sources
path: build/enhanced-src.zip
build-app:
name: Build app
needs:
[
make-vanilla-sources,
make-enhanced-sources,
preload-variables,
create-release,
]
runs-on: ${{ matrix.os }}
env:
NOTION_VERSION: ${{ needs.preload-variables.outputs.notion_version }}
NOTION_REPACKAGED_REVISION: ${{ needs.preload-variables.outputs.notion_repackaged_revision }}
strategy:
matrix:
target: [windows, linux, macos]
edition: [vanilla, enhanced]
include:
- target: windows
os: windows-latest
- target: linux
os: ubuntu-latest
- target: macos
os: macos-latest
exclude:
- target: windows
edition: vanilla
- target: macos
edition: vanilla
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Retrieve saved sources
uses: actions/download-artifact@v4
with:
name: ${{ matrix.edition }}-sources
path: sources.zip
- name: Unzip sources with 7z
run: 7z x sources.zip
- name: Install Linux build dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install --no-install-recommends -y libopenjp2-tools rpm libarchive-tools
- name: Install dependencies
working-directory: ${{ matrix.edition }}-src
run: npm install
- name: Run patch-package
working-directory: ${{ matrix.edition }}-src
run: npx patch-package
- name: Install electron and electron-builder
working-directory: ${{ matrix.edition }}-src
run: npm install [email protected] electron-builder --save-dev
- name: Run electron-builder
working-directory: ${{ matrix.edition }}-src
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NOTION_REPACKAGED_EDITION: ${{ matrix.edition }}
run: npx electron-builder --${{ matrix.target }} -c ../electron-builder.js
- name: Print packages md5 checksums
working-directory: ${{ matrix.edition }}-src
run: find ./dist/ -maxdepth 1 -type f -exec openssl md5 {} +
shell: bash
cleanup:
name: Cleanup artifacts
if: always()
needs: [build-app]
strategy:
matrix:
edition: [vanilla, enhanced]
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v5
with:
name: "${{ matrix.edition }}-sources"