SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
СИСТЕМЫ СБОРКИ
    Краткий обзор
ЧТО МОЖНО СОБРАТЬ?
     Зачем что-то собирать?
MAKE


• 100500   реализаций на различных языках

• Основной   файл: Makefile

• 46742   repo@github
MAKE

variable = value

target: componentA componentB
    commandA
    commandB

targetB: componentC componentD
    commandA
    commandB
MAKE

BACKUP_DAY = `date "+%Y.%m%d%"`

release: clean backup

backup:
  tar -czvf /backup/$(BACKUP_DAY).tar.gz build

clean:
  rm -f tmp/*
ANT


• Напиан   на Java

• Независит   от платформы

• Основной    файл: build.xml

• 6346   repo@github
ANT
<?xml version="1.0"?>
<project default="release">
  <target name="release" depends="backup,clean" />
  <target name="backup" description="Clean all">
    <exec executable="tar">
      <arg value="-czvf" />
      <arg value="/backup/${current.day}.tar.gz" />
    </exec>
  </target>
  <target name="clean" description="Clean all">
    <delete dir="tmp" />
  </target>
</project>
MAVEN

• Написан     на Java

• Основной       файл: pom.xml

• 7161   @github.com

• Maven
      - это просто *SARCASM*
 maven@5.minute
 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app 
 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
MAVEN
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
	   <modelVersion>4.0.0</modelVersion>
	   <groupId>my.app</groupId>
	   <artifactId>my-app-name</artifactId>
	   <version>0.0.1-SNAPSHOT</version>
	   <packaging>jar</packaging>
	   <name>my-app-name</name>
	   <url>https://github.com/mylogin/myapp</url>
</project>
MAVEN
<build>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>
</build>
MAVEN
<project xmlns="http://maven.apache.org/POM/4.0.0"                    <developerConnection>scm:git:ssh://git@github.com/arey/         <downloadUrl>https://github.com/arey/maven-config-github-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"             maven-config-github-cloudbees.git</developerConnection>         cloudbee</downloadUrl>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://       </scm>                                                            <repository>
maven.apache.org/maven-v4_0_0.xsd">                                                                                                     <id>javaetmoi-cloudbees-release</id>
  <modelVersion>4.0.0</modelVersion>                                <build>                                                             <name>javaetmoi-cloudbees-release</name>
  <groupId>com.javaetmoi.maven</groupId>                              <extensions>                                                      <!-- Webdav repository url are prefixed with dav: -->
  <version>1.1-SNAPSHOT</version>                                       <!-- Extension required to deploy a snapshot or a               <url>dav:https://repository-



                                                                   ЕЩЁ XML!
  <artifactId>maven-config-github-cloudbees</artifactId>          release to the CloudBees remote maven repository using Webdav   javaetmoi.forge.cloudbees.com/release/</url>
  <name>JavaEtMoi Maven :: ${project.artifactId} - $              -->                                                                 </repository>
{project.packaging}</name>                                              <extension>                                                   <snapshotRepository>
  <packaging>pom</packaging>                                              <groupId>org.apache.maven.wagon</groupId>                     <id>javaetmoi-cloudbees-snapshot</id>
  <description>Maven configuration example pom.xml file for               <artifactId>wagon-webdav</artifactId>                         <name>javaetmoi-cloudbees-snapshot</name>
working with GitHub and the CloudBees maven repository</                  <version>1.0-beta-2</version>                                 <url>dav:https://repository-
description>                                                            </extension>                                              javaetmoi.forge.cloudbees.com/snapshot/</url>
  <inceptionYear>2012</inceptionYear>                                 </extensions>                                                   </snapshotRepository>
  <url>https://github.com/arey/maven-config-github-cloudbees</                                                                      </distributionManagement>
url>                                                                  <plugins>
                                                                        <!-- Plugin used to process release using the command       <repositories>



                                                                 БОЛЬШЕ XML!
  <developers>                                                    line: mvn release:prepare release:perform -->                       <!-- Cloudbees maven repositories for releases and
    <developer>                                                         <plugin>                                                  snapshots -->
      <id>arey</id>                                                       <groupId>org.apache.maven.plugins</groupId>                 <repository>
      <name>Antoine Rey</name>                                            <artifactId>maven-release-plugin</artifactId>                 <id>javaetmoi-cloudbees-release</id>
      <email>antoine@javaetmoi.com</email>                                <version>2.2.2</version>                                      <name>javaetmoi-cloudbees-release</name>
      <url>http://javaetmoi.com</url>                                   </plugin>                                                       <url>https://repository-javaetmoi.forge.cloudbees.com/
      <timezone>+1</timezone>                                                                                                     release/</url>
      <roles>                                                           <plugin>                                                        <releases>
        <role>Java Developer</role>                                       <groupId>org.apache.maven.plugins</groupId>                     <enabled>true</enabled>
      </roles>                                                            <artifactId>maven-source-plugin</artifactId>                  </releases>
    </developer>                                                          <version>2.1.2</version>                                      <snapshots>
  </developers>                                                           <configuration>                                                 <enabled>false</enabled>
                                                                            <encoding>UTF-8</encoding>                                  </snapshots>
  <!-- Continuous Integration build hosted by CloudBees -->               </configuration>                                            </repository>
  <ciManagement>                                                        </plugin>                                                     <repository>
    <system>jenkins</system>                                            <plugin>                                                        <id>javaetmoi-cloudbees-snapshot</id>
    <url>https://javaetmoi.ci.cloudbees.com/job/Maven-                    <groupId>org.apache.maven.plugins</groupId>                   <name>javaetmoi-cloudbees-snapshot</name>
Configuration-for-GitHub/</url>                                           <artifactId>maven-javadoc-plugin</artifactId>                 <url>https://repository-javaetmoi.forge.cloudbees.com/
  </ciManagement>                                                         <version>2.7</version>                                  snapshot/</url>
  <issueManagement>                                                     </plugin>                                                       <releases>
    <system>github</system>                                             <plugin>                                                          <enabled>false</enabled>
    <url>https://github.com/arey/maven-config-github-                     <groupId>org.apache.maven.plugins</groupId>                   </releases>
cloudbees/issues</url>                                                    <artifactId>maven-deploy-plugin</artifactId>                  <snapshots>
  </issueManagement>                                                      <version>2.7</version>                                          <enabled>true</enabled>
                                                                        </plugin>                                                       </snapshots>
                                                                      </plugins>                                                      </repository>
  <!-- GitHub Software Configuration Management -->                 </build>                                                        </repositories>
  <scm>
    <url>https://github.com/arey/maven-config-github-               <!-- Deploy releases and snapshots to the CloudBees maven
cloudbees</url>                                                   repositories -->                                                </project>
    <connection>scm:git:ssh://git@github.com/arey/maven-            <distributionManagement>
config-github-cloudbees.git</connection>                                                                                          7
ANT + IVY


• Теперь   ant почти как maven!

• Основной    файл: ivy.xml

• добавляет   секцию dependencies
GRADLE

• Написан   на Java

• Основной    файл: build.gradle

• Сборка   описывается на Groovy (Java с DSL)

• Умеет   исполнять рецепты ant и ivy/maven

• 432   repo@github :)
GRADLE

task release(dependsOn: [‘clean’,’backup’])

task backup << {
  def cmd="tar -czvf /backup/backup.tar.gz build"
  cmd.execute()
}

task clean << {
  def dir = new File("tmp")
  dir.deleteDir()
}
ЧТО ЕЩЁ


• SCons    (Python), 229 repo@github

• Phing   (Ant на php)

• _Первая    буква вашего любимого языка_ ake

• IncrediBuild   for Visual Studio
THE END

Más contenido relacionado

La actualidad más candente

Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Max Andersen
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioMax Andersen
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
JavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオンJavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオンharuki ueno
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOFMax Andersen
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerArun Gupta
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerKaty Slemon
 
Web deploy command line
Web deploy command lineWeb deploy command line
Web deploy command lineLarry Nung
 
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010Arun Gupta
 
OSGi framework overview
OSGi framework overviewOSGi framework overview
OSGi framework overviewBalduran Chang
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginBrad Williams
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The FactLuciano Resende
 
Maven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos SanchezMaven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos Sanchezmfrancis
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回haruki ueno
 

La actualidad más candente (20)

Apache Maven for AT/QC
Apache Maven for AT/QCApache Maven for AT/QC
Apache Maven for AT/QC
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer Studio
 
Maven in Mule
Maven in MuleMaven in Mule
Maven in Mule
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
JavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオンJavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオン
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More Power
 
Web deploy
Web deployWeb deploy
Web deploy
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue router
 
Web deploy command line
Web deploy command lineWeb deploy command line
Web deploy command line
 
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010
 
OSGi framework overview
OSGi framework overviewOSGi framework overview
OSGi framework overview
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The Fact
 
Maven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos SanchezMaven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos Sanchez
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回
 

Similar a Build system

Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xmlakmini
 
Soft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsSoft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsrfelden
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!cyrilpicat
 
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsSpring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsRaghavan Mohan
 
Introduction To Maven2
Introduction To Maven2Introduction To Maven2
Introduction To Maven2Shuji Watanabe
 
Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in MuleShahid Shaik
 
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Alex Soto
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with MavenArcadian Learning
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with MavenSid Anand
 
Liquibase via maven
Liquibase via mavenLiquibase via maven
Liquibase via mavenMaki Turki
 
Spring Boot and JHipster
Spring Boot and JHipsterSpring Boot and JHipster
Spring Boot and JHipsterEueung Mulyana
 
Automation Frame works Instruction Sheet
Automation Frame works Instruction SheetAutomation Frame works Instruction Sheet
Automation Frame works Instruction SheetvodQA
 
Getting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGetting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGirish Bapat
 

Similar a Build system (20)

Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xml
 
Soft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsSoft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developments
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!
 
Maven advanced
Maven advancedMaven advanced
Maven advanced
 
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsSpring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
 
Pom
PomPom
Pom
 
Introduction To Maven2
Introduction To Maven2Introduction To Maven2
Introduction To Maven2
 
Maven
MavenMaven
Maven
 
Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in Mule
 
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
 
Ant, Maven and Jenkins
Ant, Maven and JenkinsAnt, Maven and Jenkins
Ant, Maven and Jenkins
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with Maven
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 
Liquibase via maven
Liquibase via mavenLiquibase via maven
Liquibase via maven
 
Maven
MavenMaven
Maven
 
Spring Boot and JHipster
Spring Boot and JHipsterSpring Boot and JHipster
Spring Boot and JHipster
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Automation Frame works Instruction Sheet
Automation Frame works Instruction SheetAutomation Frame works Instruction Sheet
Automation Frame works Instruction Sheet
 
Getting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGetting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydb
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 

Último

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Último (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

Build system

  • 1. СИСТЕМЫ СБОРКИ Краткий обзор
  • 2. ЧТО МОЖНО СОБРАТЬ? Зачем что-то собирать?
  • 3. MAKE • 100500 реализаций на различных языках • Основной файл: Makefile • 46742 repo@github
  • 4. MAKE variable = value target: componentA componentB commandA commandB targetB: componentC componentD commandA commandB
  • 5. MAKE BACKUP_DAY = `date "+%Y.%m%d%"` release: clean backup backup: tar -czvf /backup/$(BACKUP_DAY).tar.gz build clean: rm -f tmp/*
  • 6. ANT • Напиан на Java • Независит от платформы • Основной файл: build.xml • 6346 repo@github
  • 7. ANT <?xml version="1.0"?> <project default="release"> <target name="release" depends="backup,clean" /> <target name="backup" description="Clean all"> <exec executable="tar"> <arg value="-czvf" /> <arg value="/backup/${current.day}.tar.gz" /> </exec> </target> <target name="clean" description="Clean all"> <delete dir="tmp" /> </target> </project>
  • 8. MAVEN • Написан на Java • Основной файл: pom.xml • 7161 @github.com • Maven - это просто *SARCASM* maven@5.minute mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • 9. MAVEN <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.app</groupId> <artifactId>my-app-name</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>my-app-name</name> <url>https://github.com/mylogin/myapp</url> </project>
  • 10. MAVEN <build> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </build>
  • 11. MAVEN <project xmlns="http://maven.apache.org/POM/4.0.0"     <developerConnection>scm:git:ssh://git@github.com/arey/     <downloadUrl>https://github.com/arey/maven-config-github- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" maven-config-github-cloudbees.git</developerConnection> cloudbee</downloadUrl> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://   </scm>     <repository> maven.apache.org/maven-v4_0_0.xsd">       <id>javaetmoi-cloudbees-release</id>   <modelVersion>4.0.0</modelVersion>   <build>       <name>javaetmoi-cloudbees-release</name>   <groupId>com.javaetmoi.maven</groupId>     <extensions>       <!-- Webdav repository url are prefixed with dav: -->   <version>1.1-SNAPSHOT</version>       <!-- Extension required to deploy a snapshot or a       <url>dav:https://repository- ЕЩЁ XML!   <artifactId>maven-config-github-cloudbees</artifactId> release to the CloudBees remote maven repository using Webdav javaetmoi.forge.cloudbees.com/release/</url>   <name>JavaEtMoi Maven :: ${project.artifactId} - $ -->     </repository> {project.packaging}</name>       <extension>     <snapshotRepository>   <packaging>pom</packaging>         <groupId>org.apache.maven.wagon</groupId>       <id>javaetmoi-cloudbees-snapshot</id>   <description>Maven configuration example pom.xml file for         <artifactId>wagon-webdav</artifactId>       <name>javaetmoi-cloudbees-snapshot</name> working with GitHub and the CloudBees maven repository</         <version>1.0-beta-2</version>       <url>dav:https://repository- description>       </extension> javaetmoi.forge.cloudbees.com/snapshot/</url>   <inceptionYear>2012</inceptionYear>     </extensions>     </snapshotRepository>   <url>https://github.com/arey/maven-config-github-cloudbees</   </distributionManagement> url>     <plugins>       <!-- Plugin used to process release using the command   <repositories> БОЛЬШЕ XML!   <developers> line: mvn release:prepare release:perform -->     <!-- Cloudbees maven repositories for releases and     <developer>       <plugin> snapshots -->       <id>arey</id>         <groupId>org.apache.maven.plugins</groupId>     <repository>       <name>Antoine Rey</name>         <artifactId>maven-release-plugin</artifactId>       <id>javaetmoi-cloudbees-release</id>       <email>antoine@javaetmoi.com</email>         <version>2.2.2</version>       <name>javaetmoi-cloudbees-release</name>       <url>http://javaetmoi.com</url>       </plugin>       <url>https://repository-javaetmoi.forge.cloudbees.com/       <timezone>+1</timezone> release/</url>       <roles>       <plugin>       <releases>         <role>Java Developer</role>         <groupId>org.apache.maven.plugins</groupId>         <enabled>true</enabled>       </roles>         <artifactId>maven-source-plugin</artifactId>       </releases>     </developer>         <version>2.1.2</version>       <snapshots>   </developers>         <configuration>         <enabled>false</enabled>           <encoding>UTF-8</encoding>       </snapshots>   <!-- Continuous Integration build hosted by CloudBees -->         </configuration>     </repository>   <ciManagement>       </plugin>     <repository>     <system>jenkins</system>       <plugin>       <id>javaetmoi-cloudbees-snapshot</id>     <url>https://javaetmoi.ci.cloudbees.com/job/Maven-         <groupId>org.apache.maven.plugins</groupId>       <name>javaetmoi-cloudbees-snapshot</name> Configuration-for-GitHub/</url>         <artifactId>maven-javadoc-plugin</artifactId>       <url>https://repository-javaetmoi.forge.cloudbees.com/   </ciManagement>         <version>2.7</version> snapshot/</url>   <issueManagement>       </plugin>       <releases>     <system>github</system>       <plugin>         <enabled>false</enabled>     <url>https://github.com/arey/maven-config-github-         <groupId>org.apache.maven.plugins</groupId>       </releases> cloudbees/issues</url>         <artifactId>maven-deploy-plugin</artifactId>       <snapshots>   </issueManagement>         <version>2.7</version>         <enabled>true</enabled>       </plugin>       </snapshots>     </plugins>     </repository>   <!-- GitHub Software Configuration Management -->   </build>   </repositories>   <scm>     <url>https://github.com/arey/maven-config-github-   <!-- Deploy releases and snapshots to the CloudBees maven cloudbees</url> repositories --> </project>     <connection>scm:git:ssh://git@github.com/arey/maven-   <distributionManagement> config-github-cloudbees.git</connection> 7
  • 12. ANT + IVY • Теперь ant почти как maven! • Основной файл: ivy.xml • добавляет секцию dependencies
  • 13. GRADLE • Написан на Java • Основной файл: build.gradle • Сборка описывается на Groovy (Java с DSL) • Умеет исполнять рецепты ant и ivy/maven • 432 repo@github :)
  • 14. GRADLE task release(dependsOn: [‘clean’,’backup’]) task backup << { def cmd="tar -czvf /backup/backup.tar.gz build" cmd.execute() } task clean << { def dir = new File("tmp") dir.deleteDir() }
  • 15. ЧТО ЕЩЁ • SCons (Python), 229 repo@github • Phing (Ant на php) • _Первая буква вашего любимого языка_ ake • IncrediBuild for Visual Studio