-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9a6ab7e
commit 5b3ea25
Showing
1 changed file
with
397 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,397 @@ | ||
name: Build and publish | ||
on: | ||
push: | ||
tags: | ||
- 'v*' | ||
workflow_dispatch: | ||
defaults: | ||
run: | ||
working-directory: ./ | ||
jobs: | ||
get-app-version: | ||
name: Get App Version | ||
runs-on: ubuntu-latest | ||
outputs: | ||
app-version: ${{steps.get-app-version.outputs.current-version}} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- name: Get NPM Version | ||
id: get-app-version | ||
uses: martinbeentjes/npm-get-version-action@main | ||
sync-electron-app-version: | ||
name: Sync Electron App Version | ||
needs: get-app-version | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
- name: Sync | ||
run: | | ||
npx --yes bun run ./automation/sync-electron-app-version.ts | ||
- name: Commit and push | ||
run: | | ||
if [[ $(git status -s) ]]; then | ||
# Changes are present | ||
# Stage all changes | ||
git config --local user.email "freephoenix888@gmail.com" | ||
git config --local user.name "FreePhoenix888" | ||
git add electron/package.json | ||
git commit -m "Sync electron package version" | ||
git push origin main | ||
else | ||
# No changes in the working directory | ||
echo "No changes in the working directory." | ||
fi | ||
linux: | ||
name: Linux | ||
needs: [get-app-version,sync-electron-app-version] | ||
env: | ||
USE_HARD_LINKS: false | ||
MIGRATIONS_DIR: /tmp/.migrate | ||
ASSET_PREFIX: '.' | ||
npm_config_yes: true | ||
NEXT_PUBLIC_ENGINES: 1 | ||
MIGRATIONS_ID_TYPE_SQL: bigint | ||
MIGRATIONS_ID_TYPE_GQL: bigint | ||
MIGRATIONS_HASURA_PATH: localhost:8080 | ||
MIGRATIONS_HASURA_SSL: 0 | ||
MIGRATIONS_HASURA_SECRET: myadminsecretkey | ||
NEXT_PUBLIC_DEEPLINKS_SERVER: http://localhost:3007 | ||
NEXT_PUBLIC_GQL_PATH: localhost:3006/gql | ||
NEXT_PUBLIC_GQL_SSL: 0 | ||
DEEPLINKS_HASURA_PATH: localhost:8080 | ||
DEEPLINKS_HASURA_SSL: 0 | ||
MIGRATIONS_DEEPLINKS_APP_URL: http://host.docker.internal:3007 | ||
MIGRATIONS_DEEPLINKS_URL: http://host.docker.internal:3006 | ||
DOCKER: 1 | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Reconfigure git to use HTTP authentication | ||
run: > | ||
git config --global url."https://github.com/".insteadOf | ||
ssh://git@github.com/ | ||
- name: Git Pull | ||
run: git pull | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
- name: Configure Node caching | ||
uses: actions/cache@v2 | ||
env: | ||
cache-name: cache-node-modules-linux | ||
with: | ||
path: ~/.npm | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | ||
restore-keys: | | ||
${{ runner.os }}-build-${{ env.cache-name }}- | ||
${{ runner.os }}-build- | ||
${{ runner.os }}- | ||
- name: Install dc dependencies | ||
run: npm clean-install | ||
- name: Install electron dependencies | ||
run: cd electron && npm clean-install | ||
- name: build next | ||
run: npm run build && npm run export && npx rimraf electron/app && npx cap copy electron | ||
- name: Build distribution | ||
run: cd electron && npm run electron:make | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Create tar.gz file | ||
run: | | ||
cd electron/dist | ||
ls | ||
mv deep-memo-${{needs.get-app-version.outputs.app-version}}.AppImage deep-memo.AppImage | ||
tar -czvf deep-memo.tar.gz deep-memo.AppImage | ||
- name: And a README (to work around GitHub double-zips) | ||
run: | | ||
echo "More information: https://deep.foundation" > electron/dist/README.txt | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Linux-deep-memo | ||
path: | | ||
electron/dist/deep-memo.tar.gz | ||
electron/dist/README.txt | ||
mac: | ||
name: Mac | ||
needs: [sync-electron-app-version] | ||
env: | ||
USE_HARD_LINKS: false | ||
MIGRATIONS_DIR: /tmp/.migrate | ||
ASSET_PREFIX: '.' | ||
npm_config_yes: true | ||
NEXT_PUBLIC_ENGINES: 1 | ||
MIGRATIONS_ID_TYPE_SQL: bigint | ||
MIGRATIONS_ID_TYPE_GQL: bigint | ||
MIGRATIONS_HASURA_PATH: localhost:8080 | ||
MIGRATIONS_HASURA_SSL: 0 | ||
MIGRATIONS_HASURA_SECRET: myadminsecretkey | ||
NEXT_PUBLIC_DEEPLINKS_SERVER: http://localhost:3007 | ||
NEXT_PUBLIC_GQL_PATH: localhost:3006/gql | ||
NEXT_PUBLIC_GQL_SSL: 0 | ||
DEEPLINKS_HASURA_PATH: localhost:8080 | ||
DEEPLINKS_HASURA_SSL: 0 | ||
MIGRATIONS_DEEPLINKS_APP_URL: http://host.docker.internal:3007 | ||
MIGRATIONS_DEEPLINKS_URL: http://host.docker.internal:3006 | ||
DOCKER: 1 | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Reconfigure git to use HTTP authentication | ||
run: > | ||
git config --global url."https://github.com/".insteadOf | ||
ssh://git@github.com/ | ||
- name: Git Pull | ||
run: git pull | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
- name: Configure Node caching | ||
uses: actions/cache@v2 | ||
env: | ||
cache-name: cache-node-modules-mac | ||
with: | ||
path: ~/.npm | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | ||
restore-keys: | | ||
${{ runner.os }}-build-${{ env.cache-name }}- | ||
${{ runner.os }}-build- | ||
${{ runner.os }}- | ||
- name: Install dependencies | ||
run: npm clean-install | ||
- name: Install electron dependencies | ||
run: cd electron && npm clean-install && ls node_modules | grep @ | ||
- name: build next | ||
run: npm run build && npm run export && npx rimraf electron/app && npx cap copy electron | ||
- name: Build distribution | ||
env: | ||
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} | ||
CSC_LINK: ${{ secrets.CSC_LINK }} | ||
APPLEID: ${{ secrets.APPLEID }} | ||
APPLEIDPASS: ${{ secrets.APPLEIDPASS }} | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: cd electron && npm run electron:make | ||
- name: Create zip file | ||
run: | | ||
cd electron/dist/mac | ||
ditto -c -k --keepParent deep-memo.app deep-memo.app.zip | ||
- name: And a README (to work around GitHub double-zips) | ||
run: | | ||
echo "More information: https://deep.foundation" > electron/dist/mac/README.txt | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Mac-deep-memo | ||
path: | | ||
electron/dist/mac/deep-memo.app.zip | ||
electron/dist/mac/README.txt | ||
windows: | ||
name: Windows | ||
needs: [get-app-version,sync-electron-app-version] | ||
env: | ||
USE_HARD_LINKS: false | ||
MIGRATIONS_DIR: .migrate | ||
ASSET_PREFIX: '.' | ||
npm_config_yes: true | ||
NEXT_PUBLIC_ENGINES: 1 | ||
MIGRATIONS_ID_TYPE_SQL: bigint | ||
MIGRATIONS_ID_TYPE_GQL: bigint | ||
MIGRATIONS_HASURA_PATH: localhost:8080 | ||
MIGRATIONS_HASURA_SSL: 0 | ||
MIGRATIONS_HASURA_SECRET: myadminsecretkey | ||
NEXT_PUBLIC_DEEPLINKS_SERVER: http://localhost:3007 | ||
NEXT_PUBLIC_GQL_PATH: localhost:3006/gql | ||
NEXT_PUBLIC_GQL_SSL: 0 | ||
DEEPLINKS_HASURA_PATH: localhost:8080 | ||
DEEPLINKS_HASURA_SSL: 0 | ||
MIGRATIONS_DEEPLINKS_APP_URL: http://host.docker.internal:3007 | ||
MIGRATIONS_DEEPLINKS_URL: http://host.docker.internal:3006 | ||
DOCKER: 1 | ||
runs-on: windows-2019 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Reconfigure git to use HTTP authentication | ||
run: > | ||
git config --global url."https://github.com/".insteadOf | ||
ssh://git@github.com/ | ||
- name: Git Pull | ||
run: git pull | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
- name: Configure Node caching | ||
uses: actions/cache@v2 | ||
env: | ||
cache-name: cache-node-modules-windows | ||
with: | ||
path: ~/.npm | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | ||
restore-keys: | | ||
${{ runner.os }}-build-${{ env.cache-name }}- | ||
${{ runner.os }}-build- | ||
${{ runner.os }}- | ||
- name: install node-gyp | ||
run: npm install --global node-gyp@10.0.1 | ||
- name: Set Python version for node-gyp | ||
run: echo "python=python2.7" >> ~/.npmrc | ||
- name: Install dependencies | ||
run: npm clean-install | ||
- name: Install electron dependencies | ||
run: cd electron && npm clean-install | ||
- name: build next | ||
run: npm run build && npm run export && npx rimraf electron/app && npx cap copy electron | ||
- name: Build distribution | ||
run: cd electron && npm run electron:make | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Create zip file | ||
run: | | ||
cd electron/dist | ||
tar.exe -a -c -f deep-memo.zip "deep-memo Setup ${{needs.get-app-version.outputs.app-version}}.exe" | ||
- name: And a README (to work around GitHub double-zips) | ||
run: | | ||
echo "More information: https://deep.foundation" > electron/dist/README.txt | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Windows-deep-memo | ||
path: | | ||
electron/dist/deep-memo.zip | ||
electron/dist/README.txt | ||
android: | ||
name: Android | ||
needs: [sync-electron-app-version] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- name: Setup Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
- name: Install dependencies | ||
run: npm clean-install | ||
- name: Build Android | ||
run: npm run build-android | ||
- name: Set up Java | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'temurin' | ||
java-version: '17' | ||
- name: Set up Android SDK | ||
uses: android-actions/setup-android@v3 | ||
- name: Build APK | ||
run: | | ||
cd android | ||
./gradlew --version | ||
./gradlew assembleRelease --stacktrace --info | ||
- name: Upload APK | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: deep-memo-android.apk | ||
path: android/app/build/outputs/apk/release/app-release-unsigned.apk | ||
# ios: | ||
# name: iOS | ||
# needs: [sync-electron-app-version] | ||
# runs-on: macos-latest | ||
# steps: | ||
# - name: Checkout code | ||
# uses: actions/checkout@v4 | ||
# - name: Setup Node.js | ||
# uses: actions/setup-node@v4 | ||
# with: | ||
# node-version: 18 | ||
# - name: Install dependencies | ||
# run: npm clean-install | ||
# - name: Build iOS | ||
# run: npm run build-ios | ||
# - uses: maxim-lobanov/setup-xcode@v1 | ||
# with: | ||
# xcode-version: "14.2.0" | ||
# - name: Build IPA | ||
# run: | | ||
# cd ios/App | ||
# xcodebuild -workspace App.xcworkspace -scheme App -configuration Release -archivePath build/App.xcarchive archive | ||
# xcodebuild -exportArchive -archivePath build/App.xcarchive -exportOptionsPlist exportOptions.plist -exportPath build | ||
# - name: Upload IPA | ||
# uses: actions/upload-artifact@v3 | ||
# with: | ||
# name: deep-memo-ios.ipa | ||
# path: ios/build/App.ipa | ||
release: | ||
needs: | ||
- linux | ||
- mac | ||
- windows | ||
- android | ||
- get-app-version | ||
# - ios | ||
name: Create Release | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- name: Create Release | ||
id: create_release | ||
uses: actions/create-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{needs.get-app-version.outputs.app-version}} | ||
release_name: Release ${{ needs.get-app-version.outputs.app-version}} | ||
body: ${{ needs.get-app-version.outputs.app-version}} | ||
draft: false | ||
prerelease: false | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: Linux-deep-memo | ||
path: electron/dist | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: Windows-deep-memo | ||
path: electron/dist | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: Mac-deep-memo | ||
path: electron/dist | ||
- name: upload linux artifact | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: electron/dist/deep-memo.tar.gz | ||
asset_name: linux-deep-memo.tar.gz | ||
asset_content_type: application/gzip | ||
- name: upload windows artifact | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: electron/dist/deep-memo.zip | ||
asset_name: windows-deep-memo.zip | ||
asset_content_type: application/zip | ||
- name: upload windows artifact | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: electron/dist/deep-memo.app.zip | ||
asset_name: mac-deep-memo.zip | ||
asset_content_type: application/zip | ||
- name: upload android artifact | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: android/app/build/outputs/apk/release/app-release-unsigned.apk | ||
asset_name: deep-memo-android.apk | ||
asset_content_type: application/zip |