【问题标题】:Can I deploy files on google cloud storage using gradle?我可以使用 gradle 在谷歌云存储上部署文件吗?
【发布时间】:2015-11-19 07:54:06
【问题描述】:

我正在 Google App Engine 上运行一个应用程序,我的 git 存储库中有一些文件需要复制到云存储中以供应用程序访问。

我现在将它们手动复制到云存储中,但我很想找到一种方法在我启动时将它们与应用程序一起自动部署

gradle appengineUpdate

甚至定义一个新的 gradle 任务

gradle storageUpdate

有人有同样的需求并找到了可行的方法吗?

【问题讨论】:

  • 你可以创建一个单元测试,让 gradle 在启动/打包时执行你的单元测试?
  • 这是个好主意@konqi !我还没有任何 gradle 激活的单元测试,但我认为这会成功。你用过类似的方法吗?
  • 我做了,但我使用 maven,所以我不会对 gradle 有很大帮助(因此是评论,而不是答案)。定义一个单独的任务将是更好的解决方案,但也需要更多的努力 - 但是您可以通过单元测试定义一个任务并将这两种方法结合起来......
  • 我的最终目标是让一些东西自动复制这些文件而忘记它......所以我想我会写一个解决方案来做到这一点,而不定义新任务。再次感谢!

标签: java google-app-engine gradle google-cloud-storage


【解决方案1】:

经过多次尝试,我将发布我构建、测试、完善并在生产中使用的解决方案。

首先,我创建了一个新的 Java 类,它使用 Storage、ACL 和 BlobInfo 处理文件上传

Storage storage = StorageOptions.builder()
                    .authCredentials(AuthCredentials.createForJson(new FileInputStream(authFile)))
                    .projectId(projectId)
                    .build()
                    .service();

List<Acl> aclList = new ArrayList<>();
aclList.add(Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER)); // shared publicly

BlobInfo blobInfo = BlobInfo.builder(blobId)
                    .acl(aclList)
                    .build();

storage.create(blobInfo, new FileInputStream(template));

之后我将它链接到一个调用类的新 gradle 任务

dependencies {

  // Google Cloud Java Client
  compile group: "com.google.cloud", name: "gcloud-java", version: "0.2.6"

}

task upload(type:JavaExec) {
  main = 'com.acme.GcsUploader'
  classpath = sourceSets.main.runtimeClasspath

//   Test Environment
  args = [
      'myProjectId', // project Id
      'myBucketName', // bucket name

      "file=${project.hasProperty("file") ? file : ""}"
  ]

}

请注意,如果我想上传单个文件,调用就足够了

gradle upload -Pfile=<filename>

默认情况下我会上传所有文件,但如果我想指示单个文件,则可以轻松完成

最后但并非最不重要的是,要自动运行任务,将已运行的任务声明为取决于新定义的上传任务就足够了

tasks.getByName('processResources').dependsOn(upload)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2019-03-19
    • 2016-10-29
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多