eclipse-hawkbit / hawkbit-extensions

Eclipse Public License 2.0
20 stars 30 forks source link

S3 Artifact extension build and Installation #50

Closed xyklex closed 5 years ago

xyklex commented 5 years ago

Hi @dometec, I'm trying to build hawkbit components by myself and include the S3 extension, I added the dependency in hawkbit-update-server pom.xml file for the extension and the building process finish without error, after that I took the .jar file and packed it into a docker container and it runs but when I try to upload a file from the UI I get this error:

hawkbit_1   | Exception in thread "central-executor-pool-3" java.lang.AbstractMethodError: org.eclipse.hawkbit.artifact.repository.AbstractArtifactRepository.store(Ljava/lang/String
;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/hawkbit/artifact/repository/model/AbstractDbArtifact;
hawkbit_1   |   at org.eclipse.hawkbit.artifact.repository.AbstractArtifactRepository.store(AbstractArtifactRepository.java:65)
hawkbit_1   |   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
hawkbit_1   |   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
hawkbit_1   |   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
hawkbit_1   |   at java.lang.reflect.Method.invoke(Method.java:498)
hawkbit_1   |   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
hawkbit_1   |   at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:119)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
hawkbit_1   |   at com.sun.proxy.$Proxy227.store(Unknown Source)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement.storeArtifact(JpaArtifactManagement.java:129)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement.getOrCreateArtifact(JpaArtifactManagement.java:124)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement.create(JpaArtifactManagement.java:111)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement$$FastClassBySpringCGLIB$$b4276538.invoke(<generated>)
hawkbit_1   |   at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
hawkbit_1   |   at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
hawkbit_1   |   at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:119)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
hawkbit_1   |   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
hawkbit_1   |   at com.sun.proxy.$Proxy227.store(Unknown Source)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement.storeArtifact(JpaArtifactManagement.java:129)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement.getOrCreateArtifact(JpaArtifactManagement.java:124)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement.create(JpaArtifactManagement.java:111)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement$$FastClassBySpringCGLIB$$b4276538.invoke(<generated>)
hawkbit_1   |   at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
hawkbit_1   |   at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
hawkbit_1   |   at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:119)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
hawkbit_1   |   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.retry.interceptor.RetryOperationsInterceptor$1.doWithRetry(RetryOperationsInterceptor.java:91)
hawkbit_1   |   at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:287)
hawkbit_1   |   at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:164)
hawkbit_1   |   at org.springframework.retry.interceptor.RetryOperationsInterceptor.invoke(RetryOperationsInterceptor.java:118)
hawkbit_1   |   at org.springframework.retry.annotation.AnnotationAwareRetryOperationsInterceptor.invoke(AnnotationAwareRetryOperationsInterceptor.java:153)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:62)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
hawkbit_1   |   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
hawkbit_1   |   at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
hawkbit_1   |   at org.eclipse.hawkbit.repository.jpa.JpaArtifactManagement$$EnhancerBySpringCGLIB$$7be8c292.create(<generated>)
hawkbit_1   |   at org.eclipse.hawkbit.ui.artifacts.upload.AbstractFileTransferHandler$TransferArtifactToRepositoryRunnable.uploadArtifact(AbstractFileTransferHandler.java:261)
hawkbit_1   |   at org.eclipse.hawkbit.ui.artifacts.upload.AbstractFileTransferHandler$TransferArtifactToRepositoryRunnable.streamToRepository(AbstractFileTransferHandler.java:248)
hawkbit_1   |   at org.eclipse.hawkbit.ui.artifacts.upload.AbstractFileTransferHandler$TransferArtifactToRepositoryRunnable.run(AbstractFileTransferHandler.java:232)
hawkbit_1   |   at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:84)
hawkbit_1   |   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
hawkbit_1   |   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
hawkbit_1   |   at java.lang.Thread.run(Thread.java:748)

I enabled the S3 extension on application.properties along with the bucketName key, and I set in the container environment the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_REGION values.

I don't understand is from where is mvn pulling the s3 extension and if is taking the master code (as you mentioned that master branchs are compatible) from here, or how can I build it and include it into the hawkbit-update-server build step.

Thanks

xyklex commented 5 years ago

Issue fixed, I needed to build first this extension to have the jar file in .m2 directory, because I think mvn was retrieving the one from public repository and it was outdated.