我正在 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
这可能吗?
我正在将 docker 镜像发布到 GitHub 容器注册表 (ghcr.io)。
这样做的过程:
有时,步骤 4 或 5 会返回无法从 Docker 映像内解决的错误,问题解决后,我需要重新部署并重新测试工件。
如果发生这种情况,构建组件的过程(包括 junit 测试)会很痛苦,因为 Docker 映像已经构建并存在于 ghcr.io 上。
有没有办法查看 ghcr.io 中是否存在标记的 Docker 映像?
我刚刚将我的 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) 我正在GitHub上创建模块化构建(使用module-info.java),但是当我将module-info.java添加到我想要模块化的模块时,不能执行任何测试......
我怎样才能做到这一点?
我使用以下版本:
失败测试的典型错误如下:
java.lang.reflect.InaccessibleObjectException:无法访问com.github.jactor.rises.commons.dto.UserDtoTest():模块jactor.rises.commons不会"打开com.github.jactor.rises.commons.dto"到未命名的模块@ 65e98b1c
我正在创建一个 spring-boot 应用程序,它在 openJdk12 上运行并表现良好。应用:https : //github.com/jactor-rises/jactor-persistence
我正在寻找如何使用 openJdk13 进行设置。
我尝试使用 spring-boot2.1.8.RELEASE和2.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) 我有一个 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?
我试图将 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 工作流程中设置有效的依赖项和包装器缓存?
我试图在AnnotationProcessor中读取编译时类路径,但我无法弄清楚如何.
我的注释处理器需要将构建的类路径保存到文件中,因此可以在以后由第三方库分析此构建时使用它...
我怎样才能找到classpath?System.getProperty("java.class.path")只会找到注释处理器的类路径,但是我需要构建的类路径来编译....建议?
我想用maven来实现这个目标......
我有一个场景,我在 GitHub 工作流程上使用 maven 和 docker 构建应用程序。
然后,当构建应用程序(带有 docker 映像)时,应用程序的集成测试失败。
在重新运行 GitHub 工作流程之前,我经常需要更改现有的集成测试,而不需要对应用程序本身进行更改。这会导致使用 java 和 docker 构建(并在本地测试)操作。
构建过程已经完成,并且 docker 镜像已上传到 GitHub Packages。如何检查该应用程序是否已经有 docker 镜像?
我可以使用 actions/cache@v2 ( https://github.com/actions/cache ) 吗?如何?Docker 没有在它可以缓存的语言中被提及...
我对此有麻烦,已经在本网站上回答过多次。
我对这个问题的看法有些不同。我有一个使用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
重现此错误:
GitHub:https : //github.com/jactor-rises/jactor-rises.git
尝试在IntelliJ中构建它:
信息:java:编译模块'jactor-commons'时发生错误信息:javac 10.0.1用于编译Java源信息:29/10/2018,21:31-编译在4 s 777中完成了1个错误和0个警告ms错误:java:不支持发行版本5
编写junit测试时:
internal class MyTest {
@org.junit.jupiter.api.Nested
class MyInnerClass {
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码编辑器 (IntelliJ) 显示警告
只有非静态嵌套类可以用作 @Nested 测试类。
如何在 kotlin 的 junit 测试中编写嵌套类?
我有一个工作流程,其中包含在构建和人工制品时创建版本号的操作。这个版本号被写入文件。
我怎样才能把它作为另一个动作的输入?
即:如何在另一个操作中使用此版本号作为提交消息的一部分?
在 kotlin 中编写实现时,我想使用全局定义的非空变量。从功能上讲,这些变量不能为空,但技术实现要求它们可以为空。
我到目前为止使用的解决方案是:
val funtionalValue = if (global.technicalValue != null) global.technicalValue!! else throw someException()
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在functionalValue不使用!!全局定义的技术值的情况下分配?
java ×5
docker ×2
github ×2
junit5 ×2
kotlin ×2
maven ×2
annotations ×1
ghcr ×1
git ×1
github-pages ×1
gradle ×1
homebrew ×1
java-10 ×1
java-13 ×1
java-9 ×1
java-platform-module-system ×1
javacompiler ×1
macos ×1
spring-boot ×1