小编jac*_*ses的帖子

如何获得github工作流程的短sha?

我正在 GitHub 中创建一个工作流,它创建并使用一个 docker 图像。因此,我使用此 docker 映像的全局环境变量启动了我的工作流文件,该环境变量对我的工作流中的所有作业都可见:

name: continuous integration
on:
  push:
    branches:
      - '**'

env:
  IMAGE: docker.pkg.github.com/${{ github.repository }}/jactor-persistence:${{ github.sha }}
Run Code Online (Sandbox Code Playgroud)

我想${{ github.sha }}用head commit的short sha替换,和下面命令的结果一样git rev-parse --short HEAD

这可能吗?

git docker github-actions

17
推荐指数
4
解决办法
1万
查看次数

如何从 ghcr.io 查看(而不是下载)docker 镜像

我正在将 docker 镜像发布到 GitHub 容器注册表 (ghcr.io)。

这样做的过程:

  1. 构建组件。
  2. 构建包含组件的 docker 镜像。
  3. 将 docker 镜像上传到 ghcr.io。
  4. 部署 Docker 镜像。
  5. 在 docker 镜像上运行集成测试。

有时,步骤 4 或 5 会返回无法从 Docker 映像内解决的错误,问题解决后,我需要重新部署并重新测试工件。

如果发生这种情况,构建组件的过程(包括 junit 测试)会很痛苦,因为 Docker 映像已经构建并存在于 ghcr.io 上。

有没有办法查看 ghcr.io 中是否存在标记的 Docker 映像?

github github-pages ghcr github-container-registry

11
推荐指数
1
解决办法
5986
查看次数

如何从 macOS Catalina build 10.15.4 运行 java?

我刚刚将我的 macOS Catalina 从 10.15.3 -> 10.15.4 升级,我无法再在 IntelliJ 中运行 java。

我设法通过应用以下警告使其从终端工作brew

?  ~ brew reinstall java
==> Reinstalling openjdk 
==> Downloading https://homebrew.bintray.com/bottles/openjdk-13.0.2+8_2.catalina.bottle.tar.gz
Already downloaded: /Users/jactor/Library/Caches/Homebrew/downloads/0dd8815aa4758e78a47b642bf541e2ada54d5067a8742b33b309989b77d0741b--openjdk-13.0.2+8_2.catalina.bottle.tar.gz
==> Pouring openjdk-13.0.2+8_2.catalina.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /usr/local,
because it shadows the macOS `java` wrapper.

If you need to have openjdk first in your PATH run:
  echo …
Run Code Online (Sandbox Code Playgroud)

java macos homebrew intellij-idea

10
推荐指数
1
解决办法
5556
查看次数

如何在模块化Java项目中组织测试?

我正在GitHub上创建模块化构建(使用module-info.java),但是当我将module-info.java添加到我想要模块化的模块时,不能执行任何测试......

我怎样才能做到这一点?

我使用以下版本:

  • junit.jupiter版本5.3.0(第一次使用版本5.2.0也不成功)
  • maven-compiler-plugin版本3.8.0(第一次使用版本3.7.0也没有成功)
  • maven-surefire-plugin 2.22.0版(第一次使用版本2.21.0也不成功)

失败测试的典型错误如下:

java.lang.reflect.InaccessibleObjectException:无法访问com.github.jactor.rises.commons.dto.UserDtoTest():模块jactor.rises.commons不会"打开com.github.jactor.rises.commons.dto"到未命名的模块@ 65e98b1c

java maven java-platform-module-system java-9 junit5

8
推荐指数
1
解决办法
1022
查看次数

如何使用 java 13 设置 spring-boot 应用程序

我正在创建一个 spring-boot 应用程序,它在 openJdk12 上运行并表现良好。应用:https : //github.com/jactor-rises/jactor-persistence

我正在寻找如何使用 openJdk13 进行设置。

我尝试使用 spring-boot2.1.8.RELEASE2.1.9.RELEASE,但两个版本都在运行时失败,并显示IllegalStateException

java.lang.IllegalStateException: Failed to load ApplicationContext

    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
    at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:97)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$invokeTestInstancePostProcessors$5(ClassTestDescriptor.java:349)
    at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.executeAndMaskThrowable(JupiterTestDescriptor.java:215)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassTestDescriptor.java:349)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1621)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeTestInstancePostProcessors(ClassTestDescriptor.java:348)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateAndPostProcessTestInstance(ClassTestDescriptor.java:270)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$2(ClassTestDescriptor.java:259)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$3(ClassTestDescriptor.java:263)
    at java.base/java.util.Optional.orElseGet(Optional.java:362)
    at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$4(ClassTestDescriptor.java:262)
    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:82)
    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:59)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$0(NodeTestTask.java:83)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72) …
Run Code Online (Sandbox Code Playgroud)

java spring-boot java-13

8
推荐指数
2
解决办法
4662
查看次数

如何从 bash 脚本在 GitHub 操作上创建输出?

我有一个 GitHub 操作,本质上是一个 bash 脚本。我的操作的 javascript 部分执行 bash 脚本:

const core = require("@actions/core");
const exec = require("@actions/exec");

async function run() {
  try {
    // Execute bash script
    await exec.exec(`${__dirname}/my-action-script.sh`);
  } catch (error) {
    core.setFailed(error.message);
  }
}

run();
Run Code Online (Sandbox Code Playgroud)

目前,此操作将通过在文件系统上保留文件来与其他操作进行通信。这是一种“隐形”的沟通方式,我想用action.yml输出来填充我的沟通方式。如何能够my-action-script.sh返回 my 中定义的输出action.yml

github-actions

8
推荐指数
1
解决办法
8005
查看次数

如何在 GitHub 工作流程中重用 gradle 缓存

我试图将 gradle 缓存保留在我的 GitHub 工作流程中,但它不起作用。我是 gradle 新手,正在努力找出如何/为什么无法在项目的工作流程构建之间保留 gradle 缓存

在我的 GitHub工作流程文件中,我有两个 gradle 缓存。一个是 gradle 缓存,另一个是 gradle 包装器:

      - name: Setup Gradle Dependencies Cache
        uses: actions/cache@v2
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
      - name: Setup Gradle Wrapper Cache
        uses: actions/cache@v2
        with:
          path: ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
Run Code Online (Sandbox Code Playgroud)

本地 a./gradlew clean后跟 a./gradlew build将在大约 33 秒内构建我的项目...在 GitHub 上,需要 3 倍的时间(?):https://github.com/jactor-rises/jactor-persistence/runs/4794532441 ?check_suite_focus =真

如何在 GitHub 工作流程中设置有效的依赖项和包装器缓存?

gradle github-actions

8
推荐指数
1
解决办法
6594
查看次数

如何从AnnotationProcessor获取编译时类路径?

我试图在AnnotationProcessor中读取编译时类路径,但我无法弄清楚如何.

我的注释处理器需要将构建的类路径保存到文件中,因此可以在以后由第三方库分析此构建时使用它...

我怎样才能找到classpath?System.getProperty("java.class.path")只会找到注释处理器的类路径,但是我需要构建的类路径来编译....建议?

我想用maven来实现这个目标......

annotations maven annotation-processing

6
推荐指数
0
解决办法
184
查看次数

如何从 GitHub Action 缓存 docker 镜像

我有一个场景,我在 GitHub 工作流程上使用 maven 和 docker 构建应用程序。

然后,当构建应用程序(带有 docker 映像)时,应用程序的集成测试失败。

在重新运行 GitHub 工作流程之前,我经常需要更改现有的集成测试,而不需要对应用程序本身进行更改。这会导致使用 java 和 docker 构建(并在本地测试)操作。

构建过程已经完成,并且 docker 镜像已上传到 GitHub Packages。如何检查该应用程序是否已经有 docker 镜像?

我可以使用 actions/cache@v2 ( https://github.com/actions/cache ) 吗?如何?Docker 没有在它可以缓存的语言中被提及...

java docker github-actions

6
推荐指数
1
解决办法
1072
查看次数

如何避免IntelliJ重置语言级别?

我对此有麻烦,已经在本网站上回答过多次。

我对这个问题的看法有些不同。我有一个使用maven 3.5.x和java版本10(在maven-compiler-plugin中配置)可以很好地构建的项目。在IntelliJ的项目结构中查看时,所有模块的语言级别均为10(但项目设置为语言级别6,在项目结构中选择的SDK为1.8 ...

但是,即使我将sdk更改为java 10,并将项目语言级别更改为10,仍然会发生以下粘贴的错误... ????

我的IntelliJ版本:IntelliJ IDEA 2018.2.5

重现此错误:

信息:java:编译模块'jactor-commons'时发生错误信息:javac 10.0.1用于编译Java源信息:29/10/2018,21:31-编译在4 s 777中完成了1个错误和0个警告ms错误:java:不支持发行版本5

java intellij-idea javacompiler java-10

5
推荐指数
1
解决办法
1521
查看次数

如何在 kotlin 中编写 @Nested 测试类

编写junit测试时:

internal class MyTest {
    @org.junit.jupiter.api.Nested
    class MyInnerClass {

    }
}
Run Code Online (Sandbox Code Playgroud)

我的代码编辑器 (IntelliJ) 显示警告

只有非静态嵌套类可以用作 @Nested 测试类。

如何在 kotlin 的 junit 测试中编写嵌套类?

kotlin junit5

5
推荐指数
1
解决办法
1744
查看次数

如何给 Github Action 一个文件的内容作为输入?

我有一个工作流程,其中包含在构建和人工制品时创建版本号的操作。这个版本号被写入文件。

我怎样才能把它作为另一个动作的输入?

即:如何在另一个操作中使用此版本号作为提交消息的一部分?

github github-actions

1
推荐指数
2
解决办法
1891
查看次数

如何在 kotlin 中将全局定义的可空变量用作非空变量

在 kotlin 中编写实现时,我想使用全局定义的非空变量。从功能上讲,这些变量不能为空,但技术实现要求它们可以为空。

我到目前为止使用的解决方案是:

val funtionalValue = if (global.technicalValue != null) global.technicalValue!! else throw someException()
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在functionalValue不使用!!全局定义的技术值的情况下分配?

kotlin

1
推荐指数
1
解决办法
185
查看次数