IOS自动化构建,发布蒲公英&fir.im,钉钉推送

  • A+
所属分类:CI/CD

Mac系统提前准备好Xcode、证书和钥匙链,使用Fastlane完成自动化构建。

Fastlane 简介

Fastlane 是一款为 iOS 和 Android 开发者提供的自动化构建工具,它可以帮助开发者将 App 打包、签名、测试、发布、信息整理、提交 App Store 等工作完整的连接起来,实现完全自动化的工作流,如果使用得当,可以显著的提高开发者的开发效率。

Fastlane安装

官网:

https://docs.fastlane.tools/getting-started/ios/setup/

安装xcode工具

xcode-select --install

安装Fastlane

# Using RubyGems
sudo gem install fastlane -NV

# Alternatively using Homebrew
brew cask install fastlane

初始化

fastlane init

Fastlane配置

IOS自动化构建,发布蒲公英&fir.im,钉钉推送Fastfile.txt

default_platform(:ios)


#声明
ENV_PREFIX=""
IPA_DIR  = "fastlane_build"
APP_NAME = "XJS"
IPA_TIME =  Time.new.strftime('%Y-%m-%d_%H:%M')
SCHEME = "XJSApp"
#CONF = "Release"
CONF = "Debug"


platform :ios do

  #release发布包
  lane :iosAppStore do
    ENV_PREFIX="appstore_"
    EXPORT_METHOD = "app-store"
    package(configuration: "#{CONF}")
  end

  #release包
  lane :iosRelease do
    ENV_PREFIX="adhoc_"
    EXPORT_METHOD = "ad-hoc"
    package(configuration: "#{CONF}")
  end


  #debug包
  lane :iosDebug do
    ENV_PREFIX="debug_"
    EXPORT_METHOD = "development"
    package(configuration: "#{CONF}")
  end


  #打包函数
  lane :package do |option|
      IPA_NAME = "#{ENV_PREFIX}" + "#{CONF}_" + "#{APP_NAME}_"  +  "#{IPA_TIME}" + ".ipa"


  gym(
    # 打包前clean项目
    clean: true, 
    # 构建时,隐藏不必要的信息  
    silent: true,           
    # scheme
    scheme: "#{SCHEME}",
    # bitcode
    include_bitcode: false,
                  
    # 导出方式 app-store、ad-hoc、enterprise、development
    export_method: "#{EXPORT_METHOD}",

    # 环境Debug、Release
    configuration: option[:configuration],


    # ipa的存放目录
    output_directory: "#{IPA_DIR}", 
    # 输出ipa的文件名
    output_name: "#{IPA_NAME}"              
    )


  # 蒲公英
  #pgyer(
  #  api_key: "6893b388603fc2e95csdfsfb181b6e1568e8f", 
  #  user_key: "6eac27642fe4c97ad291sfsdfs7595242eb3a4",
  #  password: "123456",
  # )


  end

end

为了让使用 Fastlane 的用户,可以将 Fastlane 的自动化工作流与蒲公英结合起来,我们为大家提供了 Fastlane 的蒲公英插件。该插件使用起来非常简单,安装该插件后,由 Fastlane 打包生成的 App 可以自动上传到蒲公英。

安装蒲公英插件

参考:

https://www.pgyer.com/doc/view/fastlane

构建参数

IOS自动化构建,发布蒲公英&fir.im,钉钉推送

构建脚本

IOS自动化构建,发布蒲公英&fir.im,钉钉推送info.txt

exit
#set env
export LC_ALL=en_US.UTF-8
export.UTF-8

#default Environment Rc
sed -i '' "s/xjs_service_Environment[ ]=[ ]XJS_Version_Environment_.*;/xjs_service_Environment = XJS_Version_Environment_$Environment;/g" ${WORKSPACE}/XJSApp/Common/XJSNetWork/XJSAppConfig.m
#default configure
sed -i ''  "s/Config/$Configuration/g" ${WORKSPACE}/fastlane/Fastfile


#
#ios build
#fastlane init
fastlane $buildTypes



#upload pgyer
IPANAME="$(ls -lt ./fastlane_build | grep ipa | head -n 1 |awk '{print $9}')"
MSG=`/usr/bin/git log -1 --pretty=%B`
PASSWORD=123456

cd ./fastlane_build
/usr/bin/curl -F "file=@${IPANAME}" -F "uKey=6eac27642fe22ad2917595242eb3a4" -F "_api_key=6893b3886022cb181b6e1568e8f" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" https://qiniu-storage.pgyer.com/apiv1/app/upload

  
#send message to Ding Talk 
curl 'https://oapi.dingtalk.com/robot/send?access_token=a9d1fcc67c9d7654a0b4251e1aa025d62e7ed154aa93e19651a0229011dd6382' \
   -H 'Content-Type: application/json' \
   -d '{"msgtype": "link", 
        "link": {
             "text": "蒲公英下载地址", 
             "title": "IOS打包成功", 
             "picUrl": "https://www.pgyer.com/app/", 
             "messageUrl": "https://www.pgyer.com/"
          
        }
      }'
 
 

echo $Environment-$buildTypes$Configuration
echo '蒲公英下载地址: http://pgyer.com/'

发布fir.im

安装fir-cli

sudo apt-get install  fir-cli

登陆fir(输入token)

fir login

显示用户信息

fir me

fir publish

https://github.com/FIRHQ/fir-cli/blob/master/doc/publish.md

Jenkins构建脚本

appstore上传到蒲公英,其他的上传fir

#set env
export LC_ALL=en_US.UTF-8
export.UTF-8


################default Environment Rc###########
sed -i '' "s/xjs_service_Environment[ ]=[ ]XJS_Version_Environment_.*;/xjs_service_Environment = XJS_Version_Environment_$Environment;/g" ${WORKSPACE}/XJSApp/Common/XJSNetWork/XJSAppConfig.m
#default configure
#sed -i ''  "s/Config/$Configuration/g" ${WORKSPACE}/fastlane/Fastfile

################开始打包##########################
#fastlane init
fastlane $buildTypes


###################ipad名称######################
IPANAME="$(ls -lt ./fastlane_build | grep ipa | head -n 1 |awk '{print $9}')"
MSG=`/usr/bin/git log -1 --pretty=%B`
PASSWORD=123456
cd ./fastlane_build

###################上传 fir&pgyer######################
if [ $Environment != 'Prod' ]
then

/usr/local/bin/fir publish ${IPANAME} -T "56cf107bb0f363b54e23b4a2119d0f" -c "${Environment}_${MSG}" -D "a9d1fcc672254a0b4251e1aa025d62e7ed154aa93e19651a0229011dd6382"

else

############上传 pgyer############
/usr/bin/curl -F "file=@${IPANAME}" -F "uKey=6eac27642fe4c2917595242eb3a4" -F "_api_key=6893b388603cb181b6e1568e8f" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" https://qiniu-storage.pgyer.com/apiv1/app/upload

######send message to Ding Talk######
curl 'https://oapi.dingtalk.com/robot/send?access_token=a9d1fcc67c9d7654ae7ed154aa93e19651a0229011d' \
   -H 'Content-Type: application/json' \
   -d '{"msgtype": "link", 
        "link": {
             "text": "蒲公英下载地址", 
             "title": "IOS打包成功", 
             "picUrl": "https://www.pgyer.com/app/xxx/xxx", 
             "messageUrl": "https://www.pgyer.com/xxx"
          
        }
      }'
 
echo $Environment-$buildTypes
echo '蒲公英下载地址: http://pgyer.com/xxx'

fi

钉钉推送

IOS自动化构建,发布蒲公英&fir.im,钉钉推送

IOS自动化构建,发布蒲公英&fir.im,钉钉推送

fir-cli参考

https://github.com/FIRHQ/fir-cli/blob/master/README.md

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: