diff --git a/.github/workflows/insider-linux.yml b/.github/workflows/insider-linux.yml
index ec07674..fd39db5 100644
--- a/.github/workflows/insider-linux.yml
+++ b/.github/workflows/insider-linux.yml
@@ -2,7 +2,6 @@ name: insider-linux
 
 on:
   workflow_dispatch:
-    branches: [ insider ]
   schedule:
     - cron: '0 1 * * *'
   push:
diff --git a/.github/workflows/insider-macos.yml b/.github/workflows/insider-macos.yml
index 0d34235..1227868 100644
--- a/.github/workflows/insider-macos.yml
+++ b/.github/workflows/insider-macos.yml
@@ -2,7 +2,6 @@ name: insider-macos
 
 on:
   workflow_dispatch:
-    branches: [ insider ]
   schedule:
     - cron: '0 1 * * *'
   push:
@@ -75,27 +74,11 @@ jobs:
         run: ./build.sh
         if: env.SHOULD_BUILD == 'yes'
 
-      - name: Sign binary
+      - name: Prepare artifacts
         env:
           CERTIFICATE_OSX_P12: ${{ secrets.CERTIFICATE_OSX_P12 }}
           CERTIFICATE_OSX_PASSWORD: ${{ secrets.CERTIFICATE_OSX_PASSWORD }}
           CERTIFICATE_OSX_ID: ${{ secrets.CERTIFICATE_OSX_ID }}
-        if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
-        run: |
-          if [ -d "VSCode-darwin-${VSCODE_ARCH}" ]; then # just in case the build failed
-            cd "VSCode-darwin-${VSCODE_ARCH}"
-            export CERTIFICATE_P12=VSCodium.p12
-            echo $CERTIFICATE_OSX_P12 | base64 --decode > $CERTIFICATE_P12
-            export KEYCHAIN=$RUNNER_TEMP/build.keychain
-            security create-keychain -p mysecretpassword $KEYCHAIN
-            security default-keychain -s $KEYCHAIN
-            security unlock-keychain -p mysecretpassword $KEYCHAIN
-            security import $CERTIFICATE_P12 -k $KEYCHAIN -P $CERTIFICATE_OSX_PASSWORD -T /usr/bin/codesign
-            security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword $KEYCHAIN
-            codesign --deep --force --verbose --sign "$CERTIFICATE_OSX_ID" VSCodium.app
-          fi
-
-      - name: Prepare artifacts
         run: ./prepare_artifacts.sh
         if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
 
diff --git a/.github/workflows/insider-spearhead.yml b/.github/workflows/insider-spearhead.yml
index 9308538..26427a7 100644
--- a/.github/workflows/insider-spearhead.yml
+++ b/.github/workflows/insider-spearhead.yml
@@ -2,7 +2,6 @@ name: insider-spearhead
 
 on:
   workflow_dispatch:
-    branches: [ insider ]
   schedule:
     - cron: '0 0 * * *'
 
diff --git a/.github/workflows/insider-windows.yml b/.github/workflows/insider-windows.yml
index dfae0c3..4b942fa 100644
--- a/.github/workflows/insider-windows.yml
+++ b/.github/workflows/insider-windows.yml
@@ -2,7 +2,6 @@ name: insider-windows
 
 on:
   workflow_dispatch:
-    branches: [ insider ]
   schedule:
     - cron: '0 1 * * *'
   push:
diff --git a/.github/workflows/stable-linux.yml b/.github/workflows/stable-linux.yml
index 6991814..908c2f8 100644
--- a/.github/workflows/stable-linux.yml
+++ b/.github/workflows/stable-linux.yml
@@ -2,7 +2,6 @@ name: stable-linux
 
 on:
   workflow_dispatch:
-    branches: [ master ]
     inputs:
       new_release:
         type: boolean
diff --git a/.github/workflows/stable-macos.yml b/.github/workflows/stable-macos.yml
index e4a35d2..6becd82 100644
--- a/.github/workflows/stable-macos.yml
+++ b/.github/workflows/stable-macos.yml
@@ -2,7 +2,6 @@ name: stable-macos
 
 on:
   workflow_dispatch:
-    branches: [ master ]
     inputs:
       new_release:
         type: boolean
@@ -78,27 +77,11 @@ jobs:
         run: ./build.sh
         if: env.SHOULD_BUILD == 'yes'
 
-      - name: Sign binary
+      - name: Prepare artifacts
         env:
           CERTIFICATE_OSX_P12: ${{ secrets.CERTIFICATE_OSX_P12 }}
           CERTIFICATE_OSX_PASSWORD: ${{ secrets.CERTIFICATE_OSX_PASSWORD }}
           CERTIFICATE_OSX_ID: ${{ secrets.CERTIFICATE_OSX_ID }}
-        if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
-        run: |
-          if [ -d "VSCode-darwin-${VSCODE_ARCH}" ]; then # just in case the build failed
-            cd "VSCode-darwin-${VSCODE_ARCH}"
-            export CERTIFICATE_P12=VSCodium.p12
-            echo $CERTIFICATE_OSX_P12 | base64 --decode > $CERTIFICATE_P12
-            export KEYCHAIN=$RUNNER_TEMP/build.keychain
-            security create-keychain -p mysecretpassword $KEYCHAIN
-            security default-keychain -s $KEYCHAIN
-            security unlock-keychain -p mysecretpassword $KEYCHAIN
-            security import $CERTIFICATE_P12 -k $KEYCHAIN -P $CERTIFICATE_OSX_PASSWORD -T /usr/bin/codesign
-            security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword $KEYCHAIN
-            codesign --deep --force --verbose --sign "$CERTIFICATE_OSX_ID" VSCodium.app
-          fi
-
-      - name: Prepare artifacts
         run: ./prepare_artifacts.sh
         if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
 
diff --git a/.github/workflows/stable-windows.yml b/.github/workflows/stable-windows.yml
index cc70dbc..8a3f990 100644
--- a/.github/workflows/stable-windows.yml
+++ b/.github/workflows/stable-windows.yml
@@ -2,7 +2,6 @@ name: stable-windows
 
 on:
   workflow_dispatch:
-    branches: [ master ]
     inputs:
       new_release:
         type: boolean
diff --git a/build.sh b/build.sh
index d780aab..a53fe61 100755
--- a/build.sh
+++ b/build.sh
@@ -30,29 +30,8 @@ if [[ "${SHOULD_BUILD}" == "yes" ]]; then
     . ../build/windows/rtf/make.sh
 
     yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci"
-    yarn gulp "vscode-win32-${VSCODE_ARCH}-inno-updater"
 
-    if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
-      yarn gulp "vscode-win32-${VSCODE_ARCH}-archive"
-    fi
-
-    if [[ "${SHOULD_BUILD_EXE_SYS}" != "no" ]]; then
-      yarn gulp "vscode-win32-${VSCODE_ARCH}-system-setup"
-    fi
-
-    if [[ "${SHOULD_BUILD_EXE_USR}" != "no" ]]; then
-      yarn gulp "vscode-win32-${VSCODE_ARCH}-user-setup"
-    fi
-
-    if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
-      if [[ "${SHOULD_BUILD_MSI}" != "no" ]]; then
-        . ../build/windows/msi/build.sh
-      fi
-
-      if [[ "${SHOULD_BUILD_MSI_NOUP}" != "no" ]]; then
-        . ../build/windows/msi/build-updates-disabled.sh
-      fi
-    else
+    if [[ "${VSCODE_ARCH}" != "ia32" && "${VSCODE_ARCH}" != "x64" ]]; then
       SHOULD_BUILD_REH="no"
     fi
 
@@ -62,20 +41,6 @@ if [[ "${SHOULD_BUILD}" == "yes" ]]; then
 
     find "../VSCode-linux-${VSCODE_ARCH}" -exec touch {} \;
 
-    if [[ "${SKIP_LINUX_PACKAGES}" != "True" ]]; then
-      if [[ "${SHOULD_BUILD_DEB}" != "no" || "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
-        yarn gulp "vscode-linux-${VSCODE_ARCH}-build-deb"
-      fi
-
-      if [[ "${SHOULD_BUILD_RPM}" != "no" ]]; then
-        yarn gulp "vscode-linux-${VSCODE_ARCH}-build-rpm"
-      fi
-
-      if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
-        . ../build/linux/appimage/build.sh
-      fi
-    fi
-
     VSCODE_PLATFORM="linux"
   fi
 
diff --git a/build/build.sh b/build/build.sh
index 98485ca..bbca3dd 100755
--- a/build/build.sh
+++ b/build/build.sh
@@ -4,10 +4,13 @@
 # to run with Bash: "C:\Program Files\Git\bin\bash.exe" ./build/build.sh
 ###
 
+export CI_BUILD=no
+export SHOULD_BUILD=yes
+export SKIP_PACKAGES="yes"
 export VSCODE_LATEST="no"
 export VSCODE_QUALITY="stable"
 
-while getopts ":il" opt; do
+while getopts ":ilp" opt; do
   case "$opt" in
     i)
       export VSCODE_QUALITY="insider"
@@ -15,6 +18,9 @@ while getopts ":il" opt; do
     l)
       export VSCODE_LATEST="yes"
       ;;
+    p)
+      export SKIP_PACKAGES="no"
+      ;;
   esac
 done
 
@@ -39,16 +45,20 @@ else
 fi
 
 echo "OS_NAME: ${OS_NAME}"
+echo "SKIP_PACKAGES: ${SKIP_PACKAGES}"
 echo "VSCODE_ARCH: ${VSCODE_ARCH}"
 echo "VSCODE_LATEST: ${VSCODE_LATEST}"
 echo "VSCODE_QUALITY: ${VSCODE_QUALITY}"
 
 rm -rf vscode* VSCode*
 
-if [[ "${OS_NAME}" == "windows" ]]; then
-  rm -rf build/windows/msi/releasedir
-fi
-
 . get_repo.sh
+. build.sh
 
-SHOULD_BUILD=yes CI_BUILD=no . build.sh
+if [[ "${SKIP_PACKAGES}" == "no" ]]; then
+  if [[ "${OS_NAME}" == "windows" ]]; then
+    rm -rf build/windows/msi/releasedir
+  fi
+
+  . prepare_artifacts.sh
+fi
diff --git a/prepare_artifacts.sh b/prepare_artifacts.sh
index 89af9a7..c347494 100755
--- a/prepare_artifacts.sh
+++ b/prepare_artifacts.sh
@@ -15,6 +15,28 @@ sum_file() {
 mkdir artifacts
 
 if [[ "${OS_NAME}" == "osx" ]]; then
+  if [[ "${CI_BUILD}" != "no" ]]; then
+    cd "VSCode-darwin-${VSCODE_ARCH}"
+
+    CERTIFICATE_P12=VSCodium.p12
+    KEYCHAIN="${RUNNER_TEMP}/build.keychain"
+
+    echo "${CERTIFICATE_OSX_P12}" | base64 --decode > "${CERTIFICATE_P12}"
+    security create-keychain -p mysecretpassword "${KEYCHAIN}"
+    security default-keychain -s "${KEYCHAIN}"
+    security unlock-keychain -p mysecretpassword "${KEYCHAIN}"
+    security import "${CERTIFICATE_P12}" -k "${KEYCHAIN}" -P "${CERTIFICATE_OSX_PASSWORD}" -T /usr/bin/codesign
+    security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword "${KEYCHAIN}"
+
+    if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
+      codesign --deep --force --verbose --sign "${CERTIFICATE_OSX_ID}" "VSCodium - Insiders.app"
+    else
+      codesign --deep --force --verbose --sign "${CERTIFICATE_OSX_ID}" "VSCodium.app"
+    fi
+
+    cd ..
+  fi
+
   if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
     echo "Building and moving ZIP"
     cd "VSCode-darwin-${VSCODE_ARCH}"
@@ -32,6 +54,34 @@ if [[ "${OS_NAME}" == "osx" ]]; then
 
   VSCODE_PLATFORM="darwin"
 elif [[ "${OS_NAME}" == "windows" ]]; then
+  cd vscode || { echo "'vscode' dir not found"; exit 1; }
+
+  yarn gulp "vscode-win32-${VSCODE_ARCH}-inno-updater"
+
+  if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
+    yarn gulp "vscode-win32-${VSCODE_ARCH}-archive"
+  fi
+
+  if [[ "${SHOULD_BUILD_EXE_SYS}" != "no" ]]; then
+    yarn gulp "vscode-win32-${VSCODE_ARCH}-system-setup"
+  fi
+
+  if [[ "${SHOULD_BUILD_EXE_USR}" != "no" ]]; then
+    yarn gulp "vscode-win32-${VSCODE_ARCH}-user-setup"
+  fi
+
+  if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
+    if [[ "${SHOULD_BUILD_MSI}" != "no" ]]; then
+      . ../build/windows/msi/build.sh
+    fi
+
+    if [[ "${SHOULD_BUILD_MSI_NOUP}" != "no" ]]; then
+      . ../build/windows/msi/build-updates-disabled.sh
+    fi
+  fi
+
+  cd ..
+
   if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
     echo "Moving ZIP"
     mv "vscode\\.build\\win32-${VSCODE_ARCH}\\archive\\VSCode-win32-${VSCODE_ARCH}.zip" "artifacts\\VSCodium-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.zip"
@@ -61,6 +111,22 @@ elif [[ "${OS_NAME}" == "windows" ]]; then
 
   VSCODE_PLATFORM="win32"
 else
+  cd vscode || { echo "'vscode' dir not found"; exit 1; }
+
+  if [[ "${SHOULD_BUILD_DEB}" != "no" || "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
+    yarn gulp "vscode-linux-${VSCODE_ARCH}-build-deb"
+  fi
+
+  if [[ "${SHOULD_BUILD_RPM}" != "no" ]]; then
+    yarn gulp "vscode-linux-${VSCODE_ARCH}-build-rpm"
+  fi
+
+  if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
+    . ../build/linux/appimage/build.sh
+  fi
+
+  cd ..
+
   if [[ "${SHOULD_BUILD_TAR}" != "no" ]]; then
     echo "Building and moving TAR"
     cd "VSCode-linux-${VSCODE_ARCH}"