Build #3
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: Build | |
on: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
dependencies: | |
name: Create draft release and install dependencies | |
runs-on: ubuntu-latest | |
outputs: | |
version: v${{steps.version.outputs.prop}} | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- name: Upgrade NPM | |
run: npm install -g npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Get version | |
id: version | |
uses: notiz-dev/github-action-json-property@release | |
with: | |
path: 'package.json' | |
prop_path: 'version' | |
- name: Create Release | |
id: create_release | |
uses: softprops/action-gh-release@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
name: v${{steps.version.outputs.prop}} | |
tag_name: v${{steps.version.outputs.prop}} | |
draft: true | |
prerelease: false | |
build-webui: | |
name: Build WebUI | |
needs: dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci | |
- name: Pre-build | |
run: npm run-script prebuild:webui | |
- name: Build | |
run: npm run build --prod | |
- name: Post-build | |
run: npm run-script postbuild:webui | |
- name: Create zip | |
run: | | |
mv ./dist/ ./web/ | |
zip -r release.zip ./web/ | |
- name: Upload Release Asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.dependencies.outputs.upload_url }} | |
asset_path: ./release.zip | |
asset_name: Transmissionic-webui-${{ needs.dependencies.outputs.version }}.zip | |
asset_content_type: application/zip | |
build-electron-linux: | |
name: Build Electron Linux | |
needs: dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- name: Install dependencies | |
run: | | |
npm ci | |
- name: Build and sync web assets | |
run: | | |
npm run build --prod | |
npx cap sync @capacitor-community/electron | |
npx cap copy @capacitor-community/electron | |
- name: Post-build | |
run: npm run-script postbuild:electron | |
- name: Install electron dependencies | |
working-directory: ./electron | |
run: npm ci | |
- name: Build and publish electron | |
working-directory: ./electron | |
run: npm run-script electron:publish-linux | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-electron-win: | |
name: Build Electron Windows | |
needs: dependencies | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- name: Install dependencies | |
run: | | |
npm ci | |
- name: Build and sync web assets | |
run: | | |
npm run build --prod | |
npx cap sync @capacitor-community/electron | |
npx cap copy @capacitor-community/electron | |
- name: Post-build | |
run: npm run-script postbuild:electron | |
- name: Install electron dependencies | |
working-directory: ./electron | |
run: npm ci | |
- name: Build and publish electron | |
working-directory: ./electron | |
run: npm run-script electron:publish-windows | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-electron-mac: | |
name: Build Electron macOS | |
needs: dependencies | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- name: Install dependencies | |
run: | | |
npm ci | |
- name: Build and sync web assets | |
run: | | |
npm run build --prod | |
npx cap sync @capacitor-community/electron | |
npx cap copy @capacitor-community/electron | |
- name: Post-build | |
run: npm run-script postbuild:electron | |
- name: Install electron dependencies | |
working-directory: ./electron | |
run: npm ci | |
- name: Build and publish electron | |
working-directory: ./electron | |
run: npm run-script electron:publish-mac | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-android: | |
name: Build Android | |
needs: dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: Install dependencies | |
run: | | |
npm ci | |
- name: Build and sync web assets | |
run: | | |
npm run build --prod | |
npx cap sync android | |
npx cap copy android | |
- name: Build APK | |
working-directory: ./android | |
run: | | |
chmod +x gradlew | |
./gradlew build | |
- name: Build Bundle | |
working-directory: ./android | |
run: | | |
chmod +x gradlew | |
./gradlew bundleRelease | |
- uses: ilharp/sign-android-release@v1 | |
name: Sign APK | |
id: sign_apk | |
with: | |
releaseDir: ./android/app/build/outputs/apk/release | |
signingKey: ${{ secrets.SIGNING_KEY }} | |
keyAlias: ${{ secrets.ALIAS }} | |
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} | |
buildToolsVersion: 33.0.0 | |
- uses: ilharp/sign-android-release@v1 | |
name: Sign Bundle | |
id: sign_bundle | |
with: | |
releaseDir: ./android/app/build/outputs/bundle/release | |
signingKey: ${{ secrets.SIGNING_KEY }} | |
keyAlias: ${{ secrets.ALIAS }} | |
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} | |
buildToolsVersion: 33.0.0 | |
- name: Upload Release Asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.dependencies.outputs.upload_url }} | |
asset_path: ${{steps.sign_apk.outputs.signedFile}} | |
asset_name: Transmissionic-android-${{ needs.dependencies.outputs.version }}.apk | |
asset_content_type: application/zip | |
- name: Upload Release Bundle | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Transmissionic-android-${{ needs.dependencies.outputs.version }}.aab | |
path: ${{steps.sign_bundle.outputs.signedFile}} | |
retention-days: 30 | |
build-ios: | |
name: Build iOS | |
needs: dependencies | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'npm' | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest-stable | |
- name: Install dependencies | |
run: | | |
npm ci | |
- name: Build and sync web assets | |
run: | | |
npm run build --prod | |
npx cap sync ios | |
npx cap copy ios | |
- name: Build IPA | |
working-directory: ./ios/App | |
run: | | |
xcodebuild -sdk iphoneos -workspace App.xcworkspace/ -scheme App -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO" CODE_SIGN_ENTITLEMENTS="" CODE_SIGNING_ALLOWED="NO" | |
mkdir -p Payload | |
mv ~/Library/Developer/Xcode/DerivedData/App-*/Build/Products/Release-iphoneos/App.app Payload | |
zip -r app.ipa Payload | |
- name: Upload Release Asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.dependencies.outputs.upload_url }} | |
asset_path: ./ios/App/app.ipa | |
asset_name: Transmissionic-ios-${{ needs.dependencies.outputs.version }}.ipa | |
asset_content_type: application/zip |