name: Desktop Reusable Release Workflow on: workflow_call: inputs: channel: required: true type: string jobs: Mac: runs-on: macos-latest env: CSC_LINK: ${{ secrets.MAC_CI_KEYS }} CSC_KEY_PASSWORD: ${{ secrets.MAC_CI_KEYS_PASSWORD }} NOTARIZE_APPLE_ID: ${{ secrets.NOTARIZE_APPLE_ID }} NOTARIZE_APPLE_ID_PASSWORD: ${{ secrets.NOTARIZE_APPLE_ID_PASSWORD }} defaults: run: working-directory: packages/desktop steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: registry-url: 'https://registry.npmjs.org' - run: yarn install - run: yarn build:desktop - run: export APP_VERSION=$(node -p "require('./package.json').version") - name: Compile Mac run: yarn run webpack --config desktop.webpack.prod.js - name: MacX64 run: | yarn run electron-builder --mac --x64 --publish=never --c.extraMetadata.version=$APP_VERSION node scripts/fixMacZip.js - name: MacArm64 run: yarn run electron-builder --mac --arm64 --publish=never --c.extraMetadata.version=$APP_VERSION - name: Upload uses: actions/upload-artifact@v3.0.0 with: name: assets path: | packages/desktop/dist/*.dmg packages/desktop/dist/*.zip packages/desktop/dist/*.blockmap packages/desktop/dist/*.yml packages/desktop/dist/*.yaml Linux: runs-on: ubuntu-latest defaults: run: working-directory: packages/desktop steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: registry-url: 'https://registry.npmjs.org' - name: Set up Ruby uses: ruby/setup-ruby@v1 - name: Install FPM run: sudo gem install fpm -f - run: yarn install - run: yarn build:desktop - run: export APP_VERSION=$(node -p "require('./package.json').version") - name: Compile for AppImage run: yarn run webpack --config desktop.webpack.prod.js - name: AppImage run: yarn run electron-builder --linux --x64 --ia32 -c.linux.target=AppImage --publish=never --c.extraMetadata.version=$APP_VERSION - name: AppImageX64 run: yarn run electron-builder --linux --x64 -c.linux.target=AppImage --publish=never --c.extraMetadata.version=$APP_VERSION - name: AppImageArm64 run: yarn run electron-builder --linux --arm64 -c.linux.target=AppImage --publish=never --c.extraMetadata.version=$APP_VERSION - name: Deb run: | yarn run webpack --config desktop.webpack.prod.js --env deb yarn run electron-builder --linux --x64 --ia32 -c.linux.target=deb --publish=never --c.extraMetadata.version=$APP_VERSION - name: DebArm64 env: npm_config_target_arch: 'arm64' USE_SYSTEM_FPM: 'true' run: | yarn run webpack --config desktop.webpack.prod.js --env deb yarn run electron-builder --linux --arm64 -c.linux.target=deb --publish=never --c.extraMetadata.version=$APP_VERSION - name: Dir run: | yarn run webpack --config desktop.webpack.prod.js yarn run electron-builder --linux --x64 -c.linux.target=dir --publish=never --c.extraMetadata.version=$APP_VERSION - name: DirArm64 run: | yarn run webpack --config desktop.webpack.prod.js yarn run electron-builder --linux --arm64 -c.linux.target=dir --publish=never --c.extraMetadata.version=$APP_VERSION env: npm_config_target_arch: 'arm64' - name: Snap run: | sudo snap install snapcraft --classic yarn run webpack --config desktop.webpack.prod.js --env snap yarn run electron-builder --linux --x64 -c.linux.target=snap --publish=never --c.extraMetadata.version=$APP_VERSION - name: Upload uses: actions/upload-artifact@v3.0.0 with: name: assets path: | packages/desktop/dist/*.snap packages/desktop/dist/*.AppImage packages/desktop/dist/*.deb packages/desktop/dist/*.blockmap packages/desktop/dist/*.yml packages/desktop/dist/*.yaml Windows: runs-on: self-hosted env: WINDOWS_TOKEN_ALIAS: ${{ secrets.WINDOWS_TOKEN_ALIAS }} WINDOWS_TOKEN_PASSWORD: ${{ secrets.WINDOWS_TOKEN_PASSWORD }} defaults: run: working-directory: packages/desktop steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: registry-url: 'https://registry.npmjs.org' - run: yarn install - run: yarn build:desktop - run: yarn run webpack --config desktop.webpack.prod.js - run: export APP_VERSION=$(node -p "require('./package.json').version") - run: yarn run electron-builder --windows --x64 --ia32 --publish=never --c.extraMetadata.version=$APP_VERSION - name: Upload uses: actions/upload-artifact@v3.0.0 with: name: assets path: | packages/desktop/dist/*.blockmap packages/desktop/dist/*.exe packages/desktop/dist/*.yml packages/desktop/dist/*.yaml Publish: runs-on: ubuntu-latest if: ${{ always() }} needs: [Windows, Mac, Linux] defaults: run: working-directory: packages/desktop steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: registry-url: 'https://registry.npmjs.org' - uses: actions/download-artifact@v3 with: name: assets path: packages/desktop/dist - name: Generate Checksums run: node scripts/sums.mjs - name: get-npm-version id: package-version uses: martinbeentjes/npm-get-version-action@main with: path: packages/desktop - name: Release uses: softprops/action-gh-release@v1 with: token: ${{ secrets.CI_PAT_TOKEN }} tag_name: "@standardnotes/desktop@${{ steps.package-version.outputs.current-version}}" prerelease: true draft: true name: "Desktop ${{ inputs.channel == 'beta' && 'Beta' || '' }} ${{ steps.package-version.outputs.current-version }}" files: packages/desktop/dist/* - name: Publish Snap continue-on-error: true run: | echo "${{ secrets.SNAPCRAFT_LOGIN_FILE }}" >> snapauth.txt snapcraft login --with=snapauth.txt snapcraft upload dist/standard-notes-${{ steps.package-version.outputs.current-version}}-linux-amd64.snap