Skip to content

Building, bundling and CI

LeoTM edited this page Apr 16, 2023 · 65 revisions

History

  • 1970s: Yacc (Yet Another Compiler-Compiler) (Unix) - LALR parser generator
  • 1976: Make (Unix) - Makefiles
  • 1985: Bison (GNU) - general-purpose language parser generator (CFG -> LR/GLR)
  • 1987: Flex (fast lexical analyzer generator) - tokenise input
  • 1995: Ruby - high-lvl general-purpose language
  • 1999: (Apache) Tomccat - Java HTTP server
  • 2000: CMake - generate another system's build files - used w Make/Ninja/AndroidStudio/Xcode/MSVisualStudio/etc
  • Jul00: (Apache) Ant - Java Make replacement (needs Java plat), XML
  • Mar04: RubyGems - Ruby pkg man
  • Jul04: (Apache) Maven - Java + C#/Ruby/Scala

Capture

  • 2007: Qt Creator / Workbench (Qt) - C++/JS/QML IDE for GUIs/widgets on desktop/mobile/Linux - can use qmake/CMake/GNUAutotools
  • Apr08: Gradle - Groovy/Kotlin DSL (bundles RN w Metro) (top-down)
  • Nov09: Leiningen - Clojure
  • 2010: Ninja (Google) - Make replacement, speed up Chrome, parts of Android, LLVM, other
  • Sep11: CocoaPods - Obj-C/Swift dep man (inspired by RubyGems) and auto Xcode integ
  • May14: Sbt - Scala (needs Java)
  • Mar15: Bazel (Blaze) - Starlark (Python) rules/macros - Java/C/C++/Go/Python/Objective-C/Bourne - Android/iOS - (bottom-up)
  • Feb16: Please - not Maven, pip, or go build - not make - not Bazel, Buck or Pants - no Windows
  • Apr18: Metro (Meta) - RN JS bundler (customise w rnx-kit) - minify faster
  • Jun18: Pants - Python/Go/Java/Scala/Shell/Docker - inspired by Blaze - JS help needed (contribute after CLI or earlier)
  • Nov20: ESBuild - extremely fast JS/CSS bundler/minifier
  • Jan21: Buck (Meta) - Java/Android/iOS/Other - inspired by Bazel
  • Mar21: Re.Pack (Haul, Webpack-based) - RN builder
  • 🚧: swcpack (Rust-based) - bundle JS/TS
  • 🚧: Buck2

Android

  • IDE: Android Studio [Stable / Preview - RC/Canary]
  • Build Tool / Bundler (CLI): Gradle Wrapper ./gradlew

iOS

  • IDE: Xcode [stable / beta]
  • Build Tool / Bundler (CLI): xcodebuild

Automate

CI workflow (yml)

  • Examples
  • GitHub Actions (yml)
    • Xcode - Build and Analyze
    • iOS (build and test on sim)
    • Java with Gradle (wrapper)
    • Android CI (Gradle)
    • fastlane
    • Super Linter
    • etc
  • BitRise (yml)
    • CocoaPods
    • Cert/Profile install
    • Xcode Archive/Export
    • Android Build
    • fastlane
    • etc
  • CircleCI
  • AppCenter
    • CodePush only
    • Unreliable, Detox E2E not pos
  • Host runner

Clone this wiki locally