2017-01-01 4 views
1

私はローカルでdrone.ioをセットアップし、CIビルド用に.drone.ymlを作成しました。しかし、私はドローンがビルドを完了した後にドッカーコンテナを取り除くことが分かった。ドッキング用コンテナの再利用をサポートするかどうか私はgradleプロジェクトに取り組んでおり、最初のビルドにはJava依存関係をダウンロードするのに長い時間がかかります。drone.ioがビルド用のドッカーコンテナを再利用するかどうか

UPDATE1

私はドローン・サーバーコンテナを実行する上で管理者ユーザを設定するためのコマンドの下に使用。

docker run -d \ 
    -e DRONE_GITHUB=true \ 
    -e DRONE_GITHUB_CLIENT="xxxx" \ 
    -e DRONE_GITHUB_SECRET="xxxx" \ 
    -e DRONE_SECRET="xxxx" \ 
    -e DRONE_OPEN=true \ 
    -e DRONE_DATABASE_DRIVER=mysql \ 
    -e DRONE_DATABASE_DATASOURCE="root:[email protected](mysql:3306)/drone?parseTime=true" \ 
    -e DRONE_ADMIN="joeyzhao0113" \ 
    --restart=always \ 
    --name=drone-server \ 
    --link=mysql \ 
    drone/drone:0.5 

はこれをやった後、私はドローンサーバにログインするためのユーザーjoeyzhao0113を使用しますが、設定ページでTrustedフラグを有効にすることができませんでした。ポップアップメッセージダイアログに、下のスクリーンショットが正常に表示されます。しかし、このフラグは常に無効になっています。

enter image description here

答えて

5

いいえ、それはあなたのドローンビルドの再利用ドッカーコンテナすることはできません。ビルドコンテナは一時的なものであり、ビルドの終わりには破棄されます。

あなたの問題を解決できないというわけではありません。

私は、この問題をフレーズするより良い方法は、「どうすれば自分のビルドが依存関係を再ダウンロードするのを防ぐのですか?この問題には2つの解決策があります。

オプション1、キャッシュプラグイン

まず、推奨されるソリューションは、あなたの依存関係をキャッシュし、復元するためのプラグインを使用することです。 volume caches3 cacheなどのキャッシュプラグインは、コミュニティから提供されるプラグインです。

pipeline: 
    # restores the cache from a local volume 
    restore-cache: 
    image: drillster/drone-volume-cache 
    restore: true 
    mount: [ /drone/.gradle, /drone/.m2 ] 
    volumes: 
     - /tmp/cache:/cache 

    build: 
    image: maven 
    environment: 
     - M2_HOME=/drone/.m2 
     - MAVEN_HOME=/drone/.m2 
     - GRADLE_USER_HOME=/drone/.gradle 
    commands: 
     - mvn install 
     - mvn package 

    # rebuild the cache in case new dependencies were 
    # downloaded during your build 
    rebuild-cache: 
    image: drillster/drone-volume-cache 
    rebuild: true 
    mount: [ /drone/.gradle, /drone/.m2 ] 
    volumes: 
     - /tmp/cache:/cache 

オプション2、カスタムイメージ

第2の解決策は、あなたの依存関係を持つドッカーイメージを作成DockerHubに公開し、あなたの.drone.ymlファイルでビルドイメージとしてこれを使用することです。

pipeline: 
    build: 
    image: some-image-with-all-my-dependencies 
    commands: 
     - mvn package 
+0

キャッシュプラグインを確認しました。「キャッシュされたファイルまたはディレクトリは、ビルド作業領域に配置する必要があります。ビルド作業領域外にファイルをキャッシュすることはできません。 'ビルドワークスペースはgitリポジトリを意味しますか?キャッシュされたデータは、gitリポジトリの外にある〜/ .m2および〜/ .gradleディレクトリに配置されます。どのようにこのキャッシュを達成するには? –

+0

デフォルトのワークスペースベースは、デフォルトのベース値をオーバーライドしていないと仮定して '/ drone'です。これは 'GRADLE_USER_HOME =/drone/.gradle'を設定して、ワークスペースに依存関係を格納するようにgradleに指示し、キャッシュプラグインにアクセスできるようにすることを意味します。私はこれがどのように機能するかを示すために、私の答えの例を更新しました。 –

+0

このエラーは「ERROR:ボリュームを使用する権限がありません」です。ボリュームを使用するために無人で権限を設定するには? –

関連する問題