Cualquier desarrollador de software puede compilar, probar y empaquetar con eficiencia cualquier proyecto, de cualquier tamaño o complejidad, con herramientas fáciles de adoptar y y extenderlo.
Los ingenieros pueden dar por sentado los fundamentos de la compilación. Desarrolladores de software se enfocan en el proceso creativo de crear código, ya que la mecánica de compilación y prueba se resuelve. Al personalizar el sistema de compilación para para admitir idiomas nuevos o necesidades únicas de la organización, los usuarios se enfocan aspectos de la extensibilidad que son exclusivos de su caso de uso, sin tener para reinventar la plomería básica.
Los ingenieros pueden contribuir con facilidad en cualquier proyecto. Un desarrollador que quiere empezar a trabajar en un nuevo proyecto, basta con clonar el proyecto y ejecutar compilar. No es necesario realizar una configuración local; simplemente funciona. Con ejecución remota multiplataforma, pueden trabajar en cualquier máquina, en cualquier lugar y probar completamente sus cambios en todas las plataformas a las que se orienta el proyecto. Los ingenieros pueden configurar rápidamente la compilación para un proyecto nuevo o de forma incremental migrar una compilación existente.
Los proyectos se pueden escalar a equipos de cualquier tamaño y base. Rápido, Las pruebas incrementales permiten a los equipos validar por completo cada cambio antes de que se implemente. comprometida. Esto sigue siendo así, incluso a medida que crecen los repositorios, los proyectos abarcan múltiples se presentan repositorios y varios lenguajes. La infraestructura no fuerza que los desarrolladores intercambien la cobertura de prueba por la velocidad de compilación.
Creemos que Bazel tiene el potencial para hacer realidad esta visión.
Bazel se compiló desde cero para permitir compilaciones que sean reproducibles (una determinado conjunto de entradas siempre producirá las mismas salidas) y portátil (una se puede ejecutar en cualquier máquina sin afectar el resultado).
Estas características admiten una incrementalidad segura (solo se modificó la reconstrucción entradas no presentan el riesgo de corrupción) y la distributabilidad (creación están aisladas y pueden descargarse). Minimizando el trabajo necesario para hacer una compilación y paralelización correctas que funcionen en múltiples núcleos y nodos remotos , Bazel puede agilizar cualquier compilación.
capa de abstracción de Bazel: instrucciones específicas para lenguajes, plataformas y de cadenas de herramientas implementadas en un lenguaje de extensibilidad simple, se puede aplicar fácilmente a cualquier contexto.
Competencias principales de Bazel
- Bazel admite compilaciones y pruebas multilingües y multiplataforma. Puedes ejecuta un solo comando para compilar y probar todo el árbol de fuentes, sin importar a qué combinación de idiomas y plataformas te orientas.
- Las compilaciones de Bazel son rápidas y correctas. Cada ejecución de prueba y compilación incrementales, sobre las capacidades y en CI.
- Bazel proporciona un lenguaje uniforme y extensible para definir compilaciones para cualquier lenguaje o plataforma.
- Bazel permite que tus compilaciones escalen a través de la conexión a la ejecución remota y servicios de almacenamiento en caché.
- Bazel funciona en todas las principales plataformas de desarrollo (Linux, MacOS y Windows).
- Aceptamos que la adopción de Bazel requiere esfuerzo, pero la adopción gradual es como sea posible. Bazel interactúa con herramientas estándar de facto para un producto dado. lenguaje y plataforma.
Servicio a comunidades lingüísticas
La ingeniería de software evoluciona en el contexto de las comunidades lingüísticas, por lo general, grupos autoorganizados de personas que utilizan herramientas y prácticas comunes.
Para ser útiles para los miembros de una comunidad lingüística, las reglas de Bazel de alta calidad deben ser que se integran con los flujos de trabajo y las convenciones de la comunidad.
Bazel tiene el compromiso de ser extensible y abierto, y de admitir buenos conjuntos de reglas para cualquier idioma.
Requisitos de un buen conjunto de reglas
- Las reglas deben admitir una compilación y prueba eficientes del lenguaje, incluida la cobertura de código.
- Las reglas deben interactuar con un "administrador de paquetes" muy utilizado para la lenguaje (como Maven para Java) y admiten rutas de migración incrementales de otros sistemas de compilación ampliamente usados.
- Las reglas deben ser interoperables y extensibles, de acuerdo “Sándwich Bazel” con principios de seguridad.
- Las reglas deben estar listas para la ejecución remota. En la práctica, esto significa configurable con el mecanismo de cadenas de herramientas.
- Las reglas (y Bazel) deben interactuar con un IDE muy usado para el idioma, si es que lo hay.
- Las reglas deben contar con documentación completa y utilizable, con instrucciones introductorias. material para usuarios nuevos, y documentos exhaustivos para usuarios expertos.
Cada uno de estos artículos es esencial y solo en conjunto entregan los productos de profesionales de datos para su ecosistema en particular.
Además, en líneas generales, son suficientes: una vez que se cumplen todos, Bazel completa ofrece su valor a los miembros de esa comunidad lingüística.