3

Docker クラウドで自動ビルドを使用して C++ アプリをコンパイルし、イメージで提供しています。コンパイルには非常に時間がかかり (範囲は 2 ~ 3 時間)、github でのコミットは頻繁に行われます (1 日あたり最大 10 ~ 30 回)。

建物のキャッシュを保持する方法はありますか (ccache を使用)。

私が理解している限り、ソースコードの変更により ccache を生成するコンパイルレイヤーが使用されないため、docker キャッシングは役に立ちません。または、一部のデータを最初のレイヤーに戻すように微調整できますか?

他の解決策はありますか?どこかに押し付ける?


Dockerfile は次のとおりです。

# CACHE_TAG is provided by Docker cloud
# see https://docs.docker.com/docker-cloud/builds/advanced/
# using ARG in FROM requires min v17.05.0-ce
ARG  CACHE_TAG=latest

FROM  qgis/qgis3-build-deps:${CACHE_TAG}
MAINTAINER Denis Rouzaud <denis.rouzaud@gmail.com>

ENV CC=/usr/lib/ccache/clang
ENV CXX=/usr/lib/ccache/clang++
ENV QT_SELECT=5

COPY  . /usr/src/QGIS

WORKDIR /usr/src/QGIS/build

RUN cmake \
 -GNinja \
 -DCMAKE_INSTALL_PREFIX=/usr \
 -DBINDINGS_GLOBAL_INSTALL=ON \
 -DWITH_STAGED_PLUGINS=ON \
 -DWITH_GRASS=ON \
 -DSUPPRESS_QT_WARNINGS=ON \
 -DENABLE_TESTS=OFF \
 -DWITH_QSPATIALITE=ON \
 -DWITH_QWTPOLAR=OFF \
 -DWITH_APIDOC=OFF \
 -DWITH_ASTYLE=OFF \
 -DWITH_DESKTOP=ON \
 -DWITH_BINDINGS=ON \
 -DDISABLE_DEPRECATED=ON \
 .. \
 && ninja install \
 && rm -rf /usr/src/QGIS

WORKDIR /
4

1 に答える 1