Browse Source

try actual build

John Kleinschmidt 3 years ago
parent
commit
5dda2a06a5
1 changed files with 178 additions and 2 deletions
  1. 178 2
      .github/workflows/github-actions.yml

+ 178 - 2
.github/workflows/github-actions.yml

@@ -6,6 +6,8 @@ jobs:
     steps:
       - name: Check out Electron
         uses: actions/checkout@v2
+        with:
+          path: src/electron
       - name: Get and setup depot tools
         run: |
           git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
@@ -47,5 +49,179 @@ jobs:
                   exit 1
                 fi
               fi
-            fi   
-      - run: echo "🍏 This job's status is ${{ job.status }}."
+            fi
+      - name: Check amount of disk space available after sync
+        run: df -h  
+      - name: Setup Environment Variables
+        run: |
+          # To find `gn` executable.         
+          echo "CHROMIUM_BUILDTOOLS_PATH=$PWD/src/buildtools" >> $GITHUB_ENV
+
+      - name: Setup Goma
+        env:
+          RAW_GOMA_AUTH: ${{ secrets.RAW_GOMA_AUTH }}
+        run: |
+          echo " NUMBER_OF_NINJA_PROCESSES=300" >> $GITHUB_ENV
+          if [ "`uname`" == "Darwin" ]; then
+            echo "ulimit -n 10000" >> $GITHUB_ENV
+            echo "sudo launchctl limit maxfiles 65536 200000" >> $GITHUB_ENV
+          fi
+          if [ ! -z "$RAW_GOMA_AUTH" ]; then
+            echo $RAW_GOMA_AUTH > ~/.goma_oauth2_config
+          else
+            echo "GOMA AUTH NOT FOUND"            
+          fi
+          git clone https://github.com/electron/build-tools.git
+          cd build-tools
+          npm install
+          mkdir third_party
+          node -e "require('./src/utils/goma.js').downloadAndPrepare({ gomaOneForAll: true })"
+          export GOMA_FALLBACK_ON_AUTH_FAILURE=true
+          third_party/goma/goma_ctl.py ensure_start
+          echo 'GN_GOMA_FILE='`node -e "console.log(require('./src/utils/goma.js').gnFilePath)"` >> $GITHUB_ENV
+          echo 'LOCAL_GOMA_DIR='`node -e "console.log(require('./src/utils/goma.js').dir)"` >> $GITHUB_ENV
+          echo 'GOMA_FALLBACK_ON_AUTH_FAILURE=true' >> $GITHUB_ENV
+          cd ..
+      - name: Default GN gen
+        env:
+          GN_BUILDFLAG_ARGS: 'enable_precompiled_headers = false'
+          GN_CONFIG: //electron/build/args/testing.gn
+        run: |
+          cd src
+          gn gen out/Default --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
+      - name: Electron build
+        run: |
+          cd src
+          NINJA_SUMMARIZE_BUILD=1 autoninja -C out/Default electron -j $NUMBER_OF_NINJA_PROCESSES
+          cp out/Default/.ninja_log out/electron_ninja_log
+          node electron/script/check-symlinks.js
+
+      - name: Build dist.zip
+        run: |
+          cd src
+          if [ "$SKIP_DIST_ZIP" != "1" ]; then
+            ninja -C out/Default electron:electron_dist_zip
+            if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
+              if [ "`uname`" == "Darwin" ]; then
+                target_os=mac
+                target_cpu=x64
+                if [ x"$MAS_BUILD" == x"true" ]; then
+                  target_os=mac_mas
+                fi
+                if [ "$TARGET_ARCH" == "arm64" ]; then
+                  target_cpu=arm64
+                fi
+              elif [ "`uname`" == "Linux" ]; then
+                target_os=linux
+                if [ x"$TARGET_ARCH" == x ]; then
+                  target_cpu=x64
+                elif [ "$TARGET_ARCH" == "ia32" ]; then
+                  target_cpu=x86
+                else
+                  target_cpu="$TARGET_ARCH"
+                fi
+              else
+                echo "Unknown system: `uname`"
+                exit 1
+              fi
+              electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest
+            fi
+          fi
+      - name: Build native test targets
+        run: |
+          cd src
+          ninja -C out/Default shell_browser_ui_unittests -j $NUMBER_OF_NINJA_PROCESSES
+      - name: Build Node.js headers
+        run: |
+          cd src
+          ninja -C out/Default third_party/electron_node:headers
+      - name: Check goma stats after build
+        if: ${{ always() }}
+        run: |      
+          set +e
+          set +o pipefail
+          $LOCAL_GOMA_DIR/goma_ctl.py stat
+          $LOCAL_GOMA_DIR/diagnose_goma_log.py
+          true
+      - name: mksnapshot build
+        run: |
+          cd src
+          if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" != "1" ]; then
+            ninja -C out/Default electron:electron_mksnapshot -j $NUMBER_OF_NINJA_PROCESSES
+            gn desc out/Default v8:run_mksnapshot_default args > out/Default/mksnapshot_args
+          fi
+          if [ "`uname`" != "Darwin" ]; then
+            if [ "$TARGET_ARCH" == "arm" ]; then
+              electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/mksnapshot
+              electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/v8_context_snapshot_generator
+            elif [ "$TARGET_ARCH" == "arm64" ]; then
+              electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/mksnapshot
+              electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/v8_context_snapshot_generator
+            else
+              electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot
+              electron/script/strip-binaries.py --file $PWD/out/Default/v8_context_snapshot_generator
+            fi
+          fi
+          if [ "$USE_PREBUILT_V8_CONTEXT_SNAPSHOT" != "1" ] && [ "$SKIP_DIST_ZIP" != "1" ]; then
+            ninja -C out/Default electron:electron_mksnapshot_zip -j $NUMBER_OF_NINJA_PROCESSES
+            (cd out/Default; zip mksnapshot.zip mksnapshot_args gen/v8/embedded.S)
+          fi
+      - name: Build chromedriver.zip
+        run: |
+          cd src
+          if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
+            gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
+            export CHROMEDRIVER_DIR="out/chromedriver"
+          else
+            export CHROMEDRIVER_DIR="out/Default"
+          fi
+          ninja -C $CHROMEDRIVER_DIR electron:electron_chromedriver -j $NUMBER_OF_NINJA_PROCESSES
+          if [ "`uname`" == "Linux" ]; then
+            electron/script/strip-binaries.py --target-cpu="$TARGET_ARCH" --file $PWD/$CHROMEDRIVER_DIR/chromedriver
+          fi
+          ninja -C $CHROMEDRIVER_DIR electron:electron_chromedriver_zip
+          if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
+            cp out/chromedriver/chromedriver.zip out/Default
+          fi
+      - name: ffmpeg GN gen
+        run: |
+          cd src
+          gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS"
+      - name: Non proprietary ffmpeg build
+        run: |
+          cd src
+          ninja -C out/ffmpeg electron:electron_ffmpeg_zip -j $NUMBER_OF_NINJA_PROCESSES
+
+      - name: hunspell build
+        run: |
+          cd src
+          if [ "$SKIP_DIST_ZIP" != "1" ]; then
+            ninja -C out/Default electron:hunspell_dictionaries_zip -j $NUMBER_OF_NINJA_PROCESSES
+          fi
+      - name: Persist Build artifacts
+        uses: actions/upload-artifact@v2
+        with:
+          name: build-artifacts
+          path: |
+            src/out/Default/dist.zip
+            src/out/Default/mksnapshot.zip
+            src/out/Default/chromedriver.zip
+            src/out/Default/shell_browser_ui_unittests
+            src/out/Default/gen/node_headers
+            src/out/ffmpeg/ffmpeg.zip
+            src/electron
+            src/third_party/electron_node
+            src/third_party/nan
+            src/cross-arch-snapshots
+            src/third_party/llvm-build
+            src/build/linux
+            src/buildtools/third_party/libc++
+            src/buildtools/third_party/libc++abi
+            src/out/Default/obj/buildtools/third_party
+      - name: Zip symbols
+        run: |
+          cd src
+          export BUILD_PATH="$PWD/out/Default"
+          ninja -C out/Default electron:licenses
+          ninja -C out/Default electron:electron_version
+          DELETE_DSYMS_AFTER_ZIP=1 electron/script/zip-symbols.py -b $BUILD_PATH