gitlab CIのジョブ間でキャッシュやアーティファクトを引き継ぐことができません。私はそれが私の設定と関係があると思うが、私は何がわからない。私はgitlabとgitlab-ci-multirunnerをともにdockerで実行しています。次のdocker-compose configを使用しています。私は、データベースの設定と簡潔にするため、いくつかの環境変数を残してきた:Gitlab CIランナー設定とドッカーでのキャッシュ
version: '2'
services:
gitlab:
image: sameersbn/gitlab:8.5.1
links:
- redis:redisio
- postgresql:postgresql
ports:
- "10080:80"
- "10022:22"
environment:
...
volumes:
- gitlab_data:/home/git/data
gitlab-ci-runner:
restart: always
image: gitlab/gitlab-runner
volumes:
- gitlab_runner_config_data:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
- /etc/nginx/ssl/gitlab.crt:/etc/gitlab-runner/certs/ca.crt
- /etc/ssh:/ssh
links:
- gitlab:gitlab
redis:
...
postgresql:
...
volumes:
postgresql_data:
redis_data:
gitlab_data:
gitlab_runner_config_data:
ランナー構成(config.toml
)です:docker-bash
画像は言及
concurrent = 1
[[runners]]
name = "docker"
url = <public gitlab url>/ci
token = <gitlab token>
tls-ca-file = "/etc/gitlab-runner/certs/ca.crt"
executor = "docker"
[runners.docker]
image = "docker-bash"
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
のbashでちょうど公式docker:1.10画像ですインストールされます。
- 実行
npm install
と公式node:5画像でテスト:マイビルドプロセスは3つの段階で構成されています。今のところ、私は展開をテストするためにこのステップを踏んだ。
- コードを含むドッキング・イメージを作成する
- ビルド可能イメージをプロダクション・サーバーにデプロイするために、カストムで構築された潜在的ドッキング・イメージを使用してください。
.gitlab-ci.yml
ファイルは次のようになります。
variables:
FULL_IMAGE_TAG: deploy-$CI_BUILD_REF_NAME:$CI_BUILD_ID-$CI_BUILD_REF
IMAGE_FILE: deploy-$CI_BUILD_REF_NAME.tar.gz
cache:
paths:
- $IMAGE_FILE
build:
stage: build
script:
- docker build -t $FULL_IMAGE_TAG .
- docker save $FULL_IMAGE_TAG | gzip -cf - > $IMAGE_FILE
artifacts:
paths:
- $IMAGE_FILE
deploy:
stage: deploy
image: ansible-ssh
script:
- ls
- ansible-playbook -e image_file=$IMAGE_FILE -e branch=$CI_BUILD_REF_NAME -e full_image_name=$FULL_IMAGE_TAG deploy-playbook.yml
only:
- develop
- master
あなたが見ることができるように、圧縮されたドッキングウィンドウの画像をキャッシュし、成果物のセクションの両方をここでいうが、デプロイ段階で実際に利用可能ではありませんどこかで、それをリモートマシンにコピーすることになっています。私はls
コマンドを含めて試しましたので、フォルダの内容を確認してください。ファイルははっきりとはありませんが、確かにビルドされており、gitlabのUIからダウンロードできます。ここで展開ジョブからのログは、次のとおりです。
gitlab-ci-multi-runner 1.0.4 (014aa8c)
Using Docker executor with image ansible-ssh ...
Pulling docker image ansible-ssh ...
WARNING: Cannot pull the latest version of image ansible-ssh : Error: image library/ansible-ssh not found
WARNING: Locally found image will be used instead.
Running on runner-59d43cf3-project-8-concurrent-0 via 381c2ea97744...
Fetching changes...
Removing artifacts.zip
Removing deploy-develop.tar.gz
HEAD is now at 6009bd0 test
Checking out 6009bd0f as develop...
HEAD is now at 6009bd0... test
$ ls
Dockerfile
deploy-playbook.yml
server
$ ansible-playbook -e image_file=$IMAGE_FILE -e branch=$CI_BUILD_REF_NAME -e full_image_name=$FULL_IMAGE_TAG deploy-playbook.yml
Using /etc/ansible/ansible.cfg as config file
1 plays in deploy-playbook.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [deploy-host]
TASK [copy docker image] *******************************************************
task path: /builds/test/test/deploy-playbook.yml:44
fatal: [deploy-host]: FAILED! => {"changed": false, "failed": true, "msg": "could not find src=/builds/test/test/deploy-develop.tar.gz"}
NO MORE HOSTS LEFT *************************************************************
to retry, use: --limit @deploy-playbook.retry
PLAY RECAP *********************************************************************
deploy-host : ok=1 changed=0 unreachable=0 failed=1
ERROR: Build failed with: exit code 1
「私は私が設定または正しくランナーを使用していないと思われるが、私は本当に簡単な例を超えた何のためにドキュメントで多くを見つけることができないと私はドンどのようにそれがボンネットの下に一緒に収まるか知るのに十分にツールをよく知っている。
ステップを追加してステップを追加してみましょう: - ビルド - デプロイ – Pascal
実行しましたが、実行順序はわかります。 – aquavitae
ステップ 'artifacts'を' deploy'ジョブに追加するとどうなりますか?または、 'cache'の下に移動するとすべてのジョブに影響しますか?もう1つの質問は、 'cache'と' artifacts'の両方が同じパスを指すことができるかどうかです。私は知らない、私はちょうどあなたがロジックを手伝っています。 ;) –