Last active
January 5, 2017 12:58
-
-
Save setap/60331e6a3c5069fc9dfd65e4fc15bcdf to your computer and use it in GitHub Desktop.
build ios app
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="utf-8"?> | |
| <project name="FriendMobile" default="repository" basedir="."> | |
| <property name="workdir" value="${teamcity.build.workingDir}" /> | |
| <property name="project.name" value="FriendMobile"/> | |
| <property name="project.bundle.identifier" value="ru.sberbank.friendmobile"/> | |
| <property name="env" value="${teamcity.buildConfName}"/> | |
| <property name="ftp.server" value=""/> | |
| <property name="ftp.port" value="21"/> | |
| <property name="ftp.user" value=""/> | |
| <property name="ftp.password" value=""/> | |
| <property name="ftp.remote.dir" value="/"/> | |
| <property name="base.path" value="/Users/Shared/build"/> | |
| <property name="path.release" value="${base.path}/${project.name}/ios/repository"/> | |
| <property name="path.out" value="${base.path}/${project.name}/ios/${env}/last"/> | |
| <property name="path.env" value="/${base.path}/${project.name}/ios/${env}"/> | |
| <property name="path.ipa" value="${path.out}/build"/> | |
| <property name="path.old.plist" value="${path.out}/arch/${project.name}.xcarchive"/> | |
| <property name="path.new.plist" value="${workdir}/${project.name}/Info.plist"/> | |
| <property name="codeSignIdentity" value="" /> | |
| <property name="targetedDeviceFamily" value="1" /> | |
| <!-- Mapping: property_[TeamCity Project configuration name].plist --> | |
| <target name="release" depends="setupEnvironment,repository"/> | |
| <target name="dev" depends="setupEnvironment,setupBuildProperties,archivePackage,sentToFTP, copyVersion"/> | |
| <target name="st" depends="setupEnvironment,setupBuildProperties,archivePackage,copyVersion"/> | |
| <target name="ift" depends="setupEnvironment,setupBuildProperties,archivePackage, copyVersion"/> | |
| <target name="psi" depends="setupEnvironment,setupBuildProperties,archivePackage, copyVersion"/> | |
| <target name="prod" depends="setupEnvironment,setupBuildProperties,archivePackage, copyVersion"/> | |
| <target name="setupEnvironment"> | |
| <delete dir="${path.out}"/> | |
| <mkdir dir="${path.out}/build"/> | |
| <mkdir dir="${path.out}/test"/> | |
| <mkdir dir="${path.out}/arch"/> | |
| <exec executable="/usr/libexec/PlistBuddy" outputproperty="build.version"> | |
| <arg value="-c"/> | |
| <arg value="Print CFBundleShortVersionString"/> | |
| <arg value="${path.new.plist}"/> | |
| </exec> | |
| </target> | |
| <target name="setupBuildProperties"> | |
| <!-- Заменить property.plist в архиве --> | |
| <delete file="${workdir}/FriendMobile/Config/property.plist"/> | |
| <copy file="${workdir}/FriendMobile/Config/property_${env}.plist" tofile="${workdir}/FriendMobile/Config/property.plist" /> | |
| <!-- Изменить название сборки --> | |
| <exec executable="/usr/libexec/PlistBuddy" outputproperty="bundle.display.name"> | |
| <arg value="-c"/> | |
| <arg value="Print CFBundleDisplayName"/> | |
| <arg value="${workdir}/FriendMobile/Config/property.plist"/> | |
| </exec> | |
| <exec executable="/usr/libexec/PlistBuddy"> | |
| <arg value="-c"/> | |
| <arg value="Set CFBundleDisplayName ${bundle.display.name}"/> | |
| <arg value="${path.new.plist}"/> | |
| </exec> | |
| <!-- Скопировать release.txt --> | |
| <copy file="${workdir}/release.txt" tofile="${path.out}/build/release.txt"/> | |
| </target> | |
| <target name="archivePackage" depends="buildPackage"> | |
| <exec executable="xcrun"> | |
| <arg value="xcodebuild"/> | |
| <arg value="-exportArchive"/> | |
| <arg value="-exportOptionsPlist"/> | |
| <arg value="export.plist"/> | |
| <arg value="-archivePath"/> | |
| <arg value="${path.out}/arch/${project.name}.xcarchive"/> | |
| <arg value="-exportPath"/> | |
| <arg value="${path.ipa}"/> | |
| </exec> | |
| <!-- ! Переименовать манифест на FriendMobile.plist --> | |
| <move file="${path.ipa}/manifest.plist" tofile="${path.ipa}/${project.name}.plist"/> | |
| </target> | |
| <target name="sentToFTP"> | |
| <ftp server="${ftp.server}" | |
| port="${ftp.port}" | |
| remotedir="${ftp.remote.dir}" | |
| userid="${ftp.user}" | |
| password="${ftp.password}" | |
| binary="yes"> | |
| <fileset dir="${path.ipa}/"> | |
| <include name="*"/> | |
| </fileset> | |
| <fileset dir="${workdir}/"> | |
| <include name="release.txt"/> | |
| </fileset> | |
| </ftp> | |
| </target> | |
| <target name="copyVersion"> | |
| <mkdir dir="${path.env}/${build.version}"/> | |
| <copy todir="${path.env}/${build.version}"> | |
| <fileset dir="${path.out}"/> | |
| </copy> | |
| <echo message="##teamcity[buildNumber '${build.version}']"/> | |
| <echo message="##teamcity[buildStatus status='SUCCESS' text='New version ${build.version}']"/> | |
| </target> | |
| <target name="buildPackage"> | |
| <exec executable="/bin/rm"> | |
| <arg value="-rf"/> | |
| <arg value="${workdir}/Pods"/> | |
| </exec> | |
| <exec dir="${workdir}" executable="/usr/local/bin/pod"> | |
| <arg value="install"/> | |
| </exec> | |
| <exec executable="xcodebuild"> | |
| <arg value="-workspace"/> | |
| <arg value="${workdir}/${project.name}.xcworkspace"/> | |
| <arg value="-scheme"/> | |
| <arg value="${project.name}"/> | |
| <arg value="-configuration"/> | |
| <arg value="Release"/> | |
| <arg value="-archivePath"/> | |
| <arg value="${path.out}/arch/${project.name}.xcarchive"/> | |
| <arg value="DEPLOYMENT_POSTPROCESSING=YES"/> | |
| <arg value="STRIP_INSTALLED_PRODUCT=YES"/> | |
| <arg value="SEPARATE_STRIP=YES"/> | |
| <arg value="COPY_PHASE_STRIP=YES"/> | |
| <arg value="TARGETED_DEVICE_FAMILY=${targetedDeviceFamily}"/> | |
| <arg value="archive"/> | |
| </exec> | |
| </target> | |
| <target name="repository" depends="buildPackage"> | |
| <delete dir="${path.release}/${build.version}"/> | |
| <mkdir dir="${path.release}/${build.version}"/> | |
| <mkdir dir="${path.release}/${build.version}/prod"/> | |
| <mkdir dir="${path.release}/${build.version}/psi"/> | |
| <mkdir dir="${path.release}/${build.version}/ift"/> | |
| <!-- Скопировать архив --> | |
| <copy todir="${path.release}/${build.version}/prod"> | |
| <fileset dir="${path.out}/arch"/> | |
| </copy> | |
| <copy todir="${path.release}/${build.version}/psi"> | |
| <fileset dir="${path.out}/arch"/> | |
| </copy> | |
| <copy todir="${path.release}/${build.version}/ift"> | |
| <fileset dir="${path.out}/arch"/> | |
| </copy> | |
| <!-- Скопировать release.txt --> | |
| <copy file="${path.out}/arch/${project.name}.xcarchive/Products/Applications/${project.name}.app/release.txt" tofile="${path.release}/${build.version}/prod/release.txt"/> | |
| <copy file="${path.out}/arch/${project.name}.xcarchive/Products/Applications/${project.name}.app/release.txt" tofile="${path.release}/${build.version}/psi/release.txt"/> | |
| <copy file="${path.out}/arch/${project.name}.xcarchive/Products/Applications/${project.name}.app/release.txt" tofile="${path.release}/${build.version}/ift/release.txt"/> | |
| <!-- Заменить property.plist в архиве --> | |
| <copy overwrite="true" file="${path.release}/${build.version}/prod/${project.name}.xcarchive/Products/Applications/${project.name}.app/property_prod.plist" tofile="${path.release}/${build.version}/prod/${project.name}.xcarchive/Products/Applications/${project.name}.app/property.plist" /> | |
| <copy overwrite="true" file="${path.release}/${build.version}/psi/${project.name}.xcarchive/Products/Applications/${project.name}.app/property_psi.plist" tofile="${path.release}/${build.version}/psi/${project.name}.xcarchive/Products/Applications/${project.name}.app/property.plist" /> | |
| <copy overwrite="true" file="${path.release}/${build.version}/ift/${project.name}.xcarchive/Products/Applications/${project.name}.app/property_ift.plist" tofile="${path.release}/${build.version}/ift/${project.name}.xcarchive/Products/Applications/${project.name}.app/property.plist" /> | |
| <!-- Изменить название сборки --> | |
| <exec executable="/usr/libexec/PlistBuddy"> | |
| <arg value="-c"/> | |
| <arg value="Set CFBundleDisplayName Мой ДРУГ"/> | |
| <arg value="${path.release}/${build.version}/prod/${project.name}.xcarchive/Products/Applications/${project.name}.app/Info.plist"/> | |
| </exec> | |
| <exec executable="/usr/libexec/PlistBuddy"> | |
| <arg value="-c"/> | |
| <arg value="Set CFBundleDisplayName ПСИ"/> | |
| <arg value="${path.release}/${build.version}/psi/${project.name}.xcarchive/Products/Applications/${project.name}.app/Info.plist"/> | |
| </exec> | |
| <exec executable="/usr/libexec/PlistBuddy"> | |
| <arg value="-c"/> | |
| <arg value="Set CFBundleDisplayName ИФТ"/> | |
| <arg value="${path.release}/${build.version}/ift/${project.name}.xcarchive/Products/Applications/${project.name}.app/Info.plist"/> | |
| </exec> | |
| <!-- Повторно подписать .app --> | |
| <exec executable="codesign"> | |
| <arg value="-f"/> | |
| <arg value="-s"/> | |
| <arg value="${codeSignIdentity}"/> | |
| <arg value="${path.release}/${build.version}/prod/${project.name}.xcarchive/Products/Applications/${project.name}.app"/> | |
| </exec> | |
| <exec executable="codesign"> | |
| <arg value="-f"/> | |
| <arg value="-s"/> | |
| <arg value="${codeSignIdentity}"/> | |
| <arg value="${path.release}/${build.version}/psi/${project.name}.xcarchive/Products/Applications/${project.name}.app"/> | |
| </exec> | |
| <exec executable="codesign"> | |
| <arg value="-f"/> | |
| <arg value="-s"/> | |
| <arg value="${codeSignIdentity}"/> | |
| <arg value="${path.release}/${build.version}/ift/${project.name}.xcarchive/Products/Applications/${project.name}.app"/> | |
| </exec> | |
| <!-- Сделать .ipa и manifest.plist --> | |
| <exec executable="xcrun"> | |
| <arg value="xcodebuild"/> | |
| <arg value="-exportArchive"/> | |
| <arg value="-exportOptionsPlist"/> | |
| <arg value="export.plist"/> | |
| <arg value="-archivePath"/> | |
| <arg value="${path.release}/${build.version}/prod/${project.name}.xcarchive"/> | |
| <arg value="-exportPath"/> | |
| <arg value="${path.release}/${build.version}/prod/"/> | |
| </exec> | |
| <exec executable="xcrun"> | |
| <arg value="xcodebuild"/> | |
| <arg value="-exportArchive"/> | |
| <arg value="-exportOptionsPlist"/> | |
| <arg value="export.plist"/> | |
| <arg value="-archivePath"/> | |
| <arg value="${path.release}/${build.version}/psi/${project.name}.xcarchive"/> | |
| <arg value="-exportPath"/> | |
| <arg value="${path.release}/${build.version}/psi/"/> | |
| </exec> | |
| <exec executable="xcrun"> | |
| <arg value="xcodebuild"/> | |
| <arg value="-exportArchive"/> | |
| <arg value="-exportOptionsPlist"/> | |
| <arg value="export.plist"/> | |
| <arg value="-archivePath"/> | |
| <arg value="${path.release}/${build.version}/ift/${project.name}.xcarchive"/> | |
| <arg value="-exportPath"/> | |
| <arg value="${path.release}/${build.version}/ift/"/> | |
| </exec> | |
| <!-- ! Переименовать манифест на FriendMobile.plist --> | |
| <move file="${path.release}/${build.version}/prod/manifest.plist" tofile="${path.release}/${build.version}/prod/${project.name}.plist"/> | |
| <move file="${path.release}/${build.version}/psi/manifest.plist" tofile="${path.release}/${build.version}/psi/${project.name}.plist"/> | |
| <move file="${path.release}/${build.version}/ift/manifest.plist" tofile="${path.release}/${build.version}/ift/${project.name}.plist"/> | |
| <!-- Удалить архив из сборки --> | |
| <delete dir="${path.release}/${build.version}/prod/${project.name}.xcarchive"/> | |
| <delete dir="${path.release}/${build.version}/psi/${project.name}.xcarchive"/> | |
| <delete dir="${path.release}/${build.version}/ift/${project.name}.xcarchive"/> | |
| <!-- Подготовить pom.xml --> | |
| <copy file="${path.release}/pom.xml" tofile="${path.release}/${build.version}/pom.xml"/> | |
| <replace file="${path.release}/${build.version}/pom.xml" token="%version%" value="${build.version}"/> | |
| <!-- Отправить в Nexus --> | |
| <exec executable="mvn" dir="${path.release}/${build.version}"> | |
| <arg value="package"/> <!-- Заменить на deploy --> | |
| </exec> | |
| </target> | |
| </project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment