Centos構成Jenkins + Android + fir + pyger(タンポポ)+ qiniu(7頭の牛)



Centos Configuration Jenkins Android Fir Pyger Qiniu



A.Java環境の構成

1.1SDKMANのインストール

#If you have not installed unzip $ yum install unzip $ yum install zip curl -s [https://get.sdkman.io](https://get.sdkman.io) | bash

インストール後にsdkmanの構成を初期化します

$ source '$HOME/.sdkman/bin/sdkman-init.sh'

注:権限がない場合は、前にsudoを追加してください。



$ sudo source '$HOME/.sdkman/bin/sdkman-init.sh'

1.2Javaのインストール

#View can install java $ sdk list java

Javaバージョンを選択してインストールします(8.0.191-oracleを選択しました)

$ sdk install java 8.0.191-oracle

注意:
1. sdkmanを使用してsdkをインストールします。グローバル環境を手動で構成する必要はありません(sdkmanは自動的に構成されています)
2.インストール場所は/root/.sdkman/candidates/javaです。



次に、gitをインストールします

$ yum install git

第三に、Androidビルド環境をインストールします

3.1公式ウェブサイトからコマンドラインツールの最新バージョンをダウンロードします https://developer.android.com/studio/index.html

(Androidのツールを/ user / local / bin / android-sdkディレクトリに置きます)

$ cd /user/local/bin $ mkdir android-sdk

ダウンロードするツールの最新バージョンを選択します(現在はsdk-tools-linux-4333796)

$ wget --output-document=android-sdk.zip --quiet https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

3.2SDKの更新

解凍してディレクトリに入ります(androidコマンドの有効期限が切れているため、/ tools / bin / sdkmanagerコマンドツールを使用することをお勧めします)
必要なビルドツールとSDKを更新することを選択します(android-28が必要です)



$ ./android update sdk --no-ui --all --filter android-28,platform-tools,build-tools-28.0.3,extra-android-m2repository

64ビットマシンでAndroidを実行するツールは、いくつかの32ビットライブラリをインストールする必要があります。

$ yum install glibc.i686 libgcc.i686 libstdc++.i68

libgccのインストール時にバージョンの競合が表示された場合は、システムを更新してください。

$ yum update

3.3NDKのインストール

#Enter android-sdk directory $ cd /usr/local/bin/android-sdk

ndkダウンロードの最新バージョンを選択します(現在のバージョンはandroid-ndk-r16b-linux-x86_64です)

$ wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip # $ unzip android-ndk-r16b-linux-x86_64.zip # $ rm -f android-ndk-r16b-linux-x86_64.zip #Rename $ mv android-ndk-r16b android-ndk

3.4環境変数の構成

$ vim /etc/profile

最後に次の構成を追加します

export ANDROID_HOME=/usr/local/bin/android-sdk export ANDROID_NDK_HOME=/usr/local/bin/android-sdk/android-ndk PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/28.0.3:$ANDROID_NDK_HOME:$PATH # Refresh $ source /etc/profile

4.Jenkinsをインストールします

4.1インストール

$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo $ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key $ yum install jenkins

4.2構成

$ vim /etc/sysconfig/jenkins

リスニングポート

JENKINS_PORT='8080'

4.3権限の構成

パーミッションによる様々な問題を起こさないために、ここで直接rootを使用してください。

ユーザーをrootに変更します

$ vim /etc/sysconfig/jenkins

設定を変更する

JENKINS_USER='root'

4.4ディレクトリ権限の変更

$ chown -R root:root /var/lib/jenkins $ chown -R root:root /var/cache/jenkins $ chown -R root:root /var/log/jenkins

4.5再起動

$ service jenkins restart #View whether the startup is successful $ ps -ef | grep jenkins

4.6トラブルシューティング

エラーメッセージが表示された場合

Starting Jenkins bash: /usr/bin/java: No such file or directory

これは、Java環境構成の問題です。

jdkディレクトリを見つけて、ソフトリンクを作成します。

$ ln -s /root/.sdkman/candidates/java/current/bin/java /usr/bin/java

4.7アクセス

ジェンキンスの住所をご覧ください

http://xxx.xxx.xxx.xxx:8080

注:ポートを変更した後にポートを開始できない場合は、ファイアウォールポートを開くことを忘れないでください(Alibaba Cloudは関連するセキュリティグループルールを追加し、ポートを開きます)

V.Jenkinsを構成する

5.1ジェンキンスの初期化

プロンプトに従います

  • 5.1.1initialAdminPassworのコピー
$ cat /var/lib/jenkins/secrets/initialAdminPassword
  • 5.1.2「推奨プラグインのインストール」を選択します

5.2グローバルツール構成へのJDK構成の追加

システム管理->グローバルツール構成-> JDK

name:JDK JAVA_HOME:/root/.sdkman/candidates/java/current 1401578-8dd8b23ef0a6eef5.pngJDK

注:gradle、gitなどを構成する必要はありません。デフォルト値を使用してください

5.3システム設定でのAndroid環境変数の追加

システム管理->システム設定->環境変数

ANDROID_HOME:/usr/local/bin/android-sdk ANDROID_NDK_HOME:/usr/local/bin/android-sdk/android-ndk 1401578-fce431db61eced6d.png環境変数

J.ジェンキンスの新しいミッション

6.1新しいタスク

  • 6.1.1新しいタスク->アイテム名を入力-> 'フリースタイルのソフトウェアプロジェクトを構築する'


    1401578-d0b5a03fad11cab4.png新しい仕事
  • 6.1.2gitアドレスの設定
    プロジェクトのgitアドレスを入力し、新しい資格情報を作成します。ユーザー名とパスワードを入力して保存します。


    1401578-1f05b1194acf50af.png資格情報
  • 6.1.3ブランチブランチ(マスターなど)に入力します


    1401578-03433a432e0dc700.png行く

6.2gradleコンパイルを追加する

  • 6.2.1ビルドsetp-> InvokeGradleスクリプトを追加します


    1401578-b24e04f7cdda8633.pnggradle
  • 6.2.2 [Gradleラッパーを使用する]を選択します
  • 6.2.3タスクは、実行する必要のあるgradleコマンドを入力します


    1401578-8cc3aeeaf121882c.jpggradleラッパー

注:ここで[Gradleラッパーを使用]を選択すると、プロジェクトのgradleバージョンに自動的に適合させることができます。また、gradleを設定する手間を省くことができます。

セブン。モミまたはタンポポのpgyerをアップロードする

これらの2つの状況は似ています。適切なJenkinsプラグインをインストールして構成するだけです。手順は簡単で、もう開かれていません。

対応する文書:

8。 7頭の牛をアップロードする

7頭の牛がシェルツールを提供します qshell
このツールを使用して、jenkinsパッケージのアップロードを完了します。以下を参照してください。

Qshellドキュメント

QshellのGithub

8.1 qshellをダウンロードし、サーバー上の対応するディレクトリにアップロードします

  • 8.1.1サーバーの新しいqiniuディレクトリ
$ cd /var/lib/jenkins/workspace $ mkdir qiniu
  • 8.1.2 qshell_linux_x64をローカルにダウンロードし、名前をqshellに変更します
  • 8.1.3scpを使用してqshell_linux_x64を/ var / lib / jenkins / workspace / qiniuにアップロードします
$ scp /path/qshell root@xxxxx:/var/lib/jenkins/workspace/qiniu
  • 8.1.4qshell環境変数の構成
$ vim /etc/profile #Add the qshell path to the path export ANDROID_HOME=/usr/local/bin/android-sdk export ANDROID_NDK_HOME=/usr/local/bin/android-sdk/android-ndk export QSHELL=/var/lib/jenkins/workspace/qiniu export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK_HOME:$ANDROID_HOME/build-tools/28.0.3:$QSHELL:$PATH # Refresh $ source /etc/profile

8.2upload.confアップロード構成ファイルの追加

/ var / lib / jenkins / workspace / qiniuディレクトリ内

$ cd /var/lib/jenkins/workspace/qiniu $ vim upload.conf { 'src_dir' : '/var/lib/jenkins/workspace/qiniu/apk', 'overwrite':true, 'key_prefix':'apk/cn/', 'bucket' : 'merculet-file' }

そのままにして終了します。

8.3apkディレクトリを追加する

/ var / lib / jenkins / workspace / qiniuディレクトリに新しいapkディレクトリを作成して、アップロードするapkを保存します。

$ cd /var/lib/jenkins/workspace/qiniu $ mkdir apk

8.4qshellのアカウントの構成

詳細については、ドキュメントを参照してください。
コマンドラインツール(qshell)

7頭の牛のアカウントでAccessKeyとSecretKeyをコピーします

$ qshell account AccessKey SecretKey name

nameはアカウントの名前を示します

このようにして、jenkins内のシェルでqshellの関連コマンドを直接見つけることができます。 quploadやcdnrefreshなど

8.5シェルスクリプト

  • 8.5.1jenkins内でビルドステップを追加->シェルを実行


    1401578-ea6ee9039521f95a.jpg実行シェル
  • 8.5.2次のシェルスクリプトをコマンドに追加して、7頭の牛のアップロードと更新を完了します
#!/bin/bash -ile #start #project name PROJECT_NAME='merculet_cn' #workspace WORKSPACE_PATH='${JENKINS_HOME}/workspace' # PROJECT_PATH='${WORKSPACE_PATH}/${PROJECT_NAME}' # RELEASE_PATH='${PROJECT_PATH}/app/build/outputs/apk/cn/release' # AndroidManifest.xmlpath VERSION_CODE_PATH='${PROJECT_PATH}/app/src/main/AndroidManifest.xml' #1.Get the version number VERSION_CODE=`cat ${VERSION_CODE_PATH} | sed -n 's/.*android:versionName='(S)/1/p' | tr -d '[.'> ]'` echo ${VERSION_CODE} APK_NAME='simplet' QSHELL_PATH='${WORKSPACE_PATH}/qiniu' #upload.confEnvironment path, placed in the relevant directory of jenkins UPLOAD_PATH='${WORKSPACE_PATH}/qiniu/apk' #2. Copy the apk you need to upload cp ${RELEASE_PATH}/*.apk ${UPLOAD_PATH}/${APK_NAME}.apk cp ${RELEASE_PATH}/*.apk ${UPLOAD_PATH}/${APK_NAME}${VERSION_CODE}.apk #3. Seven cattle upload and refresh QINIU_URL1='https://mvpfile.mlinks.cc/apk/cn/${APK_NAME}.apk' QINIU_URL2='https://mvpfile.mlinks.cc/apk/cn/${APK_NAME}${VERSION_CODE}.apk' qshell qupload ${QSHELL_PATH}/upload.conf CDNREFRESH_FILE=${QSHELL_PATH}/cdnrefresh echo ${QINIU_URL1} > ${CDNREFRESH_FILE} echo ${QINIU_URL2} >> ${CDNREFRESH_FILE} qshell cdnrefresh -i ${CDNREFRESH_FILE}

ナイン。最後に書かれました

当初、私のAlibabaCloudは1コアの2G構成でした。その結果、私は10回走り、9回は記憶力が不足していると報告しました。

java.rmi.UnmarshalException: Error unmarshaling return header nested exception is ...

または

HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000feafd000, 53043562, 0) failed error='Cannot allocate memory' (errno=12)

グーグルの関係者によると、Androidコンパイルのリソース消費を減らすために ビルド速度を最適化する
と他の記事、私は絶え間ない努力をしました。

これらには、JVM消費の削減、ヒープメモリの削減、デーモン--no-daemonのクローズ、並列操作のオフなどが含まれますが、これらに限定されません。

最後に、私の絶え間ない努力の後、私はに来ました 「2Gメモリは現在Androidビルド環境を実行しています」 この結論...

そのため、Aliクラウドを2コア4G構成にアップグレードする必要がありました。

aliyun1.jpg
aliyun2.jpg

結局、私のJenkinsランタイム環境は次のとおりです。Aliyun CentOS 642コア4G最小

他に要件がない場合は、バーストパフォーマンスの例を使用してください。結局のところ、私たちはたまにしか実行しないので、多くのお金を節約できます。構成を純粋に学習したい場合は、HuaweiCloudにアクセスして7日間の無料バージョンを入手できます。

参照:

https://www.cnblogs.com/stulzq/p/9291237.html
https://www.jianshu.com/p/5feca12a2ada

http://blog.fir.im/jenkins/
https://www.pgyer.com/doc/view/jenkins_plugin

https://developer.qiniu.com/kodo/tools/1302/qshell
https://github.com/qiniu/qshell