From 981674faa9ffc8c7dd146c299d4ccef9988813fc Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Sun, 22 Jan 2017 14:58:52 -0800 Subject: [PATCH] Add hover and test for `docker-image` PutParams --- .../desc/DockerImagePutParams/build.md | 1 + .../desc/DockerImagePutParams/build_args.md | 10 +++++ .../DockerImagePutParams/build_args_file.md | 8 ++++ .../desc/DockerImagePutParams/cache.md | 10 +++++ .../desc/DockerImagePutParams/cache_tag.md | 5 +++ .../desc/DockerImagePutParams/dockerfile.md | 2 + .../desc/DockerImagePutParams/import_file.md | 1 + .../desc/DockerImagePutParams/load.md | 2 + .../desc/DockerImagePutParams/load_base.md | 3 ++ .../desc/DockerImagePutParams/load_file.md | 2 + .../DockerImagePutParams/load_repository.md | 1 + .../desc/DockerImagePutParams/load_tag.md | 1 + .../DockerImagePutParams/pull_repository.md | 2 + .../desc/DockerImagePutParams/pull_tag.md | 2 + .../desc/DockerImagePutParams/tag.md | 2 + .../DockerImagePutParams/tag_as_latest.md | 2 + .../desc/DockerImagePutParams/tag_prefix.md | 3 ++ .../concourse/PipelineYamlEditorTest.java | 40 +++++++++++++++++++ 18 files changed, 97 insertions(+) create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args_file.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache_tag.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/dockerfile.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/import_file.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_base.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_file.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_repository.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_tag.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_repository.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_tag.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_as_latest.md create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_prefix.md diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build.md new file mode 100644 index 000000000..ef4eabe34 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build.md @@ -0,0 +1 @@ +*Optional.* The path of a directory containing a `Dockerfile` to build. diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args.md new file mode 100644 index 000000000..71f7bf1bc --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args.md @@ -0,0 +1,10 @@ +*Optional.* A map of Docker build arguments. + +Example: + +```yaml +build_args: + do_thing: true + how_many_things: 2 + email: me@yopmail.com +``` \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args_file.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args_file.md new file mode 100644 index 000000000..239fe5a2a --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/build_args_file.md @@ -0,0 +1,8 @@ +Optional.* Path to a JSON file containing Docker build +arguments. + +Example file contents: + +```yaml +{ "email": "me@yopmail.com", "how_many_things": 1, "do_thing": false } +``` diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache.md new file mode 100644 index 000000000..8544d7d44 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache.md @@ -0,0 +1,10 @@ +*Optional.* Default `false`. When the `build` parameter is set, +first pull `image:tag` from the Docker registry (so as to use cached +intermediate images when building). This will cause the resource to fail +if it is set to `true` and the image does not exist yet. +Note: Since docker 1.10 docker images [do not contain all necessary metadata to +restore the build cache](https://github.com/docker/docker/issues/20316). +Additional metadata needs to be saved and re-applied after a docker pull to have +subsequent builds skip identical intermediate layers. This additional +metadata is stored as a very small separate image (`image:${cache_tag}-buildcache`) +in the repository of this resource. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache_tag.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache_tag.md new file mode 100644 index 000000000..b11bbd395 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/cache_tag.md @@ -0,0 +1,5 @@ +*Optional.* Default `tag`. The specific tag to pull before +building when `cache` parameter is set. Instead of pulling the same tag +that's going to be built, this allows picking a different tag like +`latest` or the previous version. This will cause the resource to fail +if it is set to a tag that does not exist yet. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/dockerfile.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/dockerfile.md new file mode 100644 index 000000000..0996e62e7 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/dockerfile.md @@ -0,0 +1,2 @@ +*Optional.* The path of the `Dockerfile` in the directory if +it's not at the root of the directory. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/import_file.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/import_file.md new file mode 100644 index 000000000..1370ba817 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/import_file.md @@ -0,0 +1 @@ +*Optional.* A path to a file to `docker import` and then push. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load.md new file mode 100644 index 000000000..6324d79c4 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load.md @@ -0,0 +1,2 @@ +*Optional.* The path of a directory containing an image that was +fetched using this same resource with `save: true`. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_base.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_base.md new file mode 100644 index 000000000..b91eff174 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_base.md @@ -0,0 +1,3 @@ +*Optional.* A path to a directory containing an image to `docker load` +before running `docker build`. The directory must have `image`, +`image-id`, `repository`, and `tag` present, i.e. the tree produced by `/in`. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_file.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_file.md new file mode 100644 index 000000000..67dd9a5f5 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_file.md @@ -0,0 +1,2 @@ +*Optional.* A path to a file to `docker load` and then push. +Requires `load_repository`. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_repository.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_repository.md new file mode 100644 index 000000000..4986b8982 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_repository.md @@ -0,0 +1 @@ +*Optional.* The repository of the image loaded from `load_file`. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_tag.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_tag.md new file mode 100644 index 000000000..6d5917920 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/load_tag.md @@ -0,0 +1 @@ +*Optional.* Default `latest`. The tag of image loaded from `load_file`. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_repository.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_repository.md new file mode 100644 index 000000000..b8c4c4776 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_repository.md @@ -0,0 +1,2 @@ +*Optional.* **DEPRECATED. Use `get` and `load` instead.** A +path to a repository to pull down, and then push to this resource. diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_tag.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_tag.md new file mode 100644 index 000000000..ffd469b37 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/pull_tag.md @@ -0,0 +1,2 @@ +*Optional.* **DEPRECATED. Use `get` and `load` instead.** Default +`latest`. The tag of the repository to pull down via `pull_repository`. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag.md new file mode 100644 index 000000000..6a46f0cd4 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag.md @@ -0,0 +1,2 @@ +*Optional.* The value should be a path to a file containing the name +of the tag. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_as_latest.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_as_latest.md new file mode 100644 index 000000000..fbf8d18cf --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_as_latest.md @@ -0,0 +1,2 @@ +*Optional.* Default `false`. If true, the pushed image will +be tagged as `latest` in addition to whatever other tag was specified. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_prefix.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_prefix.md new file mode 100644 index 000000000..3fd747124 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/DockerImagePutParams/tag_prefix.md @@ -0,0 +1,3 @@ +*Optional.* If specified, the tag read from the file will be +prepended with this string. This is useful for adding `v` in front of version +numbers. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java index c3910afa0..e61919b0d 100644 --- a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java +++ b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java @@ -1224,6 +1224,24 @@ public class PipelineYamlEditorTest { "- name: a-job\n" + " plan:\n" + " - put: my-docker-image\n" + + " params:\n" + + " build: path/to/docker/dir\n" + + " load: path/to/image\n" + + " dockerfile: path/to/Dockerfile\n"+ + " cache: cache-it\n" + + " cache_tag: the-cache-tag\n" + + " load_base: path/to/base-image\n" + + " load_file: path/to/file-to-load\n" + + " load_repository: some-repo\n" + + " load_tag: some-tag\n" + + " import_file: path/to/file-to-import\n" + + " pull_repository: path/to/repository-to-pull\n" + + " pull_tag: tag-to-pull\n" + + " tag: path/to/file-containing-tag\n" + + " tag_prefix: v\n" + + " tag_as_latest: tag-latest\n" + + " build_args: the-build-args\n" + + " build_args_file: path/to/file-with-build-args.json\n" + " get_params:\n" + " save: save-it\n" + " rootfs: tar-it\n" + @@ -1231,11 +1249,33 @@ public class PipelineYamlEditorTest { ); editor.assertProblems( + "cache-it|'boolean'", + "tag-latest|'boolean'", + "the-build-args|Expecting a 'Map'", + "save-it|'boolean'", "tar-it|'boolean'", "skip-it|'boolean'" ); + editor.assertHoverContains("build", "directory containing a `Dockerfile`"); + editor.assertHoverContains("load", "directory containing an image"); + editor.assertHoverContains("dockerfile", "path of the `Dockerfile` in the directory"); + editor.assertHoverContains("cache", "first pull `image:tag` from the Docker registry"); + editor.assertHoverContains("cache_tag", "specific tag to pull"); + editor.assertHoverContains("load_base", "path to a directory containing an image to `docker load`"); + editor.assertHoverContains("load_file", "path to a file to `docker load`"); + editor.assertHoverContains("load_repository", "repository of the image loaded from `load_file`"); + editor.assertHoverContains("load_tag", "tag of image loaded from `load_file`"); + editor.assertHoverContains("import_file", "file to `docker import`"); + editor.assertHoverContains("pull_repository", "repository to pull down"); + editor.assertHoverContains("pull_tag", "tag of the repository to pull down"); + editor.assertHoverContains(" tag:", "a path to a file containing the name"); // The word 'tag' occurs many times in editor so add use " tag: " to be precise + editor.assertHoverContains("tag_prefix", "prepended with this string"); + editor.assertHoverContains("tag_as_latest", "tagged as `latest`"); + editor.assertHoverContains("build_args", "map of Docker build arguments"); + editor.assertHoverContains("build_args_file", "JSON file containing"); + editor.assertHoverContains("save", "docker save"); editor.assertHoverContains("rootfs", "a `.tar` file of the image"); editor.assertHoverContains("skip_download", "Skip `docker pull`");