블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

Bazel 빌드툴


Tensorflow Serving을 살펴보다보니, Serving Server는 C++기반에 gRPC 인터페이스 기반이라는 것을 알았는데,

빌드 환경이 bazel이라는 것을 사용한다. 그래서 Bazel이 무엇인가 찾아봤는데. 쉽게 말하면 빌드 툴이다





위키에 설명이 가장 잘나와 있는데, 구글에서 만든 빌드 시스템으로, 구글의 경우 큰 소스코드를 빌드하기 때문에, 이를 위해서 만들어진 빌드 시스템을 오픈소스화 한것으로, 분산 빌드등을 제공하고 빠른 성능을 제공한다.


쉽게 말해서 make,ant,gradle,maven과 같은 빌드 시스템으로 보면 된다.

Java,C,C++,Python,Object C등의 언어를 지원한다.


https://en.wikipedia.org/wiki/Bazel_(software)

In software developmentBazel is an open source tool that allows for the automation of building and testing of software.[2] The company Google uses the build tool Blaze internally[3] and released and open-sourced part of the Blaze tool as Bazel, named as an anagram of Blaze.[4] Bazel was first released in March 2015 and achieved beta status by September 2015.[5]

Similar to build tools like MakeApache Ant, or Apache Maven,[2][4] Bazel builds software applications from source code using a set of rules. Rules and macros are created in the Skylark language, a subset of Python.[4] There are built-in rules for building software written in the programming languages of JavaCC++PythonObjective-C and Bourne shell scripts.[4][5] Bazel can produce software application packages suitable for deployment for the Android and iOS operating systems.[6]

In designing Bazel, emphasis has been placed on build speed, correctness, and reproducibility.[2][4] The tools uses parallelization to speed up parts of the build process.[4] It includes a Bazel Query language that can be used to analyze build dependencies in complex build graphs.[4]


아무래도 개발 환경 설정이 쉽지 않은 만큼, Bazel C++ 빌드 환경이 패키징된 도커 환경을 알아보는것이 더 좋겠다.

Cactus 실행용 ANT 스크립트

ALM/Test Automation | 2007.09.13 12:22 | Posted by 조대협

<project name="CactusTest" default="cactus-test" >

 <!--
 =============================================================================================
 기본 환경 정보 설정
 =============================================================================================
 -->
 <!-- 기본 디렉토리 정보 -->
 <property name="project.name" value="Cactus"/>
 <property name="lib" value="./lib"/>
 <property name="src" value="./src"/>
 <property name="build" value="./build"/>
 <property name="packaging" value="./pack"/>
 <property name="conf" value="./conf"/>

 <property name="cactus.home" value="D:\dev\lib\jakarta-cactus-13-1.7.2"/>
 <property name="cactus.testlog" value="c:\temp\test-report"/>
 <property name="tomcat.home" value="D:\dev\apache-tomcat-5.5.23\"/>

 <!-- jar 파일 경로 -->
 <property name="cactus.jar" value="${cactus.home}/lib/cactus-1.7.2.jar"/>
 <property name="cactus-ant.jar" value="${cactus.home}/lib/cactus-ant-1.7.2.jar"/>
 <property name="commons-httpclient.jar" value="${cactus.home}/lib/commons-httpclient-2.0.2.jar"/>
 <property name="commons-logging.jar" value="${cactus.home}/lib/commons-logging-1.0.4.jar"/>
 <property name="aspectjrt.jar" value="${cactus.home}/lib/aspectjrt-1.2.1.jar"/>
 <property name="cargo.jar" value="${cactus.home}/lib/cargo-0.5.jar"/>
 <property name="servletapi.jar" value="${lib}/servletapi-2.3.jar"/>
 <property name="junit.jar" value="${lib}/junit-3.8.1.jar"/>

 <!-- class path 설정 -->
 <path id="cactus.classpath">
     <pathelement location="${cactus.jar}"/>
     <pathelement location="${cactus-ant.jar}"/>
     <pathelement location="${commons-httpclient.jar}"/>
  <pathelement location="${commons-logging.jar}"/>
  <pathelement location="${aspectjrt.jar}"/>
  <pathelement location="${cargo.jar}"/>
  <pathelement location="${junit.jar}"/>
 </path>
 <!--
 =============================================================================================
 Task 정의
 =============================================================================================
 -->
 <!-- Cactus task 정의 -->
 <taskdef resource="cactus.tasks" classpathref="cactus.classpath"/>
 
 <!-- Clean -->
 <target name="clean">
  <delete dir="${build}"/>
  <mkdir dir="${build}" />
  <mkdir dir="${packaging}" />
 </target>
 <!--
 =============================================================================================
 컴파일
 =============================================================================================
 -->
 <!-- 소스 컴파일 -->
 <target name="compile"  >
  <javac srcdir="${src}" destdir="${build}">
   <classpath>
    <path refid="cactus.classpath"/>
    <pathelement location="${servletapi.jar}"/>
   </classpath>
  </javac>
 </target>
 <!--
 =============================================================================================
 패키징
 ${build}에 생성된 클래스들과, ${conf}에 있는 web.xml 설정 정보를 모아서 하나의 WAR파일로 패키징 한다.
 =============================================================================================
 -->
 <!-- WAR 패키징 -->
 <target name="packaging" depends="compile" >
  <war warfile="${packaging}/${project.name}.war"  webxml="${conf}/web.xml" >
   <classes dir="${build}" />
   <lib dir="${lib}"/>
  </war>
 </target>
 
 <!--
 =============================================================================================
 배포
 LOCAL Machine으로 배포하는 스크립트로 tomcat의 /webapps 디렉토리에 war파일을 복사한다.
 =============================================================================================
 -->
 <!-- 배포 -->
 <target name="deploy" depends="packaging" >
  <copy file="${packaging}/${project.name}.war" todir="${tomcat.home}/webapps"/>
 </target>
 
 <!--
 =============================================================================================
 테스트
 =============================================================================================
 -->  
 <!-- Cactus 테스트 -->
 <target name="cactus-test">
   <!-- Run the tests -->
    <cactus  warfile="${packaging}/${project.name}.war" fork="yes"
     printsummary="yes"
        failureproperty="tests.failed">
   <classpath>
    <path refid="cactus.classpath"/>
    <pathelement location="${servletapi.jar}"/>
    <pathelement location="${build}"/>
   </classpath>
      <containerset>
       <!--
       <tomcat5x dir="D:\dev\apache-tomcat-5.5.23" port="8080" />
        -->
       <generic name="local tomcat" port="8080">
            <startup target="dummy"/>
            <shutdown target="dummy"/>
       </generic>
   
      </containerset>

      <formatter type="brief" usefile="false"/>
      <formatter type="xml"/>
      <batchtest todir="${cactus.testlog}">
        <fileset dir="./src">
          <include name="**/Test*.java"/>
        </fileset>
      </batchtest>
    </cactus>
    <!-- JUnit(cactus) 테스트 리포트 생성 -->
    <junitreport todir="${cactus.testlog}">
   <fileset dir="${cactus.testlog}" includes="TEST*.xml"/>
     <report todir="${cactus.testlog}" format="frames"/>
    </junitreport>
     
    <fail if="tests.failed"> cactus Test failed</fail>
 </target>
 <target name="dummy">
 </target>
 
 
</project>
   

'ALM > Test Automation' 카테고리의 다른 글

단위 테스트 1회 (JUnit)  (1) 2007.11.23
Test Coverage 분석툴  (0) 2007.11.08
Cactus 실행용 ANT 스크립트  (0) 2007.09.13
Cactus 빌드 스크립트 샘플  (0) 2007.09.12
Unit Testing WebLogic Workshop 8.1 Applications & JWebUnit  (0) 2007.08.27
JUnitEE vs Catcus  (0) 2007.08.27
TAG ant, Cactus

Cactus 빌드 스크립트 샘플

ALM/Test Automation | 2007.09.12 18:53 | Posted by 조대협
http://fisheye.codehaus.org/browse/controlhaus/jdbc/trunk/test/container/build.xml?r=337

BEA에서 JDBC Control 만들어서 Apache에 기증한 것 같은데. Build 스크립트에서 Cactus 테스트 및 JUnit 리포트를 생성한다. Clover로 테스트 커버리지 분석도 하고..
상당히 유용한 빌드 스크립트인듯

'ALM > Test Automation' 카테고리의 다른 글

Test Coverage 분석툴  (0) 2007.11.08
Cactus 실행용 ANT 스크립트  (0) 2007.09.13
Cactus 빌드 스크립트 샘플  (0) 2007.09.12
Unit Testing WebLogic Workshop 8.1 Applications & JWebUnit  (0) 2007.08.27
JUnitEE vs Catcus  (0) 2007.08.27
DBUnit 예제  (1) 2007.08.27

ANT에 관련된 책

분류없음 | 2007.08.27 23:46 | Posted by 조대협
http://book.naver.com/bookdb/book_detail.php?bid=125728
사용자 삽입 이미지
담달에 사서 봐야겠다.
요즘 ANT와 XDoctlet,빌드 자동화 등에 대해서 궁금증이 많은데.
제법 잘 설명이 되어 있는것 같다. 거의 필독 도서 수준일세..

하나의 소스를 가지고 개발 환경, 테스트 환경, QA환경, 운영 환경에 DEPLOY할때,
이를 자동화 할 필요성이 있다.

ANT에 PROPERTY파일을 가지고 진행이 가능한데.
http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Deploy/ManyDeploymentEnvironments.rdoc

설명이 나와있다.

'ALM > Build Automation (빌드 자동화)' 카테고리의 다른 글

이제는 Trac  (1) 2008.01.24
Hudson  (0) 2008.01.22
Atlassian Bamboo  (0) 2007.11.08
일일 빌드에 대해서..  (0) 2007.10.17
하나의 소스를 여러 환경에 DEPLOY하는 방법  (0) 2007.08.24
SVN CheckOut and Build 자동화 스크립트 예제  (0) 2007.08.23
TAG ant, deploy

SVN에서 자동으로 Checkout해서 Build하는 과정까지 자동화
==
<project name="helloworld" default="build" basedir="./">
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"/>
 <target name="prepare">
  <delete dir="checkout"/>
  <mkdir dir="checkout"/>
 </target>
 <target name="checkout" depends="prepare">
  <svn username="KR12935" password="passwd">
   <checkout
    url="http://url/svn/HelloWorld/HelloWorld/trunk"
    destPath="./checkout"/>
  </svn>
 </target>
 <target name="build"  depends="checkout">
  <ant dir="checkout" antfile="build.xml" />
  </target>
</project>
==

이 스크립트는 Cruise Control의 LOCAL환경에 설정을하고
실제 build.xml은 SVN안의 프로젝트(컴포넌트)안에 위치 시켜서 Build 스크립트까지 다운 로드 받도록 한다.

'ALM > Build Automation (빌드 자동화)' 카테고리의 다른 글

이제는 Trac  (1) 2008.01.24
Hudson  (0) 2008.01.22
Atlassian Bamboo  (0) 2007.11.08
일일 빌드에 대해서..  (0) 2007.10.17
하나의 소스를 여러 환경에 DEPLOY하는 방법  (0) 2007.08.24
SVN CheckOut and Build 자동화 스크립트 예제  (0) 2007.08.23

ANT와 SVN연동

분류없음 | 2007.08.23 17:25 | Posted by 조대협

== build.xml
<project name="helloworld" default="build" basedir="checkout">
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"/>
 <target name="build">
  <delete dir="trunk"/>
  <mkdir dir="trunk"/>
  <svn username="id" password="password">
   <checkout url="http://svn/svn/BDS/HelloWorld/trunk" destPath="."/>
  </svn>
 
 </target>
</project>
==

http://blog.taragana.com/index.php/archive/how-to-integrate-subversion-version-control-software-with-apache-ant/

SVNANT 라이브러리 받은후 $ANTHOME/lib에 jar파일 복사후 taskdef를 <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"/>  와 같이 지정하면됨.
TAG ant, SVN