Giter VIP home page Giter VIP logo

bamboo-jfrog-plugin's Introduction

Introduction

Bamboo JFrog Plugin

Table of Contents

Overview

The Bamboo JFrog Plugin is designed to provide an easy integration between Bamboo and the JFrog Platform.

Unlike the legacy Bamboo Artifactory Plugin, the new Bamboo JFrog Plugin focuses on a single task that runs JFrog CLI commands. Worth mentioning that both JFrog plugins, can work side by side.

The advantage of this approach is that JFrog CLI is a powerful and versatile tool that integrates with all JFrog capabilities. It offers extensive features and functionalities, and it is constantly improved and updated with the latest enhancements from JFrog. This ensures that the Bamboo JFrog Plugin is always up-to-date with the newest features and improvements provided by JFrog.

With the Bamboo JFrog Plugin, you can easily deploy artifacts, resolve dependencies, and link them to the build jobs that created them. Additionally, you can scan your artifacts and builds for vulnerabilities using JFrog Xray and distribute your software packages to remote locations using JFrog Distribution.

Key Features

  • Artifact Management: Manage build artifacts with Artifactory.
  • Dependency Resolution: Resolve dependencies from Artifactory for reliable builds.
  • Build Traceability: Link artifacts to their corresponding build jobs for better traceability.
  • Security Scanning: Scan artifacts and builds with JFrog Xray for vulnerabilities.
  • Software Distribution: Distribute software packages to remote locations using JFrog Distribution.

Installation and Configuration

  1. Download the latest release of the plugin from the Bamboo Marketplace.

  2. Install the plugin on your Bamboo server.

  3. In the Bamboo Administration section, go to Manage Apps and select JFrog Configuration.

    Bamboo Administration - Manage Apps - JFrog Configuration

  4. Click on New JFrog Platform Configuration.

    New JFrog Platform Configuration

  5. Configure your credentials details and run a Test Connection, then click Save.

    Server Configuration

JFrog CLI Settings

  1. By default, latest JFrog CLI will be installed and used when the JFrog CLI task runs. You can specify a specific version to be used.

  2. If your Bamboo agents have access to the internet, you can set the JFrog Plugin to download JFrog CLI directly from https://releases.jfrog.io. If not, you can set the plugin to download JFrog CLI through the configured Artifactory instance.

    jfrogCliSettings.png

    Set the Repository Name field value to the name of a Remote or Virtual repository in your Artifactory instance which proxies https://releases.jfrog.io/.

    remoteRepo.png

Usage

Once installed and configured, you can use the JFrog CLI task in your Bamboo build plans. Follow these steps:

  1. Go to the Tasks section of your build plan.

  2. Add the JFrog CLI task to your plan.

    Selecting JFrog CLI task

  3. Configure the JFrog CLI task by selecting the appropriate Server ID.

    Configuring JFrog CLI task

bamboo-jfrog-plugin's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bamboo-jfrog-plugin's Issues

Bamboo 9.6 Data Center support

Describe the bug
Hi, you are saying that this plugin is new replacement of legacy Artifactory Bamboo plugin, but you do not support Bamboo 9.6 and Data Center version (as now, based on marketplace page). And with Atlassian more and more limitations how plugins can be installed (even it can be overridden now, but who knows if later will be possible), you released last version of this plugin Oct 1st 2023... guys it's April 2024 and last supported version by your plugin is 9.3.6 but Bamboo is on 9.6 version now!!!!!

Expected behavior
Support Bamboo 9.6 and marketplace page should reflect supported version and start supporting properly Data Center version of Bamboo.

How can I use a --spec file for the jfrog task?

I need to bring a file to the --spec argument.
There's no place to write that file on the jfrog task itself.
It means the spec file is part of the source code, which is fine, or I need to create the spec file in a previous task.

But the spec file should change for each build because it uses different arguments (build number, build name).
Is there a simpler way?

For example, have the spec file stored in git with variables ${bamboo.example} and then pass environment variables in the jfrog task ?

plugin erroring out on every bamboo job

Describe the bug
after installing the plugin we get a "null custom build post complete action failed to run" regardless it use the jfrog task or not.

maybe it is only does happen on remote agents since we are not use any local agent since they are going away.
To Reproduce
run any plan in bamboo after installing the plugin (as said before we are using remote agents) and you will see:

Expected behavior
no errors.

Screenshots

java.nio.file.AccessDeniedException: /var/atlassian/application-data/bamboo-agent
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
	at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)
	at java.base/java.nio.file.Files.createDirectory(Files.java:690)
	at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:797)
	at java.base/java.nio.file.Files.createDirectories(Files.java:783)
	at org.jfrog.bamboo.utils.BambooUtils.getJfrogTmpDir(BambooUtils.java:45)
	at org.jfrog.bamboo.utils.BambooUtils.getJfrogTmpSubdir(BambooUtils.java:58)
	at org.jfrog.bamboo.PostBuildAction.call(PostBuildAction.java:36)
	at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener.performAction(PostBuildCompletedEventListener.java:71)
	at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener.access$000(PostBuildCompletedEventListener.java:17)
	at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener$1.lambda$run$1(PostBuildCompletedEventListener.java:55)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
	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.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener$1.run(PostBuildCompletedEventListener.java:55)
	at com.atlassian.bamboo.variable.CustomVariableContextImpl.withVariableSubstitutor(CustomVariableContextImpl.java:107)
	at com.atlassian.bamboo.variable.CustomVariableContextRunnerImpl.execute(CustomVariableContextRunnerImpl.java:31)
	at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener.performAction(PostBuildCompletedEventListener.java:49)
	at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener.handleEvent(PostBuildCompletedEventListener.java:38)
	at jdk.internal.reflect.GeneratedMethodAccessor2625.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:42)
	at com.atlassian.event.internal.ComparableListenerInvoker.invoke(ComparableListenerInvoker.java:48)
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$null$0(AsynchronousAbleEventDispatcher.java:37)
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:85)
	at com.atlassian.bamboo.event.spi.BambooEventDispatcher.dispatch(BambooEventDispatcher.java:34)
	at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:114)
	at com.atlassian.bamboo.event.TxAwareEventPublisher.publish(TxAwareEventPublisher.java:20)
	at com.atlassian.bamboo.v2.build.agent.LocalBuildResultProcessor.processBuildResult(LocalBuildResultProcessor.java:143)
	at com.atlassian.bamboo.v2.build.agent.LocalResultProcessorImpl.processResult(LocalResultProcessorImpl.java:30)
	at com.atlassian.bamboo.v2.build.agent.messages.ProcessResult.deliver(ProcessResult.java:20)
	at com.atlassian.bamboo.v2.build.agent.messages.BatchRemoteBambooMessage.deliver(BatchRemoteBambooMessage.java:39)
	at com.atlassian.bamboo.v2.build.agent.BambooAgentMessageDeliverer.deliverObject(BambooAgentMessageDeliverer.java:11)
	at com.atlassian.bamboo.v2.build.agent.BambooAgentMessageListener$1.run(BambooAgentMessageListener.java:49)
	at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26)
	at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17)
	at com.atlassian.bamboo.v2.build.agent.BambooAgentMessageListener.onMessage(BambooAgentMessageListener.java:40)
	at com.atlassian.bamboo.v2.build.agent.ParallelizingMessageListener.lambda$onMessage$0(ParallelizingMessageListener.java:69)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48)
	at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26)
	at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17)
	at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41)
	at java.base/java.lang.Thread.run(Thread.java:829)

Versions

  • Bamboo JFrog plugin version: 1.0.3
  • Bamboo operating system: 9.2.4
  • Artifactory Version: 7.71

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.