Using Visual Builder Studio
Using Visual Builder Studio
Release 24.10.1
F96932-02
August 2024
Oracle Cloud Using Visual Builder Studio, Release 24.10.1
F96932-02
This software and related documentation are provided under a license agreement containing restrictions on use and
disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or
allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit,
perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation
of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If you find
any errors, please report them to us in writing.
If this is software, software documentation, data (as defined in the Federal Acquisition Regulation), or related
documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then
the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any
programs embedded, installed, or activated on delivered hardware, and modifications of such programs) and Oracle
computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial
computer software," "commercial computer software documentation," or "limited rights data" pursuant to the applicable
Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction,
duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle
programs (including any operating system, integrated software, any programs embedded, installed, or activated on
delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle
data, is subject to the rights and limitations specified in the license contained in the applicable contract. The terms
governing the U.S. Government's use of Oracle cloud services are defined by the applicable contract for such services.
No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management applications. It is not
developed or intended for use in any inherently dangerous applications, including applications that may create a risk of
personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all
appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its
affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.
Oracle®, Java, MySQL, and NetSuite are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their respective owners.
Intel and Intel Inside are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used
under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Epyc, and the AMD logo
are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open
Group.
This software or hardware and documentation may provide access to or information about content, products, and
services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all
warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an
applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss,
costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth
in an applicable agreement between you and Oracle.
Contents
Preface
Audience xv
Documentation Accessibility xv
Diversity and Inclusion xviii
Related Resources xviii
Conventions xviii
Part I Overview
1 The Basics
What Is Oracle Visual Builder Studio? 1-1
A Word About Oracle Cloud Infrastructure 1-1
Manage Your Development Process 1-2
Key Concepts, Components, and Terms 1-2
Access VB Studio 1-4
Access VB Studio from the Oracle Cloud Home Page 1-7
What Are My Identity Roles? 1-8
iii
See the News Banner 2-12
iv
Export and Import Project Data 3-38
What Project Data Does VB Studio Automatically Export? 3-39
Export to and Import from an OCI Object Storage Bucket 3-40
Export to and Import from an OCI Object Storage Container 3-44
View Export and Import History of the Project 3-46
Edit a Project’s Name, Description, or Visibility 3-46
See When a Project Was Created and Last Updated 3-47
Get a Project's Unique Identifier 3-47
Manage Announcements 3-47
Manage Project Tags 3-49
View Your Project’s Usage Metrics 3-49
Display RSS/ATOM Feeds 3-50
Configure Link Rules 3-51
Set Up Issue Products and Custom Fields 3-53
Create and Configure Issue Products 3-53
Create and Configure Custom Fields in an Issue 3-54
Configure Project Templates 3-55
Visibility, Rules, and Variables 3-56
Define and Manage a Project Template 3-57
Define Project Template Rules 3-58
Add and Manage Variables 3-60
Perform Build Administration Tasks 3-61
Manage Repositories 3-61
v
Use Git Commands to Manage Files 4-14
Associate a VB Studio Issue with a Commit 4-16
Work with Git from the Designer 4-16
Use Branches 4-18
Create a Branch 4-18
Protect a Branch 4-19
Manage a Branch 4-21
Manage a Git Repository 4-22
Copy a Git File/Repository's URL 4-22
View File/Repository History 4-23
Use Tags 4-24
Create and Manage Tags 4-24
Compare Revisions 4-25
Add Comments to a File 4-26
Watch a Git Repository 4-26
Search a Git Repository 4-27
Download a Git Repository's Archive 4-28
Review Source Code with Merge Requests 4-29
Merge Requests Concepts and Terms 4-29
Merge Request States 4-30
Create and Update a Merge Request 4-31
Create a Merge Request 4-31
Create a Merge Request from the Command Line 4-33
Set a Merge Request to Draft State 4-35
Use Templates to Improve MR Descriptions 4-35
Add or Remove Reviewers 4-37
Link an Issue to a Merge Request 4-39
Link a Build Job to a Merge Request 4-39
Add an Attachment (Image or File) to a Merge Request Comment 4-40
Use the Toolbar to Work with Comments 4-43
Watch a Merge Request 4-43
Merge Request Email Notifications 4-44
Review a Merge Request 4-45
Open a Merge Request 4-45
View Commits and Changed Files 4-46
Add a General Comment 4-48
Add an Inline Comment to a File 4-49
Filter a Merge Request Conversation 4-49
Navigate Multiple Comments 4-50
Approve or Reject a Merge Request 4-52
Merge Branches and Close the Merge Request 4-53
Merge Branches 4-53
vi
Resolve a Merge Conflict 4-55
Close a Merge Request 4-56
Cherry-pick a Commit 4-57
Reapply a Merge Request's Commits to a New Branch 4-62
Retarget a Merge Request's Commits to Another Branch 4-63
Revert a Merge Request 4-63
Merge Request and Branch Administration 4-65
Assign Owners to Files in the Project's Git Repository 4-65
Set Review and Merge Restrictions on a Repository Branch 4-67
vii
Use a Named Password/Private Key 7-26
Access an Oracle Cloud Service Using SSH 7-28
Access the Oracle Maven Repository 7-29
Generate a Dependency Vulnerability Analysis Report 7-32
Move Oracle Integration Artifacts, Packages, and Lookups Between Instances 7-37
Run Unix Shell Commands 7-52
Build Maven Applications 7-55
Build Ant Applications 7-60
Build Gradle Applications 7-61
Build Node.js Applications 7-63
Access an Oracle Database Using SQLcl 7-64
Run Oracle PaaS Service Manager Commands Using PSMcli 7-66
Use OCIcli to Access Oracle Cloud Infrastructure Services 7-67
Run Docker Commands 7-69
Run Fn Commands 7-71
Use SonarQube 7-72
Publish JUnit Results 7-79
Use the Xvfb Wrapper 7-82
Publish Javadoc 7-83
Archive Artifacts 7-83
Copy Artifacts from Another Job 7-84
Configure General and Advanced Job Settings 7-85
Manage Build Actions 7-87
Change a Job's Java Version 7-87
Change a Job’s Build Executor Template 7-88
Run a Build 7-89
View a Job’s Builds and Reports 7-89
View a Build’s Logs and Reports 7-89
View a Project’s Build History 7-93
View a Job’s Build History 7-94
View a Job’s History by User Name 7-94
View a Build’s Details 7-95
Download Build Artifacts 7-95
Watch a Job 7-95
Build Executor Environment Variables 7-96
Run Jobs in a Pipeline 7-101
What Is a Pipeline? 7-102
Pipeline Layout 7-103
Create and Manage Pipelines 7-104
Use the Pipeline Designer 7-107
Create a One-to-One Dependency 7-108
Create a One-to-Many Dependency 7-109
viii
Create a Many-to-One Dependency 7-110
Edit Pipeline Dependencies 7-112
Protect Your Pipeline: Restrict Who Can Start It Manually or Edit Its Configuration 7-113
Add Manual Pipeline Approvals 7-116
Create a Pipeline Approvers Group for Your Project 7-117
Add a Manual Approval Item to Your Pipeline at Design Time 7-120
Approve the Manual Approval when the Pipeline Runs 7-126
Notify the Pipeline Approvers 7-130
Monitor Pipeline Status 7-132
View Pipeline Run Details 7-133
View Pipelines in Progress 7-134
Add or Export Parameters and Parameter Lists 7-134
Add a Parameter 7-135
Add a Parameter List 7-136
Export a Parameter 7-136
Export a Parameter List 7-137
Configure Jobs and Pipelines with YAML 7-137
What Are YAML Files Used for in VB Studio? 7-138
REST API for Accessing YAML Files 7-141
How Do I Validate a Job or Pipeline Configuration? 7-141
Create a Job or a Pipeline Without Committing the YAML File 7-141
How Do I Use YAML to Create or Configure a Job? 7-142
What Is the Format for a YAML Job Configuration? 7-143
YAML Job Configuration Examples 7-157
How Do I Use YAML to Create or Configure a Pipeline? 7-160
What Is the Format for a YAML Pipeline Configuration? 7-161
YAML Pipeline Configuration Examples 7-166
Set Dependency Conditions in Pipelines Using YAML 7-167
Define and Use Triggers in YAML 7-167
ix
Package, Deploy, and Manage Visual Applications 8-10
Deploy a Visual Application to a Development Visual Builder Instance 8-11
Deploy a Visual Application to a Test or Production Visual Builder Instance 8-11
View a Deployed Visual Application 8-11
Lock, Unlock, or Roll Back a Deployed Visual Application 8-12
Undeploy a Visual App 8-13
Undeploy a Visual App Manually 8-14
Configure a Job to Manage a Deployed Visual Application 8-14
Configure a Job to Audit and Test Your Visual Application 8-16
Configure a Job to Import Data to or Export Data from a Visual Application 8-17
Configure a Job to Lock, Unlock, or Roll Back a Deployed Visual Application 8-18
Configure a Job to Undeploy a Visual Application 8-19
Deploy Build Artifacts to Oracle Cloud Services 8-20
Deploy an Application to JCS 8-21
Access a Deployed Application 8-22
Manage Oracle Cloud Service Deployments 8-23
x
10 Manage Software Releases
What Are Release States? 10-1
Create a Release 10-2
Change a Release’s Status 10-2
Specify a Release's Artifacts 10-2
Manage Releases 10-3
Download a Release's Artifacts 10-3
xi
12 Manage Binaries and Dependencies with Maven
Maven Concepts and Terms 12-1
Set Up and Populate Your settings.xml File 12-1
Copy Distribution Management Snippets 12-6
Upload an Artifact Manually 12-7
Upload Artifacts Using the Maven Command-Line Interface 12-8
Download an Artifact Manually 12-9
Search Artifacts 12-10
Sort Maven Artifacts and Snapshots 12-11
Maven Repository Administration 12-12
Configure Auto-Cleanup for Snapshots 12-12
Configure Overwriting for Release Artifacts 12-13
xii
Configure the Jenkins Job to Use the VB Studio Git Repository and Enable SCM
Polling 15-10
Configure a Hudson/Jenkins Git Plugin Webhook 15-13
Create a Hudson/Jenkins - Build Trigger Webhook to Trigger a Jenkins Job on an
Update to a Git Repository 15-13
Install the Build Authorization Token Root Plugin on Jenkins 15-14
Get the Jenkins API Access Token 15-15
Configure the Jenkins Job to Set an Authentication Token 15-16
Configure a Hudson/Jenkins Build Trigger Webhook 15-17
Use the Jenkins - Merge Requests Webhook to Link a Jenkins Job to a Merge Request 15-20
Install the Notification Plugin on Jenkins 15-20
Install the Build Authorization Token Root Plugin on Jenkins 15-21
Get the Jenkins API Access Token 15-22
Configure the Jenkins Job to Set an Authentication Token and Accept Build
Parameters 15-23
Configure a Webhook in VB Studio to Trigger a Jenkins Job on a Merge Request
Update 15-24
Link the Jenkins Job with the Merge Request 15-25
Create a Jenkins - Notification Plugin Webhook So VB Studio Accepts Build Notifications
from a Jenkins Job 15-26
Install the Notification Plugin on Jenkins 15-26
Configure a Webhook in VB Studio to Accept Notifications from Jenkins 15-27
Configure the Jenkins Job to Send Build Notifications 15-27
Hudson 15-28
Trigger a Hudson Job on SCM Polling 15-29
Set Up Git on Hudson 15-29
Configure the Hudson Job to Use VB Studio Git Repository and Enable SCM Polling 15-31
Configure a Webhook in VB Studio to Trigger a Hudson Job When the Git
Repository Gets Updated 15-32
Trigger a Hudson Job on a Git Repository Update 15-33
Configure the Hudson Job 15-33
Configure a Webhook in VB Studio to Trigger a Hudson Job on a Git Repository
Update 15-34
GitHub Apps 15-35
Send Event Notifications to Any Application 15-36
What Is a Generic Webhook's Data Structure? 15-37
xiii
Download an Archive of the Snippet 16-5
17 Co-Author Wikis
Working with Markup Languages in VB Studio 17-1
Textile Syntax Reference 17-3
Confluence Syntax Reference 17-6
Markdown Syntax Reference 17-8
Use the Markup Toolbar 17-9
Create and Manage Wiki Pages 17-10
Add Comments to a Wiki Page 17-15
Watch a Wiki Page 17-16
View a Wiki Page's History and Compare Versions 17-16
Wiki Administration 17-17
Configure Edit and Delete Rights for Wiki Pages 17-17
Change a Project’s Wiki Markup Language 17-18
Part IV Troubleshooting
xiv
Preface
Using Oracle Visual Builder Studio describes how to manage, build, merge, and deploy generic
projects, projects for Oracle Cloud Application extensions, and projects for VB Studio visual
applications.
Topics:
• Audience
• Documentation Accessibility
• Diversity and Inclusion
• Related Resources
• Conventions
Audience
This document is intended for users who are responsible for managing, building, merging, and
deploying generic projects, projects for Oracle Cloud Application extensions, and projects for
VB Studio visual applications.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility
Program website at https://www.oracle.com/corporate/accessibility/.
Keyboard Shortcuts
When working in the VB Studio user interface, you can use these keyboard shortcuts to help
you move around quickly:
xv
Preface
xvi
Preface
Navigation shortcuts
xvii
Preface
Related Resources
For more information, see these Oracle resources:
• Oracle Public Cloud
http://cloud.oracle.com
• Create Visual Applications in VB Studio in Building Responsive Applications with Visual
Builder Studio
• What Can You Do with Oracle Visual Builder Studio? in Extending Oracle Cloud
Applications with Visual Builder Studio
• Create an Oracle Visual Builder Studio Generation 2 Instance in Administering Visual
Builder Studio
Conventions
The following text conventions are used in this document:
xviii
Preface
Convention Meaning
boldface Boldface type indicates graphical user interface elements associated with an
action, or terms defined in text or the glossary.
italic Italic type indicates book titles, emphasis, or placeholder variables for which
you supply particular values.
monospace Monospace type indicates commands within a paragraph, URLs, code in
examples, text that appears on the screen, or text that you enter.
xix
Part I
Overview
This part introduces you to the basic information about Oracle Visual Builder Studio and walks
you through the process of getting set up to use the service.
Topics:
• The Basics
• Get Yourself Set Up
1
The Basics
Learn about Oracle Visual Builder Studio, its projects, components, roles, and how to access
the service.
See Oracle Cloud Terminology in Getting Started with Oracle Cloud for definitions of terms
found in this and other documents in the Oracle Cloud library.
1-1
Chapter 1
Key Concepts, Components, and Terms
On OCI Classic, VB Studio builds run on Oracle Cloud Infrastructure Compute Classic (OCI
Compute Classic) virtual machines (VMs). Project artifacts are stored in an Oracle Cloud
Infrastructure Object Storage Classic (OCI Object Storage Classic) container.
Before VB Studio can be used on OCI, the OCI administrator needs to configure connections
to the Compute and Object Storage instances.
Before VB Studio can be used on OCI Classic, the OCI Classic administrator needs to
configure connections to the OCI Compute Classic and OCI Object Storage Classic instances.
This is how the VB Studio components work together in your development ecosystem:
• Within a single Visual Builder Studio instance, you and your team members who use that
instance are considered an organization. Within your organization, you will likely belong to
one or more projects, each of which is devoted to a discrete software effort.
• A project brings together all the tools you need to create those artifacts, such as a Git
repository for storing your source code, a pipeline to provide continuous integration and
delivery to the Oracle Cloud, an issue tracking system, team wikis, and more.
• Although VB Studio provides a Git repository for you, you can choose to use external
repos, such as GitHub and BitBucket.
Term Description
Oracle Cloud Oracle Cloud Infrastructure is a set of cloud services that enable you to build
Infrastructure (OCI) and run a wide range of applications and services in a highly available hosted
environment. Oracle Cloud Infrastructure offers high-performance compute
capabilities (as physical hardware instances) and storage capacity in a flexible
overlay virtual network that is securely accessible from your on-premise
network.
1-2
Chapter 1
Key Concepts, Components, and Terms
Term Description
Oracle Cloud Service that hosts virtual machines (VMs) on Oracle Cloud with all the
Infrastructure Compute necessary storage and networking resources. VB Studio uses the VMs to run
(OCI Compute) project builds.
OCI Compute VM A virtual machine that runs on top of physical bare metal hardware. To learn
instance more about a compute instance, see Overview of the Compute Service.
OCI Compute VM shape A shape is a template that determines the number of CPUs, amount of
memory, and other resources allocated to a newly created VM compute
instance. To find more about shapes, see VM Shapes.
OCI region OCI is hosted in regions and availability domains. A region is a localized
geographic area, and an availability domain is one or more data centers
located within a region. To learn more about regions and availability domains,
see Regions and Availability Domains.
OCI Virtual Cloud A VCN is a software-defined network that you set up in Oracle Cloud
Network (VCN) and Infrastructure data centers in a particular region. To find out more about VCNs
subnets and subnets, see VCNs and Subnets and Overview of Networking.
Oracle Cloud Oracle Cloud service that hosts containers on Oracle Cloud to store project
Infrastructure Object data. VB Studio uses the buckets to archive build artifacts and Maven
Storage (OCI Object artifacts, and export project data.
Storage)
Oracle Cloud Oracle Cloud Applications are a set of modular Cloud-ready enterprise
Applications applications. To learn more, see https://www.oracle.com/
applications/.
Extension An artifact that allows you to extend certain Oracle Cloud Applications to meet
your business needs.
You deploy an extension to an Oracle Cloud Application's instance.
Visual Builder A Visual Builder instance that provides the server for delivering pages in web
applications, and services your visual applications might use to access data,
including the database used to store data and the proxy server for managing
connections to REST services.
Visual application A responsive application developed using VB Studio's browser-based
development environment.
You deploy a visual application to a Visual Builder instance.
Project A project is a collection of VB Studio features.
You can use a project to host source code files, track issues, collaborate on
code, build, and deploy your applications. A project can host multiple Git
repositories. Each Git repository can have multiple branches and hundreds of
code files. You can create a merge request for each branch of the Git
repository and ask reviewers to review the code. You can create and
configure multiple build jobs to generate different project artifacts that you can
deploy to Oracle Cloud or your on-premise web server.
Organization The top-most entity in the project structure of VB Studio. Think of an
organization as the umbrella for all the projects in a given identity domain.
VB Studio Designer VB Studio's browser-based development environment.
Git repository A Source Code Management (SCM) and distributed version control tool to
host source code files.
Maven repository A hosted binary repository to store build artifacts, library files, and
dependencies for Maven applications.
Issue tracker A built-in issue management system to create and track tasks, defects, and
features.
1-3
Chapter 1
Access VB Studio
Term Description
Environment Defines the target Oracle Cloud Applications, Visual Builder, Oracle Cloud
SaaS, or Oracle Cloud Infrastructure service instance as a single entity. You'll
define an environment with a service instance to which you can deploy an
application or get information about that service instance.
Merge request and code A method to merge a Git repository branch with another branch. Before
review merging the branches, team members can review differences between files of
both branches and provide their feedback.
Wiki Built-in wiki system to help your team author and manage wiki pages.
Build system A built-in system to define and automate builds of your applications.
Continuous Integration Continuous integration is a set of practices that allow development teams to
(CI) and Continuous implement small code changes and and push the code to version control
Delivery (CD) repositories, such as Git, frequently. Continuous delivery is a practice that
enable developers to produce software in short cycles.
VM build executor A OCI Compute VM instance dedicated to run VB Studio builds. Only one
build can run on a VM build executor at a time. To learn more, see VM Build
Executors.
Build executor template A template that defines the operating system and the software installed on a
VM build executor. To learn more, see Build Executor Templates.
Docker image Defines the operating system and software packages your organization's
members need to run builds on a Docker executor. A Docker image can either
be imported from an external Docker registry or created from a build executor
template.
Docker deployment VM An OCI VM compute instance dedicated to run builds of jobs defined in VB
Studio projects.
Docker executor A VM executor is directly associated with a specific VM but a Docker executor
isn't. When a job is created, a Docker image is associated as a build template
with the job. Then, when the job's build is triggered, the build is run on any
Docker deployment VM.
Job (or build job) A configuration that defines your application's builds.
You can create a job to perform various actions, such as package artifacts,
run shell commands, run unit test scripts, and deploy application artifacts.
Build The result from a job’s run.
Pipeline A path or a chain of builds. A pipeline helps you run continuous integration
jobs and reduce network traffic.
Oracle Java Cloud Oracle Cloud service to deploy web applications to a public Oracle WebLogic
Service Server domain on Oracle Cloud.
Access VB Studio
You can access VB Studio using the latest version of the Chrome browser running on Mac OS
X and Windows. Other browsers and platforms are not supported.
To access VB Studio, you need the service URL, plus your identity domain name, username,
and password. If you’re a new user, you can sign in from the Oracle Cloud home page. If
you’re a returning user, you can find the service URL from several of the emails you received,
the ones with the subject Welcome to Oracle Visual Builder Studio or Verify your Oracle
Visual Builder Studio.
During the onboarding process, you'll receive a series of emails, including some optional ones:
1. After adding a user, the OCI administrator can choose to send an email to the new user:
1-4
Chapter 1
Access VB Studio
This email serves two purposes: to send the password reset URL and to provide the OCI
sign-in url. The Oracle Cloud account name in the email is in double quotes (myaccount). If
you bookmark the second URL in this email, the sign-in URL, you won't need the account
name for signing in.
2. After the OCI administrator assigns the VB Studio IDCS role to the new user, the user
receives this email:
This email shows the Oracle Cloud account name (myaccount), the sign-in URL for Oracle
Cloud, and the username (don.developer).
3. After the VB Studio organization administrator adds a new user to a VB Studio project, the
new user receives a verification email:
1-5
Chapter 1
Access VB Studio
The user needs to click on the verification link in this email to verify their email address to
the service.
4. After signing in to VB Studio for the first time, a new user will receive this Welcome email,
with the VB Studio sign-in URL:
After an existing user is added to a project, the user receives this email:
1-6
Chapter 1
Access VB Studio
The email contains project information such as the organization name (My Org), the project
name (VisualApp), the project's privacy setting (private), the name of the project owner
Alex Admin), a list of the project's members (on Developer), and the date and time that the
member was added to the project.
7. In the Instances tab, click Manage this instance and select Access service
instance.
The VB Studio Organization page opens, displaying all the projects you're a member of, as
well as your favorite projects, projects you own, and all your organization's shared projects.
You can also set up OCI connections, virtual machines, and your organization's properties.
Here's an example of the Organization page with some projects:
1-7
Chapter 1
What Are My Identity Roles?
11. Click the three vertical dots on the right, and select Manage instance access.
1-8
Chapter 1
What Are My Identity Roles?
1-9
2
Get Yourself Set Up
You can set your preferences, including your display name, email address, gravatar, and email
notifications, from the User Preferences page.
To get to this page, click the user avatar and select Preferences:
After setting your user preferences, you'll need to set up a Git client and decide whether to
display the news banner or hide it.
3. To the left of the User Preferences title, click to return to the last opened page.
2-1
Chapter 2
Update Your Email Address
6. To the left of the User Preferences title, click to return to the last opened page.
Here's how to create a Gravatar account and upload your Gravatar picture:
1. Open http://en.gravatar.com/ in your browser.
2. Click Create Your Own Gravatar.
3. Follow the on-screen instructions, enter the required details, and sign up.
Create your account with the same email address that you used to subscribe to Oracle
Cloud.
4. After activating your account, sign in to Gravatar.
5. Upload the avatar picture to your Gravatar account.
The picture uploaded to your Gravatar account is automatically displayed as your avatar
picture in VB Studio.
2-2
Chapter 2
Set Your Preferred Color Theme
4. To the left of the User Preferences title, click to return to the last opened page.
The page's color theme should reflect your preferred choice.
Tip:
You can also control this setting from within the Designer. Click Menu in the upper-
right corner of the Designer, then select Theme. See Tour the Designer.
See Customize a Web App's Appearance if you want to set a web app's color theme in the
Designer. You configure this setting for a visual application in the Settings editor, which is
accessed by clicking Menu in the upper-right corner of the Designer, then selecting Settings.
Note:
If your email address has changed, click the verification link in the email from VB
Studio if you want to receive VB Studio email notifications. If you don't do this, when
you go to the Profile tab under User Preferences, you'll see a Not Verified
message next to your email address. Click the Re-send email button next to the
error message and respond to that email when it reaches your inbox.
2-3
Chapter 2
Set Up a Git Client
3. To the left of the User Preferences title, click to return to the last opened page.
Tip:
You should also make sure that notifications from these email addresses aren't
blocked, filtered, or marked as spam:
• [email protected]
• [email protected]
• [email protected]
• [email protected]<realm_number>.com, such as
[email protected]
2-4
Chapter 2
Set Up a Git Client
Tip:
To find out the value of a variable, use the git config <variable> command:
git config user.name
2-5
Chapter 2
Set Up a Git Client
Note:
In 24.04.0, there is an important change in SSH-RSA handling. VB Studio no longer
supports the SSH-RSA (SHA1) signature scheme. This can be a problem for the old
OpenSSH client (OpenSSH_7.4p1) and some of the older clients (OpenSSL 1.0.2k-
fips). Modern clients, such as OpenSSH_8.9p1 Ubuntu-3ubuntu0.4, and OpenSSL
3.0.2, support rsa-sha2-512 and rsa-sha2-256.
Tip:
A key generated using ssh-keygen -t rsa would work as long as Git clone
operations are performed from inside the Git command line interface. However, if
you take that key out of the Git cli to use elsewhere, it won't work for several
services, including Oracle Cloud services and Azure. The recommended way to
generate a key is by always including the -m PEM switch, as in ssh-keygen -m
PEM -t rsa. This ensures that the key will work for most services, including
Azure and Oracle OCI.
2-6
Chapter 2
Set Up Token-Based Authentication
2. Open the public key file in a text editor, select the contents, and copy them to the
clipboard.
3. In VB Studio, click the user avatar and select Preferences.
4. Click the Authentication tab.
5. Click Add Key.
6. In the New SSH Key dialog box, enter a unique name and paste the SSH key that you
copied in Step 2.
7. Click Create.
8. To the left of the User Preferences title, click to return to the last opened page.
2-7
Chapter 2
Set Up Token-Based Authentication
Note:
If you're using curl to work with REST APIs and federated users in a multi-stripe
Oracle Cloud Applications environment, one approach is to authenticate with a
bearer token.
Bearer authentication (sometimes called token authentication) is performed by
sending a security token back to the server in every authorization header when
requesting protected resources. To pass the bearer token in the Curl authorization
header, add the following command line parameter to the Curl request:
For example, the following example shows the general format for sending a bearer
token with a Curl POST request. POST data is passed with the -d command-line
option, and the authorization header; the bearer token is passed with the -H
command-line option.
The format for a Curl GET request would be very similar, except it doesn't include -d
command-line option.
Create a Personal Access Token
To create a VB Studio authentication token:
1. Click your VB Studio user avatar and select Preferences.
2. Click the Personal Access Tokens tab.
3. Click + Access Token.
If you are an org administrator and see a warning message that you have reached the
maximum number of tokens allowed per user, to create more you can either click Dismiss
and then click the Delete icon to delete some of your existing tokens or click Open
Access Token Settings and change the maximum value for the entire organization.
If you aren't an org administrator and see the message about having too many tokens, you
can either click Dismiss and then click the Delete icon to delete some of your existing
tokens or ask one of the org administrators shown in the window to change the maximum
number of tokens allowed per user.
4. In Token Label, add a label for the token.
5. In Expiration, choose the expiration time period. You can choose from the list or set a
custom time.
6. Specify the permission scope:
• Read-only permissions of user: Gives you read-only access to all projects you are
part of.
• All user rights: Applies the token to all of your current project user permissions. This
doesn't include ability to create or delete tokens or modify any other profile
preferences.
2-8
Chapter 2
Set Up Token-Based Authentication
• Manually define advanced access level: Select a project and click in the
Membership and Permission field to select permissions that you want to assign to
the token.
7. Click Generate.
An email notification will be sent to the address of the user registered for the account. This
notification is sent for both expiring and non-expiring tokens.
8. Copy the token and paste it in a text file that you can access later. You won't be able to
access the token after the dialog is dismissed.
9. Click Dismiss.
You can view the details for each token you've created by selecting the token from the list
shown in the Personal Access Tokens tab and viewing the information in the Basic Details
and Scopes tabs.
Delete a Token
From the Basic Details tab, you can press the Delete Token button to delete a Personal
Access Token (PAT). This will remove any permissions granted by the token.
2-9
Chapter 2
Set Up Token-Based Authentication
After a token has been deleted, applications or scripts that use that token will no longer have
access to the VB Studio API.
Automatic Token Maintenance Performed by VB Studio
VB Studio tracks when tokens were last used. You can see this information in the Basic
Details tab, next to the Last Used label. If an unexpired token isn't used for 400 days, VB
Studio will automatically delete it. VB Studio also deletes expired tokens 30 days after they
expire. In both cases, VB Studio gives token owners plenty of advance notice first:
• The Basic Details tab for the selected token displays an "Expires Soon" status label 5
days before the actual expiration date. The actual expiration date is listed in the panel.
• The Basic Details tab for the selected token displays an "Deletion scheduled" status label
next to a token that hasn't been used for 395 days.
2-10
Chapter 2
Set Up Token-Based Authentication
• An email notification is sent to the user 5 days before the user’s personal access token is
set to expire.
Then, if an unused token isn't used in the allotted time, VB Studio revokes it.
• An email notification is sent to the user 395 days after its last use (5 days before it will be
automatically removed due to 400 days of non-use).
2-11
Chapter 2
See the News Banner
banner, use the Expand or Collapse icons. To close the banner, click Close .
If the banner isn't visible, here's how to enable it:
1. On the User Preferences page, click the General tab.
2. Select the Show News Banner on Organization and Project Home check box.
3. To the left of the User Preferences title, click to return to the last opened page.
2-12
Part II
Common Tasks
You'll perform most of these common tasks as you create and work with projects in Oracle
Visual Builder Studio.
Topics:
• Work with Projects
• Manage Source Code Files with Git
• Create and Use Environments
• Use Workspaces and the Designer
• Build Your Applications
• Deploy and Manage Your Applications
3
Work with Projects
After signing in to Visual Builder Studio (hereafter called VB Studio), you can create a project,
open a shared project, or open a project you're a member of.
After creating a project, you can add users, set up environments, and manage the projects.
Optionally, you can start creating issues to track your work, and defining Agile boards and
sprints to manage your team's progress.
What Is a Project?
A project collects all the people, tools, and processes you need to complete a unit of work in
VB Studio.
A unit of work might be a software effort dedicated to a new payroll app for use internally, or
perhaps a new version of your company's primary external offering. Regardless, you use a
project to host source code files, track issues, collaborate on code, and build and deploy your
applications. A project can host multiple Git repositories, and each Git repository can have
multiple branches and hundreds of code files.
Note:
If your team is extending Oracle Cloud Applications, the recommendation is to use a
single project for all your extension work within a single environment family. (An
environment family refers to all the test, development, and production instances you
use for your Oracle Cloud Applications work. See Extension Best Practices if you
want to learn more.)
Within the project, you can require team members to create a merge request for each branch
of the Git repository and ask reviewers to review and approve the code. You can create and
configure multiple build jobs to generate different project artifacts that you can deploy to Oracle
Cloud or your on-premise web server.
3-1
Chapter 3
What Is a Project?
Note:
In any project, an organization administrator can
assign himself or herself the Project Owner role.
This will grant them the same project
permissions as any other project owner. An
organization administrator can't even open a
project unless they are a member and, even
then, it is the project membership type that
determines their project permissions.
3-2
Chapter 3
What Is a Project?
To discover Do this:
If you’re the organization In the branding bar, click the user avatar, then click Contacts. If you see your
administrator name listed under Organization Admins, you’re assigned the Organization
Administrator role.
3-3
Chapter 3
What Is a Project?
The ability to request project access and membership is provided for non-administrative users.
That is, it is intended to be used by individuals who aren't project owner, who will receive the
request and grant (or deny) access and membership.
If you can see the shared or discoverable private project in the project list but aren't a member:
1. Click the Action menu and select the Request Membership option to request access
to the project.
2. Select one of the four membership roles and then click Request.
You're required to select one of the memberships. If you don't, the request won't be sent
and you'll see a message reminding you to select a membership type.
3. VB Studio sends an email to the project owner(s). The email contains a link to a page that
prompts the project owner to approve or reject the request.
3-4
Chapter 3
What Is a Project?
If the project has multiple project owners that get the email, after the first owner responds,
subsequent owners that click on the link will see a message that the request has already
been addressed and it has already been approved/rejected by another project owner.
4. If the project owner approves the membership request, this screen will be displayed.
5. If the project owner rejects the membership request, this screen will be displayed.
6. You'll receive an email that tells you if your request was approved or denied. This email
looks like the confirmation mail you get when a project owner manually adds you from the
Team tab on the Project page.
7. Begin to work on the project.
3-5
Chapter 3
What Is a Project?
Note:
In any project, an organization administrator can assign himself or herself the Project
Owner role. This will grant them the same project permissions as any other project
owner. An organization administrator can't even open a project unless they are a
member and, even then, it is the project membership type that determines their
project permissions.
Here's what you can do in VB Studio pages, depending on your project membership status:
Create, edit,
and delete
snippets
Merge
Requests
3-6
Chapter 3
What Is a Project?
Add comments
to wiki pages
but cannot
change page
content
3-7
Chapter 3
What Is a Project?
Create, edit,
and delete
releases
Docker
View a Docker
registry
Write to a
Docker registry
Projects
Access to
project
administration
pages for all
features, team
administration
3-8
Chapter 3
What Is a Project?
Note:
In any project, an organization administrator can assign himself or herself the Project
Owner role. This will grant them the same project permissions as any other project
owner. An organization administrator can't even open a project unless they are a
member and, even then, it is the project membership type that determines their
project permissions.
Workspaces Panel
Here's what you can do in the Workspaces panel, depending on your project membership
status:
Environments Panel
Here's what you can do in the Environments panel, depending on your project membership
status:
3-9
Chapter 3
What Is a Project?
Repositories Tab
Here's what you can do on the Repositories tab, depending on your project membership
status:
Statistics Tab
Here's what you can do on the Statistics tab, depending on your project membership status:
3-10
Chapter 3
What Is a Project?
Team Tab
Here's what you can do on the Team tab, depending on your project membership status:
Note:
In any project, an organization administrator can assign himself or herself the Project
Owner role. This will grant them the same project permissions as any other project
owner. An organization administrator can't even open a project unless they are a
member and, even then, it is the project membership type that determines their
project permissions.
Visit the topics listed under On This Page, to the right, to see what privileges come with each
project membership.
3-11
Chapter 3
What Is a Project?
Both Developers and Developer Limiteds can use the VB Studio UI to create repositories, but
must use the Git command line to delete the repositories created with the UI. Project Owners
can delete repositories by using the Project Administration pages.
Non-members can clone a Git repository and make commits to it, but they can't push the
commits to the remote Git repository.
3-12
Chapter 3
What Is a Project?
A Project Owner can approve or reject a merge request, merge branches, or close a merge
request, even if he or she isn't assigned the Reviewer role.
3-13
Chapter 3
What Is a Project?
View job
configurations
Edit job
configurations
3-14
Chapter 3
What Is a Project?
Download
artifacts
View logs,
including build
console, audit,
and Git polling
logs
Disable or
delete a job
Create a
pipeline
Configure a
pipeline
View a
pipeline’s
instances
Delete a
pipeline
3-15
Chapter 3
What Is a Project?
Project owners are the only project team members who can delete environments that were
created in a different identity stripe. If a project member with the Developer role attempts this
operation, they'll see an error message informing them that they can't delete an environment
that has resources from another identity stripe.
An IDCS resource cannot be removed from an environment if the instance is in another identity
stripe. Nobody can remove an IDCS resource from a different identity stripe from an
environment, but the project owner can still delete the entire environment. In addition, an IDCS
resource from a second identity stripe cannot be added into the same environment.
Managing a workspace includes such tasks as renaming, assigning a new owner to, and
deleting a workspace.
Update an issue
Create and
configure issue
products
Create and
configure issue
tags
3-16
Chapter 3
What Is a Project?
Use Scrum
board
Use Kanban
board
View burndown
charts and
sprint reports
When you create a board, you become the owner of the board. As the board owner, you have
special privileges over the board and sprint-related actions:
Start a sprint
Delete a sprint
3-17
Chapter 3
What Is a Project?
View a wiki
page
Edit a wiki page
By default By default
Delete a wiki
page
By default By default
The Project Owner (or member, if allowed) can grant edit and delete rights over a wiki page to
all users, or restrict edit access to members or Project Owners only.
Add comments
A non-member can clone the snippet's repository and make commits, but can't push the
commits to the snippet's Git repository.
3-18
Chapter 3
What Is a Project?
Delete a snippet
Open a Project
You can open a project only if you're a member or an owner, or if the project is shared. To open
a project, click its name as it appears on the Organization page. To search for a project, use
the filter toggle buttons or the search box:
To quickly access a project, click Favorite and add it to your favorites list. To see your
favorite projects, click the Favorites toggle button.
If you’re invited to join a project, you’ll find the project link in the email you received when you
were added to the project.
3-19
Chapter 3
What Is a Project?
To switch to another project from an open project, click next to the project name. From the
menu, click the project name to open it.
After opening the project, you land on the Project Home page.
3-20
Chapter 3
Create a Project
Create a Project
From the Organization page, you can create different types of projects:
• Empty Project
• With an Initial Git Repository
• From an Exported Project
• From a Project Template
• Without an Environment
Empty Project
If you haven’t decided which applications you want to upload, or want to start from scratch,
create an empty project that has no pre-configured Git repository or any other artifact:
b. Select the membership (Project Owner, Developer Full Access, Developer Limited
Access, or Contributor) that the members you're adding will have in the project:
See What Are Project Memberships? for more information about each membership.
c. Click Add.
d. Repeat substeps a, b, and c for different users and groups with various membership
types, if needed.
9. Click Finish.
3-21
Chapter 3
Create a Project
b. Select the membership (Project Owner, Developer Full Access, Developer Limited
Access, or Contributor) that the members you're adding will have in the project:
See What Are Project Memberships? for more information about each membership.
c. Click Add.
d. Repeat substeps a, b, and c for different users and groups with various membership
types, if needed.
9. In Initial Repository, specify how to initialize the Git repository.
• If you prefer a blank repository or want to push a local Git repository to the project,
select Empty Repository.
• Some Git clients can’t clone an empty Git repository. Select Initialize repository with
README file if you’re using such a client. VB Studio creates a readme.md file in the
Git repository.
You can edit the contents of the readme.md file after creating the project, or delete the
file if you don’t want to use it.
• To import a Git repository from another platform such as GitHub or Bitbucket, or from
another project, select Import existing repository.
3-22
Chapter 3
Create a Project
In the text box, enter the external Git repository's URL. If the repository is password
protected, enter the credentials in Username and Password. Note that VB Studio
doesn’t store your credentials.
10. Click Finish.
After you have all the required input values, import the project:
1. On the Organization page, click + Create.
2. On the New Project wizard's Project Details page, in Name and Description, enter a
unique project name and a project description.
3. In Security, select the project's privacy setting:
a. Select Private to restrict access to project members only.
Select the Discoverable checkbox to allow organization members that aren't org
admins or project members to see basic information, such as name and owner contact
information, about your private project. Private projects that aren't discoverable won't
be exposed to non-members.
b. Select Shared to make the project code, wiki docs, tasks, and builds available to
anyone inside your organization.
4. Click Next.
5. On the Template page, select Import Project, and click Next.
6. To import the project from an OCI Object Storage bucket, in the Project Properties page's
Storage Connection section, in Account Type, select OCI and enter the required details:
a. In Tenancy OCID, enter the tenancy's OCID copied from the Tenancy Details page.
b. In User OCID, enter the user's OCID value (for a user that can access the bucket).
c. In Home Region, select the OCI account's home region.
d. In Private Key, enter the user's private key (for a user who can access the bucket).
e. In Passphrase, enter the passphrase used to encrypt the private key. If a passphrase
wasn't used, leave the field empty.
3-23
Chapter 3
Create a Project
Note:
If the project administrator selected the Remember checkbox when the OCI
storage connection was established during a previous export operation, the
credential fields in this step will automatically be populated with the saved data.
See step 14 in Export Project Data to an OCI Object Storage Bucket.
7. To import the project from an OCI Object Storage Classic container, in Account Type,
select OCI Classic. Then, enter the required details:
a. In Service ID, enter the value copied from the last part of the REST Endpoint URL
field on the Service Details page.
For example, if REST Endpoint URL's value is https://
demo12345678.storage.oraclecloud.com/v1/Storage-demo12345678, enter Storage-
demo12345678.
b. In Username and Password, enter the user credentials for a user who can access the
archive file.
c. In Authorization URL, enter the URL copied from the Service Details page's Auth V1
Endpoint field:
http://storagetria01234-usoracletria12345.storage.oraclecloud.com/auth/
v1.0.
8. Click Next.
9. On the Project Properties page, from Wiki Markup, select the project’s wiki markup
language.
Project team members use the markup language to format wiki pages and comments.
10. In Container, select the storage bucket or the container where the data was exported.
11. In File, select the exported file.
a. Click Add Members and select users or groups to add to the project, from the list
displayed, if you know they may work in this project.
b. Select the membership (Project Owner, Developer Full Access, Developer Limited
Access, or Contributor) that the members you're adding will have in the project:
See What Are Project Memberships? for more information about each membership.
c. Click Add.
d. Repeat substeps a, b, and c for different users and groups with various membership
types, if needed.
14. Click Finish.
3-24
Chapter 3
Create a Project
If the import fails, an empty project will be created. You can try to import the data again without
creating a project. To check the import log, under Project Settings, in the Data Export/Import
page's History tab.
3-25
Chapter 3
Create a Project
Note:
Instead of creating a project using the template, you should click the Open in
Visual Builder Studio icon (or link) in the Oracle Cloud Application you are
extending and follow the steps in the New App Extension wizard.
See Create a Simple Extension.
• To create a project from a private template, select Private Template, and follow the
instructions in the next step.
5. In the Project Properties dialog:
• If you previously selected the Visual Application template, enter the Git Repository
Name, select the Development VB Instance and Visual Application template, and enter
the Workspace Name and Working Branch Name.
• If you previously selected the Application Extension template, enter the Extension
Name, Extension Id, and Workspace Name, select the Oracle Cloud Applications
Development Instance and Base Application, and enter the Git Repository Name and
Working Branch Name.
3-26
Chapter 3
Create a Project
6. Click Next.
7. In the Team dialog:
a. Click Add Members and select users or groups to add to the project, from the list
displayed, if you know they may work in this project.
3-27
Chapter 3
Create a Project
b. Select the membership (Project Owner, Developer Full Access, Developer Limited
Access, or Contributor) that the members you're adding will have in the project:
See What Are Project Memberships? for more information about each membership.
c. Click Add.
d. Repeat substeps a, b, and c for different users and groups with various membership
types, if needed.
8. Click Finish.
In the new project, these artifacts are copied from the project template:
Artifacts Description
Git repositories The project template's defined Git repositories are copied to the new project.
You can use the copied Git repositories and modify their files, or delete them.
In the left navigator, click Git to view the copied Git repositories.
Build jobs and pipelines All the project template's build jobs and pipelines are copied to the new
project. You can change these jobs, create their copies, or delete them.
In the left navigator, click Builds to view the copied jobs and pipelines.
Wiki pages All the project template's wiki pages are copied to the new project. You can
change the wiki pages or delete them.
In the left navigator, click Wiki to see the copied wiki pages.
Announcements All the project template's active project announcements are copied to the new
project. You can’t edit the copied announcements since they are read-only,
but you can activate or deactivate them.
In the left navigator, click Project Administration and then click Links to
see the copied link rules.
Without an Environment
Projects almost always require an environment against which you develop and deploy your
visual application—but you can create a project without an environment simply to explore VB
Studio's visual development capabilities within the Designer.
Note:
When your project doesn't have an environment, you won't be able to create
business objects or deploy (share and publish) your app—although you can click
Publish in the header to merge your changes to the default branch (main) in the
project's Git repository. To explore VB Studio without any restrictions, you need to
add a Visual Builder instance to your VB Studio instance's environment.
3-28
Chapter 3
Create a Project
2. In the New Project wizard's Project Details dialog, in Name and Description, enter a
unique project name and a project description.
3. In Security, select the project's privacy:
a. Select Private to restrict access to project members only.
Select the Discoverable checkbox to allow organization members that aren't org
admins or project members to see basic information, such as name and owner contact
information, about your private project. Private projects that aren't discoverable won't
be exposed to non-members.
b. Select Shared to make the project code, wiki docs, tasks, and builds available to
anyone inside your organization.
4. Click Next.
5. In the Template dialog, select the Visual Application project template, and click Next:
6. In the Project Properties dialog, fill out or select the following:
a. In Git Repository Name, enter the name of the repository where your application will
be stored or accept the default name.
b. In Development VB Instance, select No Environment to create a Visual Application
workspace without a specific environment.
Note:
If this option isn't available to you, it means that this functionality has not
been enabled in your environment. File a service request with Oracle Cloud
Support.
b. Select the membership (Project Owner, Developer Full Access, Developer Limited
Access, or Contributor) that the members you're adding will have in the project.
c. Click Add.
d. Repeat substeps a, b, and c for different users and groups with various membership
types, if needed.
9. Click Finish.
3-29
Chapter 3
Set Project Protection
3-30
Chapter 3
Manage Project Users and Groups
Project users and groups are managed from the Project page's Team tab by performing these
administrative tasks:
Change a user’s or a To change a user’s or a group's project membership, click the Change
group's project
Membership icon . From the dropdown, select a new project membership
membership
(Contributor, Developer, Developer Limited, or Project Owner).
Remove a user or a Before removing a user, change the ownership of any assigned issues and
group from the project merge requests to another user.
Select the user or group you want to remove, then click Remove .
Note that you can't remove a user from a group. To do that, you need to
contact your organization administrator.
3-31
Chapter 3
Manage Project Users and Groups
Action How To
Create a VB Studio local
group 1. In the left navigator, click Organization .
2. Click the Groups tab.
3. Click + Create Group.
4. In Type, if not already selected, select the VB Studio tile.
5. In Name and Description (optional), enter the group's name and
description.
6. To see all members you can add, click the members list. Users who are
assigned the DEVELOPER_ADMINISTRATOR or the
DEVELOPER_USER IDCS role are displayed.
7. From the users drop-down list, select users to add to the group.
If you can't find a particular user, enter the user's name or username in
the search box. As you type, the drop-down list displays users matching
the search term.
8. Click Create.
3-32
Chapter 3
Manage Project Users and Groups
Action How To
Add members to an
existing VB Studio local 1. In the left navigator, click Organization .
group you've created
2. Click the Groups tab.
3. Locate the VB Studio group and click Add Member to the Group .
4. Click the members drop-down list.
5. Select the user from the drop-down list.
If you can't find the user, enter the user's name or username in the
search box. As you type, users matching the search term are displayed.
6. Click Add.
7. In the Members tab, verify the added members.
8. Click Close.
3-33
Chapter 3
Manage Project Users and Groups
Action How To
See the projects a local
group is added to 1. In the left navigator, click Organization .
2. Click the Groups tab.
3. Locate the VB Studio group and click the group's Projects column to see
the list of projects.
4. Click Close.
3-34
Chapter 3
Manage Project Users and Groups
3. Select the Extract members from groups checkbox (default) to extract individual
members from groups or show the groups only.
4. Under Export format, select one of the following:
3-35
Chapter 3
What Else Can You Do with Your Project?
Developer","[email protected]","5e99c123bab8c0b3e8a529a76ff71d3a
","Developer Full Access","user"
• JSON (JavaScript Object Notation) shows the users list in the following format (line
breaks added for readability):
[{"username":"alex.admin","fullname":"Alex
Admin","email":"[email protected]",
"gravatar":"f16503adcb57bab87af69512d650748e","membership":["Project
Owner"],"type":"user"},
{"username":"mary.jane","fullname":"Mary
Jane","email":"[email protected]",
"gravatar":"834a227063b4c50c5b0af3564b99b2d5","membership":["Project
Owner"],"type":"user"},
{"username":"clara.coder","fullname":"Clara
Coder","email":"[email protected]",
"gravatar":"a8b5f1d293f46f48d7011c76120a2917","membership":["Developer
Limited Access"],"type":"user"},
{"username":"cody.contributor","fullname":"Cody
Contributor","email":"[email protected]",
"gravatar":"277b45bbeaa341d3de14dfeb19f6b8d7","membership":
["Contributor"],"type":"user"},
{"username":"don.developer","fullname":"Don
Developer","email":"[email protected]",
"gravatar":"5e99c123ba18c0b3e8a529a76ff71d3a","membership":["Developer
Full Access"],"type":"user"}]
3-36
Chapter 3
Manage Projects
• You may want to use the project's Maven repository for managing binary files and
dependencies (see Manage Binaries and Dependencies with Maven) or use the project's
NPM registry to download and/or publish private Javascript packages using Node.js/NPM
command line tools (see Use the Project's NPM Registry).
• You may want to use webhooks to integrate use event notifications with Jenkins, GitHub
applications, Slack, and PagerDuty (see Send Notifications to External Software Using
Webhooks) or link external Docker registries to your project (see Access External Docker
Registries).
Or, you may simply want to continue on your current path and see how to set up Git
repositories, if needed (see Manage Source Code Files with Git).
Manage Projects
As an Oracle Visual Builder Studio (VB Studio) project owner, you can perform various project-
wide actions, such as edit a project’s name and description, configure the project as a project
template, create announcements, set project tags, manage repositories, and configure link
rules.
Delete a Project
It is a good practice to delete inactive projects when they are no longer needed. Doing this
frees up storage space and cuts down the overall number of projects in the organization,
thereby saving resources.
There are two places in the VB Studio interface where project owners (and organization
administrators) can delete projects:
• Delete a Project from the Project Administration Properties Page
• Delete a Project from the Organization Page
3-37
Chapter 3
Manage Projects
3. (Optional) In the Projects tab, select Owner to show a project list that contains all the
projects that you own.
If you skip this step, you'll notice that some projects don't display an action menu. You
don't own those projects.
Organization administrators have additional deletion options. From the project list, they can
select a single project before clicking Action or Update # Selected Projects for a single or
multiple projects, where these options are available, depending on the project(s) selected:
• Delete an active project
• Postpone the permanent deletion of a deleted project
• Remove a deleted project (or projects) forever
• Undelete a deleted project
3-38
Chapter 3
Manage Projects
You can select the Remember check box before you connect to Object storage bucket to
direct VB Studio to remember the input and export data you entered. See step 14 in Export
Project Data to an OCI Object Storage Bucket or step 14 in Import Project Data from an
OCI Object Storage Bucket.
• If your organization uses VB Studio with OCI Classic, you'll need to contact the identity
domain administrator or the OCI Object Storage Classic administrator to get the required
input values to set up the connection to the OCI Object Storage Classic container.
The values you need are explained in the import and export sections for OCI Object Storage
buckets and OCI Object Storage Classic container in the sections that follow.
3-39
Chapter 3
Manage Projects
Note:
The passwords
are securely
exported and
imported as
keystore binary
data.
3-40
Chapter 3
Manage Projects
who can read from or write to it. It may be a common bucket that's used for all the
organization's projects, but more likely it's separate buckets for each project, which allows
archive files to be organized without being grouped with archive files from other projects.
Note:
If you are an Oracle Cloud Applications customer, contact Oracle Support for the
details you'll need to complete steps 6-13.
12. In Compartment OCID, enter the compartment's OCID copied from the Compartments
page.
13. In Storage Namespace, enter the storage namespace copied from the Tenancy Details
page.
14. Click Connect.
3-41
Chapter 3
Manage Projects
Tip:
Select the Remember check box before you press the Connect button if you
want VB Studio to remember the OCI credential input values you entered.
After the export operation starts, the fields in the OCI credentials window that
were saved are cleared. The data from those fields has been saved, but it is
cleared to protect the administrator's OCI information while the export operation
is in progress. After the operation concludes, the saved OCI information will be
filled in and visible once again. Credentials are saved only after successfully
connecting to the storage. This prevents saving bad credentials.
Credentials are also saved separately for each user. so even if the same storage
account is being connected to, each user has a distinct set of credentials that
enable access by that user only.
To clear the saved OCI credential information, you need to explicitly uncheck the
Remember check box and reconnect. This will clear all the fields.
Only OCI credentials can be saved; OCI Classic credentials cannot be saved.
18. In Storage Container, select the bucket to export the project data.
19. In Storage Object, if required, update the default .zip file name.
21. In the Confirm Project Export dialog box, select the Export project data check box, and
click Yes.
22. In the Exporting Project page, expand Steps to see the status of each module.
After the export is complete, the Recent Activities feed on the Project Home page (and the
History tab of the Data Export/Import page) display messages about the export action.
3-42
Chapter 3
Manage Projects
12. In Compartment OCID, enter the compartment's OCID copied from the Compartments
page.
13. In Storage Namespace, enter the storage namespace copied from the Tenancy Details
page.
14. Click Connect.
Tip:
Select the Remember check box before you press the Connect button if you
want VB Studio to remember the OCI credential input values you entered.
After the import operation starts, the fields in the OCI credentials window that
were saved are cleared. The data from those fields has been saved, but it is
cleared to protect the administrator's OCI information while the import operation
is in progress. After the operation concludes, the saved OCI information will be
filled in and visible once again. Credentials are saved only after successfully
connecting to the storage. This prevents saving bad credentials.
Credentials are also saved separately for each user. so even if the same storage
account is being connected to, each user has a distinct set of credentials that
enable access by that user only.
To clear the saved OCI credential information, you need to explicitly uncheck the
Remember check box and reconnect. This will clear all the fields.
Only OCI credentials can be saved; OCI Classic credentials cannot be saved.
18. In Storage Container, select the bucket to import the project data from.
19. In Storage Object, select the .zip file name of the exported data.
3-43
Chapter 3
Manage Projects
21. In the Confirm Project Import dialog box, read and verify the container and object details,
select the Import project data check box, and click Yes.
22. In the Importing Project page, expand Steps to see the status of each module.
Note:
If you are an Oracle Cloud Applications customer, contact Oracle Support for the
details you'll need to complete steps 6-13.
Here's how to export your project's data to an OCI Object Storage Classic container:
1. Open the VB Studio project.
3-44
Chapter 3
Manage Projects
13. In Storage Container, select the container to export the project data.
14. In Storage Object, if required, update the default .zip file name.
16. In the Confirm Project Export dialog box, select the Export project data check box, and
click Yes.
17. In the Exporting Project page, expand Steps to see the status of each module.
After the export has been completed, the Recent Activities feed on the Project Home page
and the History tab of the Data Export/Import page will display messages about the export
action.
3-45
Chapter 3
Manage Projects
13. In Storage Container, select the container to import the project data from.
14. In Storage Object, select the .zip file name of the exported data.
3-46
Chapter 3
Manage Projects
Manage Announcements
Project announcements are messages displayed on the Project Home page, between the
Environments panel and the Recent Activity feed:
3-47
Chapter 3
Manage Projects
Action How To
Create an 1. On the Announcements page, click + New Announcement.
announcement
2. In Name and Contents, enter name and announcement’s text.
You can use the project’s wiki markup to format the text.
3. Upload an icon, if necessary. The icon's size must be 48x48 pixels.
4. Click Done.
Copy an announcement Instead of creating an announcement, you can copy the contents and icon of
an existing announcement, and edit it.
1. In the Announcements list, select the announcement to copy.
2. Click Copy Announcement.
3. Edit the details in the Create Announcement page.
4. Click Done.
3-48
Chapter 3
Manage Projects
Action How To
Deactivate or activate an If you don’t want to display an announcement and don’t want to delete it
announcement either, you can deactivate it. Deactivated announcements aren’t visible on the
Project Home page. Later, if you want, you can activate it and make it visible.
1. In the Announcements list, select the announcement.
2. Click Deactivate or Activate.
The deactivated announcement will be greyed-out in the Announcements
list.
Action How To
Create a project tag 1. In the Tags page, click New Tag.
2. In Tag Name, enter a unique name and press the Enter key.
The tag name must contain only letters and numbers.
Delete a tag You can’t delete a tag if artifacts refer to it. First, remove all artifacts that refer
to the tag or remove the tag from those artifacts, and then remove the tag.
In the Tags page, to the right of the tag name, click Delete .
3-49
Chapter 3
Manage Projects
Usage statistics for your project's components are displayed in an easy-to-read page.
Action How To
Create an RSS/ATOM 1. On the RSS/ATOM Feeds page, click + New Handler.
Feeds handler
2. In Name, enter the name of the handler.
3. In URL, enter the URL of the feed.
4. From Display Type, select the feed’s display type.
5. In Fetch Interval, enter the feed’s fetch interval. By default, the interval is
set to 1 day.
For the fetch interval period, the feed results are cached. All requests
during the interval period retrieve the cached results. When the time
expires the cache is cleared. The next request would check for the
cached results and not find them and proceed to fetch a new copy to be
cached.
6. Click Done.
3-50
Chapter 3
Manage Projects
Action How To
Test a feed handler 1. On the RSS/ATOM Feeds page, select the feed.
2. Click Test .
3. Click Done.
If the test is successful, the status icon changes from Untested to Tested
. If the test fails, the status icon changes to Failed .
View logs 1. On the RSS/ATOM Feeds page, select the feed.
2. Click Logs.
3. Click Done.
In the Logs page, all Request and Response logs of each test are available.
Select the date-time stamp in the left list of the test to view its logs.
Edit a feed’s handler 1. On the RSS/ATOM Feeds page, select the feed.
2. Edit the fields on the left.
3. Click Done.
2. Click Remove or .
3. In the Remove ATOM/RSS Handler dialog box, click Yes to confirm.
4. Click Done.
3-51
Chapter 3
Manage Projects
Action How To
Create a link rule 1. On the Links page, click + Create Link.
2. In Name, enter a name.
3. In Pattern, enter the RegExp link rule pattern.
4. In URL, enter the link URL.
You can also use placeholders:
• Use {project} to insert the project ID.
• Use {organization} to insert the organization ID.
• Use $& to insert the entire matching text, or use $1, $2, $3, and so
on to insert text of matched groups. For more information, see
http://www.regular-expressions.info/brackets.html.
5. To test the rule, expand Test and Test Value, enter a test value. Verify
the result link in Test Result.
6. Click Done.
3-52
Chapter 3
Manage Projects
Action How To
Copy a link rule 1. On the Links page, click + Copy Link.
2. On the Create Link page, edit the name, RegExp link rule pattern, and
the URL of the link with parameters.
You can also use placeholders:
• Use {project} to insert the project ID.
• Use {organization} to insert the organization ID.
• Use $& to insert the entire matching text, or use $1, $2, $3, and so
on to insert text of matched groups. For more information, see
http://www.regular-expressions.info/brackets.html.
3. To test the rule, expand Test and Test Value, enter a test value. Verify
the result link in Test Result.
4. To test the rule, in the Test section, click Test Value. Enter a value and
verify its result in Test Result.
5. Click Done.
Edit a link rule You can’t edit a built-in link rule. You can create a copy of built-in rule and edit
it, and if required, disable the original pre-configured rule.
On the Links page, in the link rule list on the left, select the rule to edit its
details on the right.
Activate or deactivate a If deactivated, the text that matches the rule is not converted to a link.
link rule On the Links page, in the link rule list on the left, select the rule. Click
Activate or Deactivate. You can also select or deselect the Active check
box.
Delete a link rule You can’t delete a built-in rule.
On the Links page, in the link rule list on the left, select the rule. On the right
side of the page, click Delete.
3-53
Chapter 3
Manage Projects
You can define products, components, and releases from the Administration: Issue Tracking
page's Products tab.
Open the Issue Tracking page's Products tab:
Action How To
Create a product 1. Click + New Product.
2. On the Create Product page, in Name, specify a unique product name.
3. To create a release, click + New Release, and enter a release name.
To make a release the product's default release, click Mark as Default
.
4. To create a component, click + New Component, enter a component
name, and select its default owner (optional).
To make a component the product's default component, click Mark as
Default .
5. To create a Found In tag, click + New Found In Tag, and enter a tag
name.
6. Click Done.
To reorder a release or component, mouse over the name and drag-and-drop
it to move it up or down in the list.
View or edit a product From the products list, select the product. On the right side of the page, view
or edit its details.
Delete a product You can’t delete a product if any issues or merge requests refer to it. First,
remove all issues and merge requests that refer to the product, and then
remove the product.
3-54
Chapter 3
Manage Projects
• Single selection
• Multi selection
• Long text input
• Time and Date
• Check box
Here's how to manage custom fields:
Action How To
Create a custom field 1. Click + New Custom Field.
2. On the Create Custom Field page, in Name, specify a unique name.
3. In Label, enter the field's display label.
4. If you don’t want the custom field to appear as a parameter when new
issues are created, deselect the available for New Issues check box.
5. From the Type drop-down list, select the field type.
If you select Single Selection or Multi Selection, click + New Value to
specify the field’s options.
6. Click Done.
View or edit a custom From the custom fields list, select the field. View or edit its details, located on
field the right side of the page.
You can’t change a custom field's Name or Type. To edit the value of Name
or Type, remove and then recreate the custom field.
Hide a custom field From the custom fields list, select the field. Select the Obsolete (hidden)
check box, located on the right side of the page.
Delete a custom field
1. In the custom fields list, click Delete located to the right of the field
name.
2. In the Delete Custom Field dialog box, click Yes to confirm.
All existing issues will be automatically updated to remove the custom field.
3-55
Chapter 3
Manage Projects
After a project is created using a template, any updates made to the template project aren’t
reflected in the created project.
Visibility
Visibility defines who can access the template.
Type Description
Draft The project template is under design and isn’t available in the Templates page
of the Create Project wizard. No user can copy data from a draft template.
Private The project template is published and available to organization’s users, but
isn’t visible by name to all. It’s visible by name to members of the project
template.
A non-member user can access the template using the project template’s
private key and can copy data.
Shared The project template is published and is available to all users of the
organization.
Any user can copy data from this project.
Rules
Rules define data to be copied to the new project.
When you define a project as a project template, all rules are enabled but some cannot be
edited or added more than once.
Set this rule ... To copy this data to Can this rule be Can this rule be added
the new project: edited? more than once?
Build Jobs The project template's No No
build jobs and pipelines
Wiki Content The project template's No No
wiki pages
Links The project template's No No
link rules
Git Repository The specified Git Yes Yes
repositories and its
branches
External Git Repository The specified external Yes Yes
Git repository and its
branches
Announcements The project template's No No
announcements
Variables
Variables define user input. Based on the input, you can configure the template to change the
action or properties of data that’s copied to the new project.
3-56
Chapter 3
Manage Projects
6. To change the name and description of the project's template, enter a new name in Name
and description in Description.
7. To specify an icon for the template, in Icon, click Change, browse and upload an image of
size 48x48 pixels.
8. In the Variables and Rules sections, specify the variables and rules. Click Save when
you're done.
3-57
Chapter 3
Manage Projects
The project is now defined to be used as a template with the default rules and properties.
4. Click Edit.
5. On the Template page, in the Visibility section, select Private.
6. For the Private Key field, click Show. Note down the key value.
7. Update settings, add variables, and define rules, as desired.
8. Click Save.
Share the private key with users whom you want to use the project template and copy the
project data.
To generate a new private key, edit the project template, click Show, and then click
Regenerate. You may want to do this if you don't want users who already have the old key
value to copy the project data from the template.
Use this rule ... To copy: Can this rule be Can this rule be added
edited? more than once?
Build Jobs Build jobs and pipelines No No
of the project template to
the new project.
Wiki Content Wiki pages of the project No No
template to the new
project.
Links Link rules of the project No No
template to the new
project.
Git Repository Specified Git Yes Yes
repositories along with
its branches to the new
project.
External Git Repository Specified external Git Yes Yes
repository along with its
branches to the new
project.
Announcements Announcements of the No No
project template to the
new project.
3-58
Chapter 3
Manage Projects
Action How To
Add or edit a hosted Git 1. On the Properties page, in the Template section, click Edit.
repository rule
2. In the Rules section, to add the rule, click Add Rule. From the menu,
select Git Repository.
To edit an existing rule, to the right side of the Git repository rule, click
Edit .
3. In Source Repository, specify the name of the Git repository to be
copied.
4. In Repository Name, specify the new name of the Git repository. A .git
extension is automatically added if you missed it.
To use the new project name as the name of the Git repository, select the
Use target project name check box.
To allow a user creating a project from the template to change the default
Git repository name, select the Override name on create check box.
5. If necessary, in Replacements, define file name replacements of the Git
repository matching the specified criterion. This is useful if you want to
make a copy of an existing Git repository.
To add a new replacement rule, click Add new replacement.
a. From the In drop-down list, select the files where the replacements
apply.
You can specify all files, files matching an Ant pattern, or a specific
file.
b. In Replace, specify the search term.
c. In With, specify the replacement term.
You can select a pre-defined variable such as Project Id, Project
Name, Project URL Name, or Repository Name. To use a variable
defined in the Variables section, select Variable and then select the
variable name.
d. Click Save .
When you create a project using this template, the project creation wizard
searches through the specified files in the Git repository and replaces the
term with the specified value of the selected variables.
3-59
Chapter 3
Manage Projects
Action How To
Add or edit an external 1. On the Properties page, in the Template section, click Edit.
Git repository rule
2. In the Rules section, to add the rule, click Add Rule. From the menu,
select External Repository.
To edit an existing rule, to the right side of the Git repository rule, click
Edit .
3. In Repository URL, enter the external Git repository URL. To update a
rule, enter a new URL.
4. In Username and Password, enter credentials to access the external Git
repository.
For public Git repositories, don’t fill these fields.
5. In Repository Name, specify the new name of the Git repository. A .git
extension is automatically added if you missed it.
To use the new project name as the name of the Git repository, select the
Use target project name check box.
To allow the user that creates the project from the template to change the
default Git repository name, select the Override name on create check
box.
3. In Name, Display Name, Description, enter the variable's unique name, the display
name, and its description. Fill in the other fields of the variable and click Save .
Later, if you want to edit the variable, click Edit . Update the fields of the variable and
click Save . To delete the variable, click Remove .
3-60
Chapter 3
Manage Projects
Manage Repositories
The project owner can manage the Git, Maven, and linked Docker registries from the Project
Administration: Repositories page.
See these links to find out how to manage repositories:
• Create a Git Repository
• Maven Repository Administration
• Link an External Docker Registry to Your Project
3-61
4
Manage Source Code Files with Git
A Visual Builder Studio project uses hosted Git repositories to store source code files and to
provide version control. A project can have just one repository or it can have multiple ones. If
you’re developing visual applications or extensions using the Designer, this Git repository is
associated with your project as well as with your workspace, which is a private work area
within the Designer. Regardless of whether you’re developing applications inside or outside the
Designer, you can choose whether to use a Git repository provided by VB Studio, hosted on
Oracle Cloud, or to associate your project with an external Git repository (like GitHub).
This chapter describes how to manage your Git repository for non-Designer applications.
Interacting with a Git repository in the context of the Designer is described in What Is the
Designer?.
4-1
Chapter 4
Git Concepts and Terms
Term Description
Project Git repository A remote or hosted Git repository of your project.
A project can host multiple Git repositories. You can view all Git repositories
from the Repositories drop-down list on the Git page.
Local Git repository A cloned Git repository on your computer. If you're creating an extension, your
workspace orients you to the right Git repository. It also reflects the current
branch in the header.
External Git repository A Git repository that’s hosted outside the project. It could be a Git repository
of another project, or a Git repository available on another platform, such as
GitHub or Bitbucket.
4-2
Chapter 4
Git Concepts and Terms
Term Description
Revision A snapshot of the Git repository at a given time. The revision could be a
branch, tag, or commit. The Revisions menu displays the selected Git
repository's revisions (branches, tags, and commits).
When entering a search criteria, add a space at the end of the search term to
search for an exact match.
To search for a commit, enter the first three characters of the SHA-1
checksum hash of the commit in the search box at the top of the menu. The
commit that matches the search term appears next to Commit
To copy the revision name to the clipboard, click Copy . For example,
while viewing files of a particular commit, you can copy the SHA-1 checksum
hash of the commit.
Files view Displays the Git repository’s files and lets you manage them.
Logs view Lists and graphically displays the Git repository’s commit history.
Refs view Displays the Git repository’s branches and tags and lets you manage them.
Compare view Compares and displays the differences between revisions in a Git repository.
Migrate to Git
If you’ve been using a version control system such as CVS or Subversion and want to migrate
to Git, you can use the Git commands in the Git command-line interface to do so:
4-3
Chapter 4
Set Up a Git Repository
4-4
Chapter 4
Set Up a Git Repository
4-5
Chapter 4
Set Up a Git Repository
You can find the URL for the remote repository from the Project Home page's
Repositories tab. From the Clone drop-down list, click Copy to clipboard to copy the
URL, then paste it to the command line:
git clone <SSH/HTTPS repository URL>
You must be connected to the Internet and to the remote repository to check out a branch
locally. This is required.
2. Enable LFS for the local Git repository:
git lfs install
This is required because the + File button on the Git page can't be used to upload or add a
binary file directly in a remote Git repository. The only way to add a binary file is through a
cloned repository.
3. Specify the file(s) to track:
git lfs track *.bin
4. Stage the files to be committed:
git add .
git add .gitattributes
5. Commit the files to the local repository:
git commit -A -M "Initial commit using LFS"
6. Push the commits to the remote repository:
git push origin main
When a binary file is pushed to a remote Git repository, it's stored on the VB Studio-
connected OCI Object Storage bucket. A reference is added to the Git repository, not to
the file.
If a connection to the OCI Object Storage bucket can't be made, you'll see an error
message that indicates storage hasn't been enabled.
When a Git repository that uses Git LFS is deleted, its binary files on OCI Object Storage
will also be deleted.
4-6
Chapter 4
Set Up a Git Repository
4-7
Chapter 4
Set Up a Git Repository
The external repository is now available on the Git page and in the Project Home page's
Repositories tab.
When you add an external Git repository, VB Studio shows two URLs in the repository's Clone
drop-down menu:
Use the URL with the external address to access the repository directly. You may want to use
this URL to access the repository's updates immediately, but you'll need to enter credentials to
access a private repository. Use the URL with the internal address to access the mirrored
repository. You'll want to use this URL to access a private repository because it doesn't require
credentials.
4-8
Chapter 4
Set Up a Git Repository
4-9
Chapter 4
Set Up a Git Repository
4-10
Chapter 4
Set Up a Git Repository
If the directory into which you want to clone the repository isn't empty, you'll need to create
a new subdirectory and clone the repository into it. You can only perform a cloning
operation into an empty directory.
5. Using the Git client, clone the project’s Git repository.
For example, if you’re using the Git CLI, use the git clone <repository-ssh-url>
command:
git clone ssh://
usoracle22222.john.doe%[email protected]/developer1111-
usoracle22222_myproject/developer1111-usoracle22222_myproject.git
If you've already cloned the Git repository to your computer using HTTPS, use the git add
remote command to add the SSH URL of the Git repository:
git remote add ssh-origin ssh://
usoracle22222.john.doe%[email protected]/developer1111-
usoracle22222_myproject/developer1111-usoracle22222_myproject.git
6. Commit the updated files to the cloned Git repository.
7. Push the commit from the cloned Git repository to the hosted Git repository:
git push ssh-origin main
Note:
If you have user rights to read and write to Git for all projects you are a member of,
you can create a token using the All User Rights option; however, be aware that any
token with this scope won't provide a user with the ability to create/delete tokens or
modify any other profile preferences settings.
1. From your VB Studio preferences, generate an authentication token for your project with
both Read and Write Git permissions. See Set Up Token-Based Authentication.
2. Open the Git client.
3. Navigate to the directory where you want to clone the remote Git repository.
If the directory into which you want to clone the repository isn't empty, you'll need to create
a new subdirectory and clone the repository into it. You can only perform a cloning
operation into an empty directory.
4. Using the Git client, clone the project’s Git repository.
For example, if you’re using the Git CLI, enter the following git clone command. You'll be
prompted to enter your username and password. When prompted for your password, enter
your personal access token instead of a password.
4-11
Chapter 4
Add and Manage a Git Repository's Files
Username: YOUR_USERNAME
Password: YOUR_PERSONAL_ACCESS_TOKEN
You could also enter a command like this, using the username and token in a git clone
command with this format:
You could even enter a command like this, using just the token in a git clone command
with this format:
Tip:
Use <username>:<personal_access_token> if the specified user owns the token.
If the user doesn't own the token, an Auth error will be encountered.
Use just <personal_access_token> when the user is the one who owns the
token.
The username and token from the git clone command may be cached, so you may not be
prompted for them. If you are, enter the token for the password, as you did previously.
4-12
Chapter 4
Add and Manage a Git Repository's Files
2. From the Repositories drop-down list, select the Git repository. From the Revisions
drop-down list, select the branch.
3. On the right side of the page, click Files, if necessary.
4. Browse and click a directory name to open it.
To go back to a file's or a sub-directory's parent directory, click / and select the file or
directory from the menu. To go to the root directory, click . To copy a file's or a
directory's path, click Copy to clipboard .
You can perform these file management tasks from the Git page:
Action How To
Add a file 1. Click + File.
2. In File Name, enter the file's name and extension.
3. In the code editor, add or enter the file contents.
4. Click Commit.
5. In the Commit Changes dialog, enter a commit summary in the first text
box, any details in the Details text box, and then click Commit.
To save the file to a new directory or a directory structure, include the file path
in File Name. The path can be a relative path or an absolute path. To specify
an absolute path, add a / in the beginning.
For example:
• Enter test/text_file.txt to save the text_file.txt file in the
test directory on the current path. If the test directory doesn’t exist, it’s
created.
• Enter /test/text_file.txt to save the text_file.txt file in the
test directory on the root. If the test directory doesn’t exist, it’s created.
View a file's contents In the Git page, browse to and click the file name link to see its contents. The
file opens in File tab:
• If you open a text file, its contents are displayed in a read-only editor.
• File and Blame views clearly indicate that a file is a symlink or a
submodule (a gitlink) and display information about the link's target.
• The contents of empty files, large files, and binaries aren’t displayed but
you can use the browser URL to download it.
• If the file is a text file or an image (such as .png, .jpg, .bmp, and .gif),
it’s displayed in the browser.
If the text content exceeds the width of the editor, use the arrow keys to scroll
left, right, up, and down. You can also use the scroll buttons to scroll
horizontally. Move the cursor to the editor's left or right edge and click Right
Scroll or Left Scroll to scroll a character at a time.
To view the file in raw (unformatted) format in the web browser, click Edit ,
and select Raw. The contents of the opened file are displayed in a new tab or
a window in the web browser.
4-13
Chapter 4
Add and Manage a Git Repository's Files
Action How To
View a file's details The headers in the Files and Blame pages display the file size and number of
lines of code (LOC) for each file. The tree view to the left indicates the file
mode (whether a file is an executable, a symlink, a submodule, or a regular
file) but only displays the file size for regular files.
Icons show the file mode in the Files and Blame page's headers as well in the
tree listing, so you can quickly see that a file is an executable, a symlink, or a
submodule.
Empty files, large files, and binaries are shown in a similar manner, where you
see information about them, but not the contents of the files themselves.
View a file's annotations Open the file and click Blame.
and commits The Blame view displays the open file's annotations for each updated code
line (or group of code lines) along with commit information. The annotation
includes commits that affected code lines, the author, the commit's date-time
stamp, and the commit message.
Show annotated tag The Git page's Refs tab displays annotated tag messages.
messages
Show a file's mode The diff view in the Git page's Compare tab displays the file mode.
Icons indicate the file mode in the File and Blame page's headers as well in
the tree listing to the left so you can quickly see that a file is a regular file or
an executable, a symlink, or a submodule (a gitlink) and, if it is a link, display
information about the link's target.
Empty files, large files, and binaries are shown in a similar manner, where you
see information about them, but not necessarily the contents of the files
themselves.
Change a file's mode If you change a file's mode, in the Compare tab, the comparison screen
shows details about any mode changes or displays a "No diff" message if the
mode wasn't changed. If you do change the mode, say from regular to
executable, you're notified of the change with a message that says, Mode
change: Regular file->Executable file.
Edit, rename, or move a
Open the file and click Edit . Edit the file’s contents in the code editor. To
file
rename the file or move it to another directory, in the file name text box, enter
the new name or path. Click Commit to save.
With the Git diff editor active, if you make a change in the file shown in the diff
view, the view refreshes immediately. If you have another Files tab open (the
editor in the Compare tab with the change isn't active), the diff info gets
refreshed when you return to the tab it's in. The refresh happens as soon as
you select the Compare tab.
Delete a file
To delete a file, click Actions next to Edit , and select Delete. In the
Commit Changes dialog box, enter the commit summary in the first text box,
the details in the Details text box, and then click Commit.
When a file is deleted (or moved), any open diff editors associated with that
file are closed.
4-14
Chapter 4
Add and Manage a Git Repository's Files
Note:
Git over HTTPS works if your Cloud account
uses federation with Oracle Identity Cloud
Service. If you are federating with other identity
providers, such as Microsoft Azure Active
Directory or Microsoft Active Directory, Git over
HTTPS won't work. We recommend using Git
over SSH instead, when you use federation with
identity providers other than Oracle Identity
Cloud Service.
git add <filename> Add a file that you've added to the repository's directory to the repository's
index:
git add readme.txt
Add all new files to the index:
git add --all
To add a directory and all its contents to the index, navigate to the directory
and use this command:
git add .
git rm <filename> Remove a file from the repository:
git rm readme.txt
git status Check the status of added and edited files:
git status
git branch Create a branch:
git branch new_branch
List all branches in the repository:
git branch
Delete a local branch:
git branch -d local_branch
If the branch contains commits that haven't been merged into any other local
branches or pushed to a remote repository, Git may not perform the deletion.
This protects you from inadvertently losing commit data. To force the deletion
regardless, use the -D option instead.
To delete a remote branch, you must use the git push command:
git push origin --delete remote_branch
4-15
Chapter 4
Add and Manage a Git Repository's Files
To display the Git help index, use the git help command. Use the git help git command to
open the help index in a web browser. To display help for a particular command, use the git
help <command>.
If the commit is successful, the SHA-1 checksum hash of the commit will be added to the
issue. If you want, you can open the issue in the Issues page, locate the commit link in the
Commits section under Associations, open the commit, and verify the SHA-1 checksum
hash.
Alternatively, you could use an abbreviated form, such as "Update for Issue4" in the commit
message and you'd see a link to both the commit and the issue in the Activities feed. There
wouldn't, however, be a link in the Commits section under Associations in the Issues page.
4-16
Chapter 4
Add and Manage a Git Repository's Files
4-17
Chapter 4
Add and Manage a Git Repository's Files
Delete local Git branches you no longer need, after you finish working on a branch and
you've pushed your changes to a remote repository. If your local branch has uncommitted
changes, you'll lose them after the branch is deleted so, before deleting the local branch,
commit any changes you want to keep.
• View Git history
VB Studio keeps track of all the Git actions you perform in your workspace by logging them
as action details. You can use the Git History panel to view your Git actions, see the results
of each action, and keep track of what you've done in the workspace. Accessing this panel
is useful for checking the sequence of recent actions and their details, especially when
troubleshooting issues with version control. You can also filter the actions by various
criteria (commit message, revision ID, branch name, action type, and so on) to quickly
locate events and check details to understand its history.
Use Branches
Branching lets you work on different features and updates at any time without affecting the
original source code.
Before you start working on a new feature or update major portions of the source code, it’s
considered a good practice to create a branch and commit your changes to the new branch.
This way your changes don’t affect the original source code and are safe to test and review. To
learn more about the Git branch workflow, read the Git Branching - Branching Workflows topic
in the Git book at https://git-scm.com/book/en/v2/.
By default, all Git repositories have one default main branch. However, you can add more
branches to the repository. You can also subscribe to email notifications for commits made to
the repository’s branches, and you can compare, rename, and delete branches.
Create a Branch
You can’t create a branch in an empty Git repository. First, you have to clone the repository to
your computer, add and commit files to the default main branch that’s automatically created,
and then push the branch to the project's Git repository. Only after the main branch has been
pushed to the repository, can you create additional branches.
A branch can be marked as a private branch. Only branch owners can push commits to a
private branch. You must be a project member to be able to create a branch.
You can create a branch from the VB Studio Designer as well. We'll describe that here too.
From the Git page's Refs view , you can create a branch from the base branch, from the head
(tip) of an existing branch, or from a tag:
Action How To
Create a branch from a
base branch 1. In the Git page's Refs view, click Branches .
2. From the Repositories drop-down list, select the repository.
3. Click + Create Branch.
4. In the New Branch dialog box, in Name, enter the branch name. From the
Base drop-down list, select the base revision name.
5. To mark the branch as a private branch, select the Private Branch check
box.
6. Click Create.
4-18
Chapter 4
Add and Manage a Git Repository's Files
Action How To
Create a branch from the
head (tip) of another 1. In the Git page's Refs view, click Branches .
branch
2. From the Repositories drop-down list, select the repository.
3. Click + New Branch.
4. In the branch list, next to the source branch name, click Actions , and
select Branch.
5. In the New Branch dialog box, enter a name for the new branch.
6. To mark the branch as a private branch, select the Private Branch check
box.
7. Click Create.
4. In the tags list, next to the tag name, click Actions and select
Branch.
5. In the New Branch dialog box, enter a name for the new branch.
6. To mark the branch as a private branch, select the Private Branch check
box.
7. Click Create.
Protect a Branch
By default, any project member can rename or delete a repository branch, and push or merge
another branch into it. The project owner can protect a branch from these actions by setting
restrictions on the branch:
4-19
Chapter 4
Add and Manage a Git Repository's Files
a. Click in the search repositories field and select the repository that you want to define
the rule for.
b. Click in the Provide glob pattern or select branch field.
Select one of the displayed branches to associate the new rule with a specific branch
or add an expression using wildcards to associate the rule with branches that match
the glob pattern you provide. See Glob Pattern Reference for Matching Branch, Job,
and Pipeline Names.
c. Set the protection level (Open, Requires Review, Private, Frozen) and
corresponding options.
Here are the branch protection actions you can define:
Action How To
Require review and Select the Requires Review option and configure the review options.
restrict merge actions See Set Review and Merge Restrictions on a Repository Branch.
Restrict push actions Select the Private option, as shown:
to project owners and
branch owners
To define branch owners, click Owners and select the user(s) and/or
group(s). You can select multiple users (or groups).
To push commits to a private branch from your computer, you must
always use SSH. In addition, to run a build of job that uses a private
branch, you must configure the job to use SSH.
Lock a branch Select the Frozen option. No changes are allowed to a locked branch
by any user.
Prevent forced pushes Select the Do not allow forced pushes check box. The check box isn't
to the branch available when the Requires Review or the Frozen option is selected
as force push aren't allowed on a review or a frozen branch.
Prevent renaming and Select the Do not allow renaming and deleting branch check box.
deleting the branch The branch can be renamed or deleted after you deselect the check
box. The check box isn't available when the Requires Review or the
Frozen option is selected.
Tip:
On the Refs page, you can also click the Open, Private, Requires Review,
or the Frozen branch label to edit its protection settings.
d. Click Create.
The Activities stream on the Project Home page will report that the branch protection settings
were modified.
Glob Pattern Reference for Matching Branch, Job, and Pipeline Names
4-20
Chapter 4
Add and Manage a Git Repository's Files
Glob syntax can be used to specify pattern-matching behavior. A glob pattern is specified as a
string and is matched against a branch, job, or pipeline name. These wildcard characters can
be used in glob patterns:
Wildcard Description
* Matches zero or more characters of a name without crossing directory boundaries.
** Matches zero or more characters of a name crossing directory boundaries.
? Matches exactly one character.
[] A bracket expression that matches a single character out of a set of characters or, when
the hyphen character is used, a range of characters.
For example, [abc] matches "a", "b", or "c". [a-z] specifies a range that matches from "a"
to "z", inclusive. Forms can be mixed, so [abce-g] matches "a", "b", "c", "e", "f" or "g". If
the character after the left bracket is an exclamation mark (!), it indicates negation, so
the expression [!a-c] matches any character except "a", "b", or "c".
Within a bracket expression, the *, ? and \ characters match themselves. The (-)
character matches itself if it is either the first character within the brackets or the first
character after the !, if negating.
{} Represents a group of subpatterns. The group matches if any subpattern in the group
matches. Uses a comma (",") to separate subpatterns. Groups can't be nested.
\ Escapes characters that would otherwise be interpreted as special characters.
For example, the expression "\\" matches a single backslash and "\{" matches a left
brace.
The forward slash (/) represents the directory separator on all platforms.
Manage a Branch
After you create a branch, you can rename it, compare it with another branch of the Git
repository, or delete it.
You must be a project owner or member to edit and update a branch. You can perform the
branch management actions from the Refs view of the Git page.
Action How To
Rename a branch You can’t rename a restricted branch or the main branch.
After renaming a branch, update all related merge requests, build jobs, and
deployment configurations to use the new branch name. When you rename a
branch, Git creates a branch with the new name and transfers all content from
the old branch to the new branch. After the transfer is complete, the old
branch is removed.
1. In the branch list, to the right of branch name, click Actions , and
select Rename.
2. In the Rename Branch dialog box, in Name, enter the new branch name.
3. Select the I want to rename the branch check box and click Rename.
Compare branches
In the branch list, to the right of branch name, click Actions , and select
Compare. By default, the branch is compared with the main branch.
Protect a branch or set
In the branch list, to the right of branch name, click Actions , and select
branch restrictions
Protection Settings. See Protect a Branch.
4-21
Chapter 4
Manage a Git Repository
Action How To
Delete a branch You can’t delete a restricted branch or the main branch.
1. In the branch list, to the right of branch name, click Actions , and
select Delete.
2. In the Delete Branch dialog box, select the I want to delete the branch
check box, and then select Delete.
After you delete a branch, update, close, or remove all related merge requests
and build jobs.
Action How To
Edit a Git repository’s On the Git page, from the Repositories drop-down list, select the Git
description repository. In the Files or Logs view, click the repository description to edit it.
Alternatively, on the Project Settings: Repositories page, mouse over the
Git repository name, click Menu , and select Edit . In the Edit
Repository dialog box's Description field, enter or edit the repository
description, and click Update.
Set the default branch When you open a Git repository on the Git page, the contents of the default
branch are displayed. By default, the main branch of a Git repository is set as
the default branch. However, you can set any branch to be the default branch
of a Git repository.
On the Project Settings: Repositories page, mouse over the Git repository
name, click Menu , and select Edit . From the Edit Repository dialog
box's Default Branch drop-down list, select the branch, and click Update .
Index a Git repository Indexing a Git repository creates or updates the Git repository index file with
the latest changes. A Git index file is a binary file that serves as a virtual
staging area for the next commit. This file contains a sorted list of object path
names, each with a blob object's permissions and the SHA-1.
To index a repository, on the Project Settings: Repositories page, mouse
over the Git repository name, click Menu , and select Index .
Delete a Git repository On the Project Settings: Repositories page, mouse over the Git repository
name, click Menu , and select Delete . In the Remove Repository
dialog box, click Yes.
4-22
Chapter 4
Manage a Git Repository
Action How To
Copy a Git repository's To clone a Git repository or to access it using a Git client, you use the URL of
URL the repository. You can copy the URL from the Project Home page's
Repositories tab, the Git page, or from the Project Settings : Repositories
page.
In the Project Home page's Repositories tab or the Project Settings :
Repositories page, search for the Git repository, and click the Clone drop-
down list to see the HTTPS and SSH URLs of the repository. To the right of
the URL, click Copy (or select the URL and press Ctrl + C or use the
mouse context menu) to copy the URL to clipboard.
Note:
Git over HTTPS works if your cloud account
uses federation with Oracle Identity Cloud
Service. If you are federating with other identity
providers, such as Microsoft Azure Active
Directory or Microsoft Active Directory, Git over
HTTPS won't work. We recommend using Git
over SSH instead, when you use federation with
identity providers other than Oracle Identity
Cloud Service.
4-23
Chapter 4
Manage a Git Repository
1. From the Repositories drop-down list, select the Git repository. From the Revisions
menu, select the branch.
2. To view the commit history of a file, browse to and open the file.
Skip this step to view the commit history of the selected Git repository.
3. On the right side of the page, click Logs.
Action How To
View the commit history
In the Logs view, click the History List toggle button.
in a list format
To view the history of another branch or tag, in the text box to the right of the
History toggle button, enter branch or tag names. You may also click the
text box and select the revisions from the drop-down list. You can add multiple
branches or tags. To view the history of all revisions of the selected Git
repository, remove all revision names from the text box.
View the commit history
In the Logs view, click the History Graph toggle button.
as a graph
In the graph:
• Each dot represents a commit.
To see the details of the commit, click the dot.
• A splitting line represents a branch.
• Joining lines represent a merge.
• Latest commits appear at the top of the graph.
Use Tags
Tagging lets you mark a specific point of time in the history of the repository. For example, you
can create a tag to mark the Git repository state of an application’s stable state, before a
release.
Action How To
Create a tag 1. In the Git page's Refs view, select the repository from the Repositories
drop-down list.
2. Click Tags .
3. Click + Create Tag.
The New Tags dialog box is displayed.
4. Enter the tag name in the Name field.
If you choose a name that's the same as a branch name in the Git repo,
you'll see a warning. Although you're not strictly prohibited from using this
name, doing so can cause confusion in places where the branch is
referred to, like in build jobs. It's best to choose an original name.
5. Click the Base selector and, from the list, choose the base revision.
6. Click Create.
4-24
Chapter 4
Manage a Git Repository
Action How To
Rename a tag
1. In the Tags view, select the tag name to modify from the list.
Compare a tag
1. In the Tags view, select the tag name to modify from the list.
Delete a tag
1. In the Tags view, select the tag name to modify from the list.
Compare Revisions
You can compare any two revisions of a Git repository. The base revision indicates the starting
point of the comparison and the compare revision indicates the end point. The revision could
be a branch, a tag, or a commit SHA-1 checksum hash.
Here's how to compare two revisions of a Git repository:
1. On the right side of the Git page, click Compare.
2. From the Base Revision drop-down list on the left, select the base revision.
By default, the Git page selects the last commit of the repository as the base revision and
the selected revision as the compare revision.
3. From the Compare Revision drop-down list on the right, select the compare revision.
You can compare these revisions:
• Branch versus branch
• Tag versus tag
• Commit versus commit
• Branch versus tag
• Commit versus branch
• Tag versus commit
4-25
Chapter 4
Manage a Git Repository
On the Compare Result page, the Changed Files tab and the Commits tab. The Changed
Files tab lists files that have changed between the base revision and the compare revision.
The Commits tab lists all commits that have happened between the base revision and the
compare revision since their common commit. The Commits tab is enabled if From Merge
Base is selected in From Merge Base or Revisions .
Action How To
Compare with a parent From the Base Revision drop-down list, click the Parents tab, and then click
of the base revision the SHA-1 checksum hash of the parent commit.
View differences
From the From Merge Base or Revisions drop-down list, select
between the base
From Merge Base (...) . Select Revisions (..) to show the differences
revision and the
between the heads (or tips) of the base revision and the compare revision.
compare revision since
the last common commit
to both revisions
Switch the base revision
Click Switch Base .
and the compare
revision
Create or open a merge If a merge request exists with the Compare Revision as the review branch,
request click the merge request button to open the merge request review page.
If a merge request doesn’t exist, click + Merge Request to create a merge
request with Base Revision as the target branch and the Compare Revision
as the review branch.
View the compare
Click Diff Preferences to view various compare options.
options
4-26
Chapter 4
Manage a Git Repository
To get email notifications, enable them in your user preferences, and then set up a watch on
the branch from the Git page's Refs view.
Here's how to subscribe to email notifications and get them when updates happen in branches
you are watching:
Action How To
Enable email In your user preferences page, select the SCM/Push Activities check box.
notifications
Watch a branch 1. Open the project.
Action How To
Search for a term in a 1. From the Repositories drop-down list, select the Git repository. From the
Git repository and a
revision Revisions drop-down list, select the revision.
2. In the top-right corner of the page, in the Search Code box, enter the
search term or select it from the suggestion list.
3. Click Search .
4-27
Chapter 4
Manage a Git Repository
Action How To
Search for a term in all 1. From the Repositories drop-down list, select the Git repository. From the
revisions of a Git
repository Revisions drop-down list, select the revision.
2. In the top-right corner of the page, in the Search Code box, enter the
search term or select it from the suggestion list.
3. Click Search .
Search for a term in all 1. From the Repositories drop-down list, select the Git repository. From the
Git repositories
Revisions drop-down list, select the revision.
2. In the top-right corner of the page, in the Search Code box, enter the
search term or select it from the suggestion list.
3. Click Search .
4. From the Repositories drop-down list, select the All Repositories
option, or click Reset .
The search result page displays all files, file paths, and file revisions that contain or match the
search term (or symbol). To reset the search, to the left of the Search Code box, click Back
.
Action How To
Download a branch's
archive 1. In the Git page's Refs view, click Branches .
2. From the Repositories drop-down list, select the repository.
3. In the branches list, to the right of the branch name, click , select
Download, and then select zip or tgz.
3. In the tags list, to the right of the tag name, click , select Download,
and then select zip or tgz.
4-28
Chapter 4
Review Source Code with Merge Requests
Term Description
Review branch Branch to be reviewed and merged.
Target branch Branch that the review branch will merge into.
Reviewer Project user invited to review the changed files of the review branch.
Requester Project user who created the merge request.
Subscriber Project user who isn’t a reviewer, but is watching the merge request.
Default reviewer Project user who’s automatically added as a reviewer if a branch is selected
as the review branch. Only a project owner can create default reviewers of a
branch.
Approved Reviewer's feedback with no objection to the changes made to the source
code in the review branch.
Rejected Reviewer's feedback with objections to changes made to the source code in
the review branch and a recommendation not to merge the review branch into
the target branch.
General comment A comment in the Conversations tab of the merge request.
Inline comment A comment added to a line of a file under review.
Pending (or unpublished) An inline comment that you didn’t publish when you added it.
comment
To understand the workflow of a merge request, let's consider you're a software developer
assigned a new feature to implement. These steps summarize the action you’d perform to set
up a merge request and merge branches:
1. Create a branch from a stable branch (say main) of the source code Git repository. You'd
add or update the files of the new branch to implement the new feature.
You can do this in the cloned Git repository on your computer or on the VB Studio Git
page.
2. On your computer, pull the latest content from the project’s Git repository, checkout the
new branch, update the required files, and commit and push the checked out branch to the
project’s Git repository.
4-29
Chapter 4
Review Source Code with Merge Requests
3. If required, create a build job to generate artifacts from the new branch to verify the stability
of the application.
4. Create a merge request with the new branch as the review branch and the stable branch
as the target branch.
5. Add your manager and other team members as reviewers.
6. To resolve the feature related issues when you close the merge request, link the issues to
the merge request.
7. Depending on the review feedback, you may need to update some files and check the
stability of the branch. To trigger a build of the job automatically when you update the files
of the review branch, link the job to the merge request.
8. Again, based on the feedback and build status of the linked jobs, you may want to merge
the branch with the stable branch or abandon it. If you merge the branches, the linked
issues are automatically resolved.
If you're invited to a merge request, you can add comments to the updated files, and share
your feedback whether you’ve any objection to merge branches:
1. Open the merge request.
2. Check the commits made to the review branch and compare the changed files.
3. Add general or inline comments, if necessary.
4. Submit your feedback as Approved if you find the code updates acceptable, or Rejected if
you have objections.
If you're a project member but aren’t invited to a merge request, you can add comments but
you can't share your feedback.
It isn’t necessary to add reviewers to a merge request. If you're sure that the changes made to
the review branch don’t require a review, you can merge both branches without a review.
If you're comfortable using Git, you can merge branches from a Git client without creating a
merge request.
State Description
Open Code review is in progress.
A merge request’s status remains Open or Draft until the branches are
merged or the request is closed.
Draft Merge request is not ready for code review.
Draft status blocks the merge action, mutes notifications to reviewers, and
prevents linked builds from running.
Merged Code review is complete and the review branch has been merged with the
target branch.
The review is closed for inline comments, but can accept general comments.
Closed Code review is closed without merging the review branch with the target
branch.
The review is closed for inline comments, but can accept general comments.
4-30
Chapter 4
Review Source Code with Merge Requests
Note:
If you see the "E-mail address of PersonIdent must not be null" error message when
you create or update a merge request, make sure that your user email address has
been verified. Access your profile, verify your user email address, and retry the
merge request.
See Configure Your Global Email Notifications to see how to access your user profile
and configure these notifications.
Tip:
You can use the Copy icon in the Merge Request page's top header to copy
the review branch name to the clipboard.
This can be useful if your repository has many branches or if the branches have
long names.
4-31
Chapter 4
Review Source Code with Merge Requests
6. Click Next.
7. On the Details page of the New Merge Request wizard, in Linked Issues, add issues
related to the merge request.
When you're merging branches or closing the merge request, you can mark the linked
issues as resolved.
8. In Linked Builds, add jobs related to the merge request.
Builds of the linked jobs will be run automatically whenever the review branch is updated.
9. In Tags, add project tags to associate them with the merge request.
You can use these tags to search merge requests.
10. In Summary, enter a summary (or title) of the merge request. If one isn't specified, the
default summary Merge Request for branch <review_branch_name> will be set.
11. In Reviewers, select team members and groups who’ll review the updates.
If the branch is protected, at least one default reviewer must approve the merge request.
Here's what you can select:
• To add all reviewers of the last merge request you created, select Last Used .
• To add all the default reviewers for the protected branch, select Default Reviewers
.
• To add default reviewers individually, select each one from the list displayed. Default
reviewers are identified by the Default Reviewer tag next to their name. Reviewers that
aren't default reviewers can also be selected from the list and can be added
individually.
• To add a group of team members, select a group that has been previously defined by
your organization administrator, such as the QA group in the image. This can be quite
a timesaver, especially if the group you're adding has many members.
4-32
Chapter 4
Review Source Code with Merge Requests
13. On the the New Merge Request wizard's Description page, enter a description, and click +
Create.
You can use the project’s wiki markup to format the description.
After the merge request has been created, you're assigned the Requester role and all
reviewers are assigned the Reviewer role. Email notifications are sent to reviewers informing
them that they've been added as reviewers.
Note:
If you see the "E-mail address of PersonIdent must not be null" error message when
you create or update a merge request, make sure that your user email address has
been verified. Access your profile, verify your user email address, and retry the
merge request. See Configure Your Global Email Notifications to see how to access
your user profile and configure these notifications.
where:
• <target-branch> is the branch where your changes will be merged.
• <feature-branch> is the branch to be reviewed. If the feature-branch you specify is
already under review, the merge request won't be created.
For example, this command creates a merge request for the branch myfeature before
merging to main:
git push -o mr.target=main origin myfeature
Note:
The Git push -o option is available only with Git version 2.10 or higher. With these
versions, you can use the --push-options option or the shorter -o option.
To add reviewers to the merge request, include the mr.add.reviewer option (or use the
mr.add.defaultReviewers option to set default reviewers for the target branch). For
example, this command identifies two reviewers (clara.coder and tina.testsuite) by their
user names:
git push -o mr.target=main -o
mr.add.reviewer=clara.coder,tina.testsuite origin myfeature
4-33
Chapter 4
Review Source Code with Merge Requests
Both users will be added as reviewers to the merge request for the myfeature branch.
If you're adding reviewers from an Oracle Cloud Application environment that has multiple VB
Studio instances in different IDCS identity stripes (or IDM identity domains), use the domain
username format that includes the stripe or domain where that user has been defined. Since a
unique user may have been defined for multiple domains or stripes, this format ensures that
one identity can be distinguished from that user's other unique identities. This should ensure
that the user you select is the correct one.
To add a reviewer from a multi-stripe environment to the example above, you need to pass the
full domain username, which would be something like : "<idcs-
idm_identifier_for_environment_user_is_associated_with>/username" ". This identifier
indicates that the username belongs to a unique user in a specific instance in the multi-stripe
environment.
The command for adding user tina.testsuite in a specific identity stripe as a reviewer is as
follows:
Tip:
If you frequently create merge requests, it may be helpful to add an alias for the
create merge request option. This needs to be added to the .git/config file at the
local level for each repository (refer to Git documentation for details). For example:
cat .git/config
[alias]
review = push -o mr.target=main
After doing that, you can use the review alias to create a merge request for the
myfeature branch and add clara.coder as the reviewer, for example:
git review -o mr.add.reviewer=clara.coder origin myfeature
Note:
You cannot use the options to create a merge request and add reviewers with the
git push --all command or for references other than the HEAD branch.
You can also add a group as reviewers. After you clone a repository and make some changes
in a branch (for example, feature123), add and commit your changes. Create a group (for
example, reviewers123) and add it as a member of the project that contains the repository you
cloned. Then, from your clone, issue a command similar to this one:
After your changes have been successfully pushed and the merge request has been created,
click the See merge request link included in the command output to view the merge
request that was created for you in VB Studio, for example:
4-34
Chapter 4
Review Source Code with Merge Requests
Tip:
Open the terminal in the root of the folder and run the cat command (cat .git/
HEAD) to read the contents of HEAD.
4-35
Chapter 4
Review Source Code with Merge Requests
2. Name your template file according to how you want it to be used. The type of merge
request definition template is determined by its filename:
• The name for default MR description templates is default_template.md.
• The name for branch-specific templates must exactly match the branch name or match
the first level of the branch name, such as main, patchset, dev, release, feature, and so
on.
The template named patchset.md would be acceptable for version-based branch
naming. The template would be applied to patchset or patchset/* (for example,
patchset/24/01/0). Other separators (slash, underscore, hyphen, and dot) are
supported, so it would also work for patchset/*/*.* or patchset_*_*_* or patchset-*-*-* or
patchset.*.*.*.
• You can also use issue.md and feature.md for ticket-based branch naming, such as
issue/VBS-1234 or feature/29706999.
3. In the left navigation menu, select Merge Requests and display the Merge Request page.
4. Click + Create Merge Request to bring up the MR wizard.
5. In the Branch dialog, select the repository, target and review branches, and click Next.
6. In the Reviewers dialog, select your reviewers and click Next.
7. In the Details dialog, search and link issues and build jobs, select tags, and click Next.
8. In the Description dialog, fill in the summary.
Notice that if your branch name matches your MR description template name, the
Description is filled out for you.
4-36
Chapter 4
Review Source Code with Merge Requests
10. Make sure that the templated description matches the code changes and other
modifications you want reviewers to look at.
11. Click Create to create the MR.
Once the merge request has been created, the template's contents are available in the
Conversation tab, where any developer can edit the description and add more information or
insert comments.
Action How To
Add a reviewer 1. Above the Review Status section, click Click to add a reviewer.
2. From the Reviewers drop-down list, enter the project member name or
select the member.
3. Click OK.
4-37
Chapter 4
Review Source Code with Merge Requests
Action How To
Add a group 1. Above the Review Status section, click Click to add a reviewer.
2. From the Reviewers drop-down list, enter the group's name or select it
from the dropdown list's Groups category.
3. Click OK.
Add a code owner 1. Above the Review Status section, click Click to add a reviewer.
2. From the Reviewers drop-down list, enter code owner or select it from
the dropdown list's Code Owners category.
3. Click OK.
See Assign Owners to Files in the Project's Git Repository for more
information about code owners.
Add yourself (project If you're a project member but not a reviewer, you can submit a request to add
member) as a reviewer yourself as a reviewer to a merge request.
Above the Review Status section, click Add me . If you’re a project owner,
you'll be added automatically to the merge request. If you’re a project
member, enter a justification for why you want to be added in the Request to
be added as a reviewer dialog box, and click OK.
Add yourself (not a Non-members can search and view MRs in shared projects. If you're not a
member of the project) member of a shared project, you can still submit a request to add yourself as
as a reviewer a reviewer to a merge request:
Note:
You won't be able to create/merge/close MRs;
add/remove reviewers, linked issues, or linked
builds; or start linked builds. Because you aren't
a project member, you won't be able to do what
a project member can.
Approve a reviewer If you’re the requester or a reviewer, you can approve requests of project
request users to join the merge request as reviewers. In the Conversation tab, click
Add User in the requested to be a reviewer request.
Remove a reviewer or a 1. Above the Review Status section, click Click to add a reviewer.
group
2. Click Remove Reviewer next to the reviewer or group you want to
remove.
3. Click OK.
4-38
Chapter 4
Review Source Code with Merge Requests
Note:
When you create a job and select the For Merge Request option in the Create
Job dialog, VB Studio automatically adds the Merge Request parameters and
parameterized Git settings to the job configuration. These jobs appear in the list
of jobs that can be linked to a merge request.
To convert an existing job (a job that wasn't created using the For Merge
Request option) into a Merge Request job, add the Merge Request parameters
(MERGE_REQ_ID, GIT_REPO_BRANCH, GIT_REPO_URL) manually in the
Parameters tab and parameterize the Git setting (with ${GIT_REPO_URL}) in
the Git tab. Only after you do that, will the job will appear in the list of jobs that
can be linked to a merge request.
5. Click Save .
After a job is linked to a merge request, a build automatically runs when the review branch is
updated with a commit.
4-39
Chapter 4
Review Source Code with Merge Requests
Note:
Linked builds will not automatically run while a merge request is in Draft state.
When a build of a linked job runs, a comment is automatically added to the Conversation tab.
If the build succeeds, it will auto-approve the merge request and add itself to the Approve
section of the Review Status list. If the build fails, it will auto-reject the merge request and add
itself to the Reject section of the Review Status list.
4. Click the Attach a file or image icon in the toolbar or go directly to the Attachments
tab.
If you have no attachments, this is what you'll see:
4-40
Chapter 4
Review Source Code with Merge Requests
6. Click in the Select Files area and use the file selector or drag and drop the files to the
area.
If you're using the file selector, choose the files to upload and click <uicontrol>Open</
uicontrol>. You can attach files that are smaller than 100MB. The page displays a list of the
selected files below the Select Files area.
Tip:
From this list, you can:
• View statistics about the file (date created, owner, file type, and the DPI if it is
an image file).
• Click > to preview the file, add or edit the description, which can be up to 80
characters long.
• Download the file.
• Delete the file from the list.
4-41
Chapter 4
Review Source Code with Merge Requests
Tip:
From this list, you can:
• View statistics about the uploaded files, including owner, upload date/time,
file size, and file type.
• Click Copy URL to copy its URL to use later if you plan to add the
attachment to a comment using markdown directly. You don't need to copy
the URL if you are using the toolbar. It will insert the URL in the markdown it
generates for you.
• Download the attachment.
8. Add the screen shots, images or files you just uploaded in the Attachments tab to the
comment.
• (Recommended) With the toolbar:
a. If you are creating a new comment, click the Attach a file or image icon in
the Write tab's toolbar.
The Insert Attachments dialog box is displayed.
b. Select the image or file to add to the comment.
c. Add the screen shots, images or files you just uploaded in the Attachments tab to
the comment.
d. Click Insert Attachments.
The Write tab shows the markdown that was inserted for you.
e. (Optional) Select the Preview tab to see what the image or file looks like in the
comment.
f. Click Add Comment.
4-42
Chapter 4
Review Source Code with Merge Requests
• To work directly with wiki markup in comments, instead of using the toolbar, for adding
screen shots, images, and files:
a. Click the Help icon and open the link for the project's wiki markup reference,
where you'll find the syntax you need to use for adding the attachment.
If, for example, you're using markdown, the default wiki markup language for VB
Studio projects, according to the reference, you'll need to use this syntax to add an
attachment to the comment:

b. Go to the Attachments tab and click Copy URL to get the URL you'll use for
image_url.
c. Append images/myImage.png to it, replacing images with the folder name where
the image file is located and myImage.png with the name of your image file.
9. If you are editing an existing comment, go to the Conversation tab, locate your comment
in which you want to add the image as an attachment, click Edit [icon], and either use
the toolbar to add the image to the comment or drop in the markup with the URL you
copied from the Attachments tab.
10. (Optional) Click the Preview tab and make sure that what you added looks correct.
4-43
Chapter 4
Review Source Code with Merge Requests
Action How To
Merge requests where By default, you get email notifications of merge requests where you’re a
you’re a reviewer reviewer. If you aren’t getting the email notifications, select the Merge
Request updates and comments check box in your user preferences page.
1. In the branding bar, click the user avatar, and select Preferences.
2. Click the Notifications tab.
3. Select the Merge Request updates and comments check box, if not
selected.
4. To the left of the User Preferences title, click Close to return to the
last opened page.
Note:
A merge request in Draft state has muted update notifications until it is set to the
Open state.
4-44
Chapter 4
Review Source Code with Merge Requests
Batch emails are also sent for review events that occurred before the inactivity period, which is
usually five minutes after users stop entering comments. Review activities, other than those
related to comments, typically don’t send email notifications during periods of inactivity. A batch
email will be sent after the period of inactivity, listing all the review activities that happened prior
to the period of inactivity expiring.
Note:
If you see the "E-mail address of PersonIdent must not be null" error message when
you create or update a merge request, make sure that your user email address has
been verified. Access your profile, verify your user email address, and retry the
merge request. See Configure Your Global Email Notifications to see how to access
your user profile and configure these notifications.
If you’re invited to a merge request, you can also click the request ID from the email
notification.
4-45
Chapter 4
Review Source Code with Merge Requests
If you still can’t find the merge request through the available filters, use the search box at the
top of the page or click New Search to run an advanced search.
You can also save the advanced search for future use. In Search Name, enter a name and
click Save. The saved searches are listed in the More drop-down list.
Action How To
Compare the files of one Click the button with the first seven characters of the commit’s SHA-1
commit with another checksum hash. By default, the page compares the commit with the previous
commit.
4-46
Chapter 4
Review Source Code with Merge Requests
Action How To
View all files of the Click Code.
repository when the
commit was pushed to
the branch
View files that were Click Show Details. To compare a file with its parent commit, click the file
updated in the commit name to compare the file changes with its previous commit.
The Changed Files tab shows the files in the compare mode. Here are some common actions
you can perform from the Changed Files tab:
Action How To
Select the Changed
Click Changed Files Tree .
Files tab to open the
tree view and show
changed files
View the compare
Click Diff Preferences .
options
Add a comment to a
Mouse over the line number of the file and click Add Comment .
code line or reply to one
Tips for Working with Merge Requests that Have Large Numbers of Changed Files
If you're working with merge requests that have a large number of changed files, you have
several ways to narrow your view and focus in on just the files or commits that you are
interested in examining:
• On the upper left side of the Merge Request window, above the tree view, VB Studio
prominently displays the number of changed files shown in the tree and, if the number is
very large, the number of files that aren't shown in the tree.
The maximum number of files that can be displayed is 4,000.
• You can use the directional arrows to traverse the tree. Use the or left arrows to
ascend the tree and the right arrows or to descend it.
• You can enter a search term (perhaps a file type, such as .css or .js) in the Filter field, to
limit your view to a particular file type.
• You can use the quick filter buttons on the upper right side of the screen to focus in on the
files that you want to examine. At the touch of a button, you can:
4-47
Chapter 4
Review Source Code with Merge Requests
• From the Settings menu, you can select a single option or multiple ones that adjust
Tip:
Use the project’s wiki markup to format the comment and then click the Preview
tab to see what it looks like.
4-48
Chapter 4
Review Source Code with Merge Requests
To reply to a published comment, click Reply , enter your comment, and click Reply.
Replies to published comments will be published immediately but you can only edited or
deleted them if you added them. In addition, you can't edit or delete comments added by other
users. You can only reply to those.
To filter published comments, select Filter and enter a term or partial string to filter by.
To edit one of your comments, select the comment and then click Edit . Make your changes
and then click Save to post your edited comment.
4-49
Chapter 4
Review Source Code with Merge Requests
filter these items to more easily locate a particular item you are looking for, say to reply to
another reviewer's comment.
To filter merge request conversations:
1. In the Merge Request page, select the Conversations tab.
3. Use the dialog box to select the criteria by which you want to filter the comments:
a. In By User, select All, Only mine, or Select any then select one of the users who is a
reviewer.
The Select any option displays only the names of team members who entered
comments in the selected MR, not all users who are reviewers. You're prompted to
select one or more of the team members whose comments you want to see or remove
the team member or members whose comments you want to filter out.
b. In By Date, select Anytime, Today, Yesterday, Last 3 days, Last 7 days, or Last 30
days.
c. In By Text, enter any text string to search for.
d. In By Type, select Commits, Comments, and/or Approvals.
Shaded choices are active.
You can also sort the entries by clicking the Sort Options dropdown and selecting
Oldest First, Newest First, and/or Keep Order. You can combine choices, such as Oldest First
and Keep Order, too.
4-50
Chapter 4
Review Source Code with Merge Requests
2. Go to the Changed Files tab, click the Line comment navigator button on the floating
toolbar.
In this MR, there are two comments in the first file and one in the one shown further down
the list.
3. Click the first file name link (dialog.js) for the comment you want to go to and the file will
open in the code editor.
Comments are displayed inline and are identified by the icon to the left.
4. On the right side of the comment, you can use the Previous comment and Next
comment icons to navigate to the previous or next comment.
4-51
Chapter 4
Review Source Code with Merge Requests
The dialog.js file has two comments. Notice that the Previous Comment icon in the
first comment is grayed out. It is the first comment found in the changed files, so there is
no previous comment to go to.
5. Click the Next comment icon to go to the second comment in the dialog.js file.
6. Click Next Comment icon again and you'll go to the comment in the next changed file,
javascript.js.
Note that the floating navigation menu is always visible so, if you need to, you can always
return to the list of comments by clicking the Line comment navigator button.
Note:
If the Merges are only allowed when there are no comments with a Needs
Attention status setting on the Branch Protection page was selected and a reviewer
has added a comment with a Needs Attention status, the issue the reviewer raised
must be addressed and the status cleared before the merge can happen.
Note that if you created the merge request, but didn’t add yourself as a reviewer, you can’t
approve or reject the merge request. However, you can still close it or merge it with the target
branch.
Here's how to approve or reject a merge request:
1. Open the merge request.
4-52
Chapter 4
Review Source Code with Merge Requests
2. Click the Approve or Reject button at the right side of the page.
3. In the dialog box that appears, add your comment, and click OK.
Use the project’s wiki markup to format the comment.
You can see your feedback (approval or rejection) in the Reviewers list.
Merge Branches
There are several different ways to merge a review branch into the target branch. You can
merge commits, squash and merge, rebase and merge, or merge the branches manually. You
don’t need to get approvals from all reviewers before merging the review branch. If the target
branch is locked, you won’t be able to merge the review branch without first contacting the
project owner to unlock the target branch.
Note:
In a merge request, when you merge a review branch with the target branch, you
merge all of the commits in the review branch. If you want to merge a particular
commit or just some commits in the review branch, you should use the git cherry-
pick command on the Git command line to apply the commit changes to the target
branch. For more information, see https://git-scm.com/docs/git-cherry-pick.
To merge branches, you must be assigned either the reviewer or requester role for the merge
request:
1. Open the merge request.
2. On the right side of the page, click Merge.
3. In the Merge dialog box, click Merge Options, and select the merge type:
4-53
Chapter 4
Review Source Code with Merge Requests
Note:
A merging message will be displayed on the Merge Request page (and on the
Conversation tab), based on the merge type used to complete the merge
operation. The message is shown as Merged, Rebased (shown below), or
Squashed.
The enhanced messaging distinguishes the type of operation that was used to
complete the MR and helps the user understand the expected result shown in the
Git commits tree. In addition, the Merged badge shows the range of commits/
commit IDs.
At the top of the dialog box, select the Remember My Choice check box to use the
current option as the default setting the next time you open the Merge dialog box.
4. If necessary, update the Merge Summary and Merge Description.
The fields aren’t available if you select Rebase and Merge or Manual Merge.
5. Select Delete Branch to delete the review branch after the commits have been merged
with the target branch.
This option is enabled by default when the Delete the review branch after Merge
Request is merged into target branch option is set in the Merge Options tab in the
Branch Protection Settings screen. See Set Review and Merge Restrictions on a
Repository Branch.
If the option was enabled, a confirmation dialog is displayed when the user deletes the
review branch after the Merge Request is merged. The dialog asks if the user wants to
delete the review branch. Click No if you want to retain the branch or Yes to delete it after
the merge. This helps prevent an unwanted branch deletion after the Delete the review
branch after Merge Request is merged into target branch option has been enabled.
6. If there are any linked issues, deselect the check boxes for the issues that you don’t want
to mark as resolved after the commits are merged with the target branch. By default, the
check boxes for all linked issues are selected.
7. Submit the dialog box.
After the review branch has been merged, the merge request will be closed automatically. No
other action is allowed.
If you didn’t select the Delete branch check box when you merged the review branch, note
that the review branch wasn’t removed from the Git repository. You can continue to make
commits to the branch and create another merge request to review the new source code.
4-54
Chapter 4
Review Source Code with Merge Requests
Files in the review branch that no longer had conflicts were merged with the target branch. No
additional action is required on the Merge Request page. If you want to delete the review
branch, open or refresh the Merge Request page, and click Delete Branch.
If there are too many files with conflicts or if the files with conflicts are too large, you need to
manually review each conflicting file in the review branch with the code of the same file in the
target branch in a text editor and resolve the conflicting lines of code. Then, you need to follow
the Git commands displayed in the dialog to resolve the conflicts with the Git command line:
1. On your computer, open the Git CLI.
2. If you’ve already cloned the project Git repository, navigate to its directory.
If you haven’t cloned the Git repository, clone it.
3. Run the commands shown on the Merge Conflicts dialog.
4-55
Chapter 4
Review Source Code with Merge Requests
The commands help you resolve the conflict and mark the conflicting code lines in files.
4. Open each file that contains conflicts in a text editor.
Content with conflicts is marked with <<<<<<<, =======, and >>>>>>>. The lines between
<<<<<<< and ======= show the code from the target branch. The lines between =======
and >>>>>>> show the code from the review branch.
5. Review the content and update it. Remember to remove the <<<<<<<, =======, and
>>>>>>> from each conflicting file before saving it.
6. Save all files and commit them.
Run the git status command to view the status of conflicting files.
7. Push the commit to the target branch.
Note:
If you see the message "Update requires 'Merge-Request' line present in the
commit-message" when you are trying to push a commit to the remote repository,
it doesn't indicate a merge conflict at all. It simply points to the fact that the
remote repository you are pushing changes to is protected. The development
branch in your remote repository has a merge restriction, possibly for Code
review approval, before the MR can be merged. It was set up to only accept tags
that point to commits with a specific commit message that starts with the text,
"Merge-Request: ...". The remote repository was set up this way (Requires
Review) to make sure that all changes (commits) have gone through the
intended merge request workflow, where every change is reviewed and approved
before being pushed.
Conflicting files in the review branch are now merged with the target branch. No additional
action is required on the Merge Request page.
4-56
Chapter 4
Review Source Code with Merge Requests
4. Click OK.
Cherry-pick a Commit
Cherry picking is the act of picking a commit from one branch and applying it to another. It is
mainly used when you don’t want to merge the whole branch and you just want some of the
commits that were made to the branch. This operation can be useful for undoing changes, like
when a commit has been accidentally made to the wrong branch. You can switch to the correct
branch and cherry-pick the commit to where it should belong.
To cherry-pick a commit in a merged MR:
1. From the Repositories drop-down list, select the Git repository.
2. On the right side of the page, click the Logs tab.
3. Click the History Graph toggle button and then enter the branch name in the text box
to the right of the toggle button, or select from the drop-down list.
You can add multiple branches.
4. In the history graph, find the commit you want to pick and click its link.
The Compare view is displayed, showing the commit that you selected and the change
itself, at the file level.
4-57
Chapter 4
Review Source Code with Merge Requests
6. In the Pick onto field, use the selector to choose a starting point (the target branch) in
which the commit will be created.
7. Use this field to check whether the change you want to make is possible or not:
• If you see the message, "The target branch already contains changes", select a
different target branch. The branch you selected already has the change.
4-58
Chapter 4
Review Source Code with Merge Requests
• If you see the message, "There are conflicts and thus the commit can't be cherry-
picked", you can't apply the commit because the interface doesn't provide a way to
resolve the conflict. Click Cancel.
• If you see the message, "Target branch requires review",
a. Click the Start a new merge request with the changes checkbox.
The display field right below the checkbox displays the name of the new review
branch that is automatically created for you.
b. Click OK and the New Merge Request wizard displays.
4-59
Chapter 4
Review Source Code with Merge Requests
c. The fields on the Branch page are already populated, so you just need to click
Next to go to the Reviewers page.
d. Select your reviewers.
Skip to the next substep or, optionally, click Next twice, bypassing the Details page
and displaying the Description page, where you can enter a summary (and a
description).
e. Click Create to finish creating the merge request.
See Create a Merge Request.
The Merge Request page displays.
4-60
Chapter 4
Review Source Code with Merge Requests
• If the dialog doesn't complain, click OK to add the commit to the target branch.
4-61
Chapter 4
Review Source Code with Merge Requests
Click the link under the message and open the Compare view, where you can
examine the changed files.
Return to the Git page, select the Logs view and, in the history graph, examine the
results.
Use the Git Command Line as an Alternative to the VB Studio Git User Interface
You can use the Git command line instead of using VB Studio's Git user interface to cherry-
pick a commit in one branch and add it to another.
The git cherry-pick command is relatively straightforward:
You need to use the git log command to find a command reference. There are several
options you can use with git log to format and filter the results. For example, you could use the
--graph option to draws an ASCII graph that represents the commit history's branch structure.
This option is often used with the --oneline and --decorate commands so you can see which
commit belongs to which branch. The --decorate flag makes the git log command display all
of the references, such as branches, tags, and so on, that point to each commit.
You can also use the Git command line to create a merge request, when one is needed. See
Create a Merge Request from the Command Line.
The icon indicates that this branch will be created for you.
4-62
Chapter 4
Review Source Code with Merge Requests
4. Read the Reapply Changes information box for a summary of the actions that will take
place, as well as information on the cherry-picked commits you are reapplying.
5. Click Reapply Changes to create a new review branch with a merge request to the target
branch you selected.
In the merge request notification that appears, you’ll find a link to the original merge
request from which this new one was generated.
After a merge request has been merged, you can use the Revert Changes button. The
changes that were merged into the target branch will be reverted. The Revert Changes
operation will:
1. Create a new branch forked from the target branch.
2. Create a new commit with inverse changes on top of the newly-created branch.
3. Create a new MR.
Here's how to do it:
4-63
Chapter 4
Review Source Code with Merge Requests
[revert-changes-dialog-page-1.jpg : desc-revert-changes-dialog-page-1]
2. The Review Branch field is automatically filled out for you.
The icon to the right indicates that this branch will be created for you. Notice the
informational message under the review Branch field: Branch branch-name will be
created from target-branch-name . The target branch is the branch where the review
changes are going to be reapplied (and added to the top of) after the review.
3. The Revert Changes information box summarizes the actions that will take place.
Notice that the Revert Changes button at the bottom of the page is grayed out. That
means you are required to fill in some information on one of the pages that follow this one.
Click Next to display the second page (Reviewers) of the dialog.
4. The Reviewers field is required, so you must select a reviewer from the list.
Notice that the Revert Changes button becomes active after you choose a reviewer. You
can click this button now, unless you want to click Next and go to the (optional) Details
page where you can specify any linked issues, linked builds, or tags or continue to the
(optional) Description page where you can add information about the revert operation you
are about to perform.
5. Click Revert Changes.
A new merge request is created for you, as was explained in the third bullet in the previous
page's informational box.
6. Click Merge to revert the changes you made in the previous merge.
Sometimes you might not be able to perform this operation, like when files have conflicts.
These conflicts must be manually merged before proceeding. If the merge you are trying to
revert was done through the user interface (not the Git command line), you should be able to
revert the changes.
4-64
Chapter 4
Review Source Code with Merge Requests
4-65
Chapter 4
Review Source Code with Merge Requests
Note:
These syntax rules for gitignore files do not work in CODEOWNERS files:
• Escaping a pattern starting with # using \ so it is treated as a pattern, not a
comment
• Using ! to negate a pattern
• Using [ ] to define a range of characters
The pattern is followed by one or more usernames or group names using the standard
@username or @group-name format.
CODEOWNERS paths are case sensitive, so even case insensitive systems, like macOS,
must use paths and files that are cased correctly in the CODEOWNERS file.
If any line in your CODEOWNERS file contains invalid syntax, that line will be skipped.
Example
Here's a sample CODEOWNERS file:
/a/ @alex.admin
/docs/f[0-9]*.txt @alex.admin
In this example:
• alex.admin owns the "a" subfolder and everything in it
• alex.admin and don.developer own all the .txt files in the project's Git repository
• Groups (Group1, users1, testers2, and developers1) can own files, like the pom.xml file
listed here
• [email protected] owns all the files under the "cc" directory
• alex.admin owns all files under the docs directory and its subfolders that start with "f",
contain some number in the folder name, and have a "txt" file extension
See Example of a CODEOWNERS file for another more detailed example.
4-66
Chapter 4
Review Source Code with Merge Requests
Note:
Users in Oracle Cloud Application environments that have multiple VB Studio
instances in different identity stripes have username strings that include the
environment name, where that user has been defined. Since a unique user may have
been defined for multiple environments, this format ensures that one identity can be
distinguished from that user's other unique identities. This should help you select the
correct user to add.
These are the review restrictions you can set from the Branch Protection page:
Action How To
Set the minimum From the Approvals drop-down list, select the minimum number of reviewers
number of approvals who must approve the review branch of a merge request, where the selected
before a branch can be branch is the target branch.
merged to the selected
branch
Assign default reviewers Default reviewers, who have the power to approve merge requests when a
to a branch branch requires review, are automatically added to the branch's Reviewers
list. If there are two default reviewers, both must approve all merge requests
for this branch.
To specify default reviewers of the selected branch, click Default Reviewers
and select the member, group, or code owner.
4-67
Chapter 4
Review Source Code with Merge Requests
Action How To
Specify users or groups In Merge Request Exempt Users, specify the users or groups.
who can bypass the This is useful if you want to allow some users or groups to merge the review
branch restrictions and branch irrespective of review conditions being met.
merge the review branch
of a merge request
outside VB Studio or
without required
approvals
Require code owner When you create an MR, neither default reviewers nor code owners are
approvals automatically added.
Under Approval Options, select Requires approval from code owners to
include file owners as reviewers when any part of the merge request includes
files that have been assigned code owners. When selected, code owners
must approve merge requests in addition to the number of approvals selected
in the Approvals dropdown list:
• If a file has two or more owners, only one needs to approve the MR.
• If one or more files have different code owners, at least one code owner
from each owned file must approve the MR.
See Assign Owners to Files in the Project's Git Repository for more
information about code owners.
If a change is pushed to Under Approval Options, select the Reapproval needed when branch is
a branch after some updated check box.
reviewers have approved
the merge request,
merge only when they
reapprove the merge
request
Do not count Merge Under Approval Options, select Do not count Merge Request submitter's
Request submitter's approval to not have it count toward the minimum number of approvals.
approval
Configure the default Under Merge Options, click the Allowed Merge Options selection menu in
value for the project's the Merge Options tab on the Branch Protection Settings page, and
rebase and merge/ configure the default value for the branch's merge/squash/rebase operations.
squash/both operations You can choose some combination of the following values:
• Squash and Merge
• Rebase and Merge
• Create a Merge Commit
Allow a review branch to Under Merge Options, select the Requires linked issue check box.
be merged to the
selected branch only if
the MR includes a linked
issue (or multiple issues)
Allow a review branch to Under Merge Options, select the Require successful build check box.
be merged to the
selected branch only if
the last build of the
linked job in Merge
Request is successful
Ensure changes pushed Under Merge Options, select the Changes pushed to target branch must
to the target branch match review content check box.
match the contents of
the review branch
4-68
Chapter 4
Review Source Code with Merge Requests
Action How To
Prevent merging any Under Merge Options, select the Allow merge only if there are no
merge requests with comments with Needs Attention status checkbox.
"Needs Attention"
comments
Delete the review branch Under Merge Options, select the Delete the review branch after Merge
after merging the Merge Request is merged into target branch check box to enable deleting the
Request into the target review branch after the MR has been merged into the target branch.
branch When enabled, the Delete branch option under Post Merge Actions in the
Merge dialog will also be enabled by default. Branch deletion can still be
bypassed by selecting No in the confirmation dialog. Select Yes to delete the
branch after the merge. See step 5 in Merge Branches.
4-69
5
Create and Use Environments
An environment defines the target Oracle Cloud Applications, Visual Builder, Oracle Cloud
SaaS, or Oracle Cloud Infrastructure service instance as a single entity. You'll define an
environment to deploy an application to or to get information from a service instance.
5-1
Chapter 5
Define Your Environments
Set Up an Environment
You can create an environment and add service instances to it from different identity domains.
For example, you can add an Oracle Database Classic Cloud Service instance from one
identity domain and an Oracle Java Cloud Service instance from another.
If you plan to use VB Studio's Integration build steps (see Move Oracle Integration Artifacts,
Packages, and Lookups Between Instances), you can add OIC instances to your Environment
definition in the Service Instances tab. Follow the instructions in Add an Oracle Integration
Instance to an Environment to use the Oracle Integration Credentials option for adding an
Integration instance in another stripe to an environment.
5-2
Chapter 5
Define Your Environments
• The Infrastructure Services list may include PSM instances or instances that are not
VB or OIC instances.
PSM entitlement is limited to Infrastructure Services.
The current identity domain's service instances are marked as IDCS Resources.
To search for services from another identity domain or account, click Edit Identity and
enter the identity domain ID and region in the popup that opens. You can only edit PSM
Account details in Infrastructure Services.
Note:
You can't change the identity domain for Oracle Cloud Applications or for Visual
Builder and Oracle Integration. You can only see the lists of these from the
current identity domain.
Here's what you need to know to add a new service instance to an environment:
• To add a Visual Builder runtime or Integration instance in your Identity domain, select
one that's listed in the table after selecting Visual Builder and Oracle Integration
under Instance Type and Identity Domain under Authentication Method. If your
environment already contains a Visual Builder runtime or an Integration instance, you'll
need to remove it before adding a different one.
To add an instance that's part of Oracle Integration in another identity domain to an
environment, you'll need to select Visual Builder and Oracle Integration under
Instance Type and Visual Builder Credentials or Oracle Integration Credentials
under Authentication Method:
– You'll need the Visual Builder instance's base URL, instance name, and user
credentials to add the Visual Builder instance.
– You'll need the Oracle Integration instance's base URL, instance name, and user
credentials to add the Oracle Integration instance.
See Add an Oracle Integration Instance to an Environment.
Note:
Typically, the Visual Builder instance added to your visual application's
environment uses the same identity domain as your Visual Builder Studio
instance. If you choose a Visual Builder instance from a different identity
domain as your deployment environment, you'll see a warning about setting
up the Allowed Origins configuration. If you see this, you'll need to talk to
your administrator to make sure your instance's domain is added to its list of
allowed origins, as described in Allow Other Domains Access to Services.
5-3
Chapter 5
Define Your Environments
Note:
To connect to an IDCS-based instance, instead of a traditional identity
domain name, you'll need to provide an IDCS tenant name, which looks
something like "IDCS-XXXXXXXXXXXXXXX", in the configuration dialog.
7. If necessary, repeat steps 5 and 6 to find and add additional service instances from
different identity domains and data centers.
You need credentials of a user who is assigned the administrator role for the service type to
add or remove a PSM-based service instance. To assign or modify roles, see Modifying Roles
in Managing and Monitoring Oracle Cloud.
5-4
Chapter 5
Define Your Environments
to click Authorize and sign in to IDCS with credentials that can access the Oracle Cloud
Applications instance.
If you see the Authorization is required message when viewing or editing a job
configuration, it means you haven't yet set up OAuth tokens for that step.
2. OAuth access and refresh tokens are cycled during regular use. If a token expires during
extended periods of inactivity (say, when you're away on vacation), you may see No Auth
or Auth expired messages. These messages are only displayed for the service instance
status in the Environments page. If either message is displayed, you need to renew the
token:
• From the Environments page, click Actions and select Renew OAuth Access.
• From the Builds page, locate your deploy or delete build job, edit the job configuration,
go to the Steps tab, and click Renew Authorization.
You can renew the tokens simply by running the job manually and providing the
instance credentials when you are prompted to enter them.
5-5
Chapter 5
Define Your Environments
5-6
Chapter 5
Define Your Environments
4. In the Add Service Instance page, select Visual Builder and Oracle Integration under
Instance Type and then, under Authentication Method, select Identity Domain or Oracle
Integration Credentials:
• Most of the time, you'll just select an instance from your Identity domain. To do this,
click Identity Domain, select the instance from the list shown in the table, then click
Add.
To select an instance from a different region or compartment, click Edit .
5-7
Chapter 5
Define Your Environments
Note that the Root compartment is shown by default. Use the Region or
Compartment selector to choose another region or compartment.
• If you want to add OIC instances from another stripe, select the Oracle Integration
Credentials option and VB Studio displays the Add Oracle Integration using Oracle
Integration Credentials dialog shown above. Continue with the next step.
5. In Base URL, enter the URL used to access the application instance.
6. In Instance Name, enter the display name that will be used for the service instance within
the environment.
7. In Username, enter the username you use to log in to this application.
8. In Password, enter the password associated with the username from the previous step.
9. Click Add.
The Service Instances tab displays the Oracle Integration instance you just added.
5-8
Chapter 5
Define Your Environments
needs, you can use the Environments page to access the environment's catalog and create a
custom backend.
After you create an environment and add a Visual Builder instance to it, click Backends on the
Environments page's Service Instances tab to load the catalog editor for that specific
environment:
An environment's catalog editor performs essentially the same function as the Tenant Settings-
>Services tab does for a Visual Builder instance:
For example, using the Services tab, suppose you've configured a backend called ORDS on the
VB instance where you plan to deploy your visual applications. This backend immediately
becomes accessible to all visual applications deployed to or created on this instance, without
having to define it explicitly within the application itself. A VB Studio environment's catalog
editor allows you to achieve the exact same thing. That is, after you've defined the ORDS
5-9
Chapter 5
Define Your Environments
backend for a given environment, it automatically becomes available to all visual application
workspaces that are based on that environment.
Note:
Backends that you add using VB Studio's catalog editor are not propagated to the
Visual Builder instance named in the environment. You'll need to use the Tenant
Settings Services tab for each target Visual Builder instance to configure the
backends explicitly.
You can use an environment's catalog editor to modify existing custom backends or create a
new one to access services that aren't predefined for you in the default catalog. For each
backend, you can use these tabs to view and edit the backend's details:
Tab Description
Overview Displays the name and type of the backend.
Use the topmost + button to create a new backend or use the lower + button
to create a child backend.
Servers Displays the servers associated with the backend and includes the instance
URL associated with the instance. From here you can add, edit, or remove
backend servers.
You can have only one server for a backend in the environment's catalog
editor. (This mirrors the same restriction for servers and backends in the
Visual Builder's runtime instance's tenant settings: you can have only one
server per backend.)
For each server, you can define:
• Headers
• Security and connection details
Headers Displays the static headers defined for the backend at the server level. You
can add and edit headers in the tab.
Source Displays the description of the backend stored in the environment-level
catalog.json file. If you override the environment-level definition, this file
shows the contents of the application-level catalog from the services/
catalog.json file. You can edit the entries in the Source tab, if you want.
Note:
If your visual applications consume Integration Applications or Oracle Cloud
Applications backends, you don't need to configure or edit them using the
environment's catalog editor. These particular backends are autocreated for you
when you select them from Add Service Instances, which you access by clicking +
Add Instance on the Environment page.
5-10
Chapter 5
Define Your Environments
Manage an Environment
After creating an environment and adding instances to it, you can manage its instances, as
shown here:
Action How To
Edit an environment's In the Details tab, click Edit. Edit the details and click Save.
name and description
Refresh a service In the Service Instances tab, mouse-over the service instance, click Actions
instance's status
, and select Refresh Status to refresh and check the current status of the
service.
Check a service The Response Time column provides information about the service instance:
instance's response time • A green dot indicates that the response time is less than 5 seconds.
• A yellow dot indicates that the response time was between 5 and 30
seconds.
• A red dot indicates that the response time was greater than 30 seconds
or that the connection timed out.
Edit a service instance's In the Service Instances tab, mouse-over the Oracle Cloud Application,
credentials Visual Builder runtime, or Oracle Integration runtime service instance, click
Actions , and select Edit Credentials. The Edit Credentials dialog is
displayed. Edit the Username and Password fields to change the credentials
you use to log in to the application, then click the Update button.
Remove an instance In the Service Instances tab, mouse-over the service instance, click Actions
from an environment
, and select Remove.
An instance can't be removed if it's associated with any workspace. If you try,
an error message displays, listing the impacted users and the number of
workspaces they have. You'll be instructed to ask those users to delete their
workspaces. Once this has been done, you can go back and retry the
Remove operation.
Note:
An IDCS resource cannot be removed from an
environment if the instance is in another identity
stripe. Nobody can remove an IDCS resource
from a different identity stripe from an
environment, but the project owner can still
delete the entire environment. In addition, an
IDCS resource from a second identity stripe
cannot be added into the same environment.
5-11
Chapter 5
Define Your Environments
Action How To
Delete an environment
In the environments list, mouse-over the environment, click Actions , and
select Delete.
Remember that environment's service instances won’t be deleted.
An environment can't be deleted if it's associated with any workspace. If you
try, you'll see an error message listing the impacted users and the number of
workspaces they have. You'll be instructed to ask those users to delete their
workspaces. After they do that, you can go back and try to delete the
environment again.
Note:
Project owners are the only project team
members who can delete environments that
were created in a different identity stripe. If a
project member with the Developer role
attempts this operation, they'll see an error
message informing them that they can't delete
an environment that has resources from another
identity stripe.
Status Description
Unauthorized Usually occurs when the user can't be validated with the target instance:
• For an IDCS resource, ensure that the logged-in user is a valid user in the
target instance.
• For an application endpoint connection, ensure that the user and credentials
specified are valid.
• For an Oracle Cloud Applications target instance, ensure that the VB Studio
instance has been allowlisted (formerly called whitelisted).
If all the causes have been ruled out, the problem may be due to an infrastructure
issue. Contact Oracle Support.
Timeout The target instance didn't return a response in an acceptable length of time. The
request to return status may eventually complete, at which time the status will
change, but this status indicates a problem with the target instance's health and
should be investigated if it persists.
Available The target instance is available and responding to API requests.
Not Available The target instance reported an Unavailable status (HTTP 503).
Error An unexpected error occurred while contacting the target instance for its status. If
this condition persists, contact Oracle Support.
5-12
Chapter 5
Define Your Environments
Status Description
Not Found An HTTP 404 error was returned when contacting the target instance:
• For an IDCS resource, ensure that the instance is up and running and there is
a network route between the VB Studio and target instances.
• For an application endpoint connection, ensure that the URL is specified
correctly and points to a VB, Integration Cloud, or Oracle Cloud Applications
instance.
Could also be caused by proxy timeouts, network connection issues, or load
balancer problems.
Deactivated IDCS resources were deactivated.
Returned for an IDCS resource only, indicating that the resource has been
deactivated in IDCS, preventing access to that resource. Contact your IDCS
administrator to reactivate it or remove the IDCS resource from the environment.
Unknown This is the default status before the target instance is contacted and verified. It
should change to one of the other statuses listed in this table.
If the status persists in this state, contact Oracle Support.
5-13
6
Use Workspaces and the Designer
Create or edit extensions and visual applications in a workspace. (The changes you make in
the Designer are stored as source code in the Git repository associated with your workspace.)
What Is a Workspace?
A workspace defines the resources that are available to you when you open the Designer.
These resources include the Git repository—and the branch—containing the source files you
want to use, the extension's or visual application's development environment, and, in certain
cases for extensions, a sandbox. You can think of a workspace as your private editing
environment while you're working with the Designer. If you’re not using VB Studio to create or
update an extension or a visual application, you won't need a workspace.
There are three ways to access a workspace (and thus, the Designer):
• From the Project Home page:
6-1
Chapter 6
What Is a Workspace?
In either case, click the workspace name to launch the Designer or right-click and select
Open in New Tab to open the workspace in a new tab. (To see all the workspaces in the
project while on the Workspaces page, click the Others toggle button.) Once you’re in the
Designer, you can change the Git repository branch, if you wish, but you can’t change the
Git repository where your work is stored—that’s set at the project level.
• From an Oracle Cloud Application editing session:
When you click Edit Page in Visual Builder Studio while in Oracle Cloud Applications,
you are automatically sent over to VB Studio. If you have a workspace already set up for
this app, that’s where you’ll land in the Designer. If you don’t, VB Studio will create a
workspace for you.
In some cases, you may want to create a workspace explicitly, rather than allowing VB Studio
to create one for you. Create a Workspace explains these options.
You're the only one on your team who can access your workspace. Changes to files you make
in your workspace aren't visible to other team members until you save them to a branch (or
unless you use the Share action). You can have multiple workspaces, each with a different
branch and sandbox, or you can use one workspace and switch to a different branch and
sandbox while you’re in the Designer.
6-2
Chapter 6
Create a Workspace
See What Is a Workspace? in Extending Oracle Cloud Applications with Oracle Visual Builder
Studio for additional information about using workspaces with extensions. See Create Visual
Applications in VB Studio for information about using workspaces with visual applications.
Create a Workspace
A workspace may have automatically been created for you when you opened VB Studio from a
page. If not, or if you have other requirements, you can create a workspace explicitly.
You can create workspaces in projects where you've been added as a team member. A
workspace requires an environment against which you develop your application and deploy it
to. A project could have one or more environments available for different purposes, with
workspaces mapped to each of these environments:
• An app extension project will often have one development environment that one or more
users will use to extend/configure the Oracle Cloud Application app. There will, however,
be additional environments that users will publish/deploy their changes to and, of course,
the production environment. Many projects with extensions have three environments - the
first one is the development environment, the second is an intermediary one that's used for
additional testing, and the third one is the production environment.
• A visual app project will also often have one VB development environment in which visual
apps are developed. However, there some cases that may have two development
environments, for example one that is running a new VB release while the other is running
a previous VB release. Both of these will be two separate environments in the visual app
project.
The environment(s) must support the type of project you are working on. To create a
workspace for a visual application, your project must be associated with a Visual Builder
instance. To create a workspace for an extension, your project must be associated with an
Oracle Cloud Application instance.
If the development environment isn't defined, you won't be able to create a workspace. You'll
need to ask the project owner or an administrator to create one for you before you try to create
a workspace.
Note:
Typically, the Visual Builder instance added to your visual application's environment
uses the same identity domain as your Visual Builder Studio instance. If you choose
a Visual Builder instance from a different identity domain as your deployment
environment, you'll see a warning about setting up the Allowed Origins configuration.
If you see this, you'll need to talk to your administrator to make sure your instance's
domain is added to its list of allowed origins, as described in Allow Other Domains
Access to Services.
Depending on what you need in your workspace, the type of template you select and the
information you’re asked to supply during creation varies considerably. Here are the options for
creating a workspace:
• Clone an existing Git repository that contains an extension or visual application
Most people will create a workspace using the Clone from Git option, once a repository
with the visual application or extension that the team works on has been created. One
team member will create the Git repository, so you and each member of your team will use
the clone option to create at least one workspace so they can do their work. Or, perhaps
you want to continue working on a branch that someone else has started. If you work on
6-3
Chapter 6
Create a Workspace
multiple branches and want to move freely from branch to branch without having to make
sure that you added/committed changes you made in a branch, then you'd likely use the
clone option to create a new workspace on the same repository.
See Create a Workspace Using an Existing Repository if you're creating a visual
application or Create a Workspace Using an Existing Repository if you're using this
workspace for an extension.
• Create a new visual application
See Create Workspace for a New Visual Application for instructions on how to use this
option.
• Create a new extension
See Create a Workspace for a New Application Extension for instructions on how to use
this option.
• Import an exported archive that contains an extension or a visual application
You'd use this option when you want to base your new visual application on a valid existing
artifact that you’ve already exported from Visual Builder or Visual Builder Studio to your
local system. Or, if a team member gives you an archive of an extension, you can import it
to create a workspace containing all the files in their branch of the extension's Git
repository. When you create a workspace by importing an archive, you create a new Git
repository and branch. By using the import and export functionality, you can share
application sources and move applications between instances.
When you select an archive to import, or drag it to the upload area in the dialog, VB Studio
checks to see if the archive is valid for the operation (contains a visual application or an
extension).
See Import an App Extension Archive if you're creating an extension or Create a
Workspace by Importing a Visual Application if you're using this workspace for a visual
application.
6-4
Chapter 6
Understanding Default Branch Names
2. In the header, click the arrow next to your Git repo and select Push in the menu.
3. In the Push Scratch Repository to Remote dialog, type a repository name. This name
cannot be the same as an existing project repository.
4. Enter a commit message, and click Push Repository.
After you push your scratch repository to the new remote repository, you can create a pipeline
with jobs for packaging the build artifacts from the repository and deploying the artifacts to your
environment.
If you change the repository's default branch after the workspace's build jobs have been
created, you'll need to manually update those jobs to use the new default branch name.
6-5
Chapter 6
Manage Workspaces
Manage Workspaces
Some workspace management tasks can be done by an individual, while others must be
performed by the project owners.
The Project Home page displays your personal workspaces associated with the selected
project:
The Workspaces tile on that page has Refresh buttons for its environments, so you can
reload them independently from each other. Click a workspace name in the tile to open the
Designer in the context of that workspace (that is, with the correct Git branch and sandbox, if
used).
Depending on your permissions, you can use the Actions menu on the Workspaces page to
perform various workspace management tasks:
The activities stream on the Project Home page will display notifications about most, but not
all, of these tasks. Notifications for opening workspaces, opening a workspace in new tab, and
exporting workspaces won't be shown, but notifications for creating, deleting, importing,
changing ownership, and renaming workspaces will be displayed.
Here’s what you can do from the Workspaces page:
• Use Mine to view your personal workspaces only, or use Others to view all the
workspaces associated with this project. If the list is long, you can use the search field to
find specific user or workspace names.
6-6
Chapter 6
Manage Workspaces
• Open the workspace in a new tab. This is convenient when you want to work in another
project area, such as Issues, without closing and leaving the page where you opened the
workspace. Both pages can be open simultaneously.
• Delete a workspace.
As an individual working on extensions or visual applications, it’s a good idea to delete a
workspace once you’ve finished with it (that is, once you’ve used the Publish action to
push your changes into the main Git branch).
Note:
If there are uncommitted changes to the workspace being deleted, the Confirm
Delete dialog will indicate this. The dialog will also indicate if the workspace
contains changes that were committed but not pushed.
If you’re a project owner, you can delete workspaces that are or were associated with
projects that you own, even workspaces that you don't own or didn't create. Try not to let
inactive workspaces accrue in your project, as they still count against your total resource
allocation and thus have a (hidden) cost.
• Both the project owner and the workspace owner can rename a workspace, or export it to
an archive that can later be imported to another project. See Export a Visual Application for
more information.
• Both the project owner and the workspace owner can assign a new owner for a workspace
by selecting Change Ownership in the Actions menu. The Developer and Developer
Limited roles can reassign ownership of their own workspace only, but the project owner
can reassign ownership of any workspace. This may be necessary for making changes,
like resolving conflicts or pushing changes. A project owner may also need to assign a new
workspace owner if the previous owner left the company or organization, leaving the
workspace with no owner.
Note:
If you're transferring a workspace's ownership to a user in different identity stripe,
you'll see the "Switch environment required" warning message. Click the
message to display the Switch Environment dialog. The dialog indicates the
current environment you're using. Use the selector to choose an environment
that's in the same identity stripe as the new user. The environment currently
associated with the workspace won't be listed.
Once a workspace has a new owner, it behaves as if the new owner created the
workspace. Only the new owner (and the project owner) can work on that workspace going
forward. The original owner could still see the workspace by setting Others, if he or she is
a project owner, but would lose all access to the workspace.
• You may find it necessary to switch the environment that your workspace is using to
another environment because the old one may be down, decommissioned, or has been
repurposed or replaced. By switching environments, you can resume development work
using the same workspace, without having to first push any changes back to the remote
repository and then create a new workspace that uses the new environment.
You can change your workspace's environment by selecting Switch Environment in the
Actions menu. This dialog notifies you which environment you are using and presents a list
of environments that contain an Oracle Cloud Application instance or a Visual Builder
6-7
Chapter 6
Manage Workspaces
instance, omitting the one currently associated with the workspace. You're prompted to
choose another environment. After an environment has been selected from the list, its
health is checked.
Note:
The list shows all environments that contain an Oracle Cloud Application
instance or a Visual Builder instance, not just those that are compatible with the
current workspace's contents. The Switch Environment dialog relies on you to
know what type of workspace (visual app or app extension) it is. If the workspace
type is a visual application, for example, and you try to select an environment
that contains an Oracle Cloud Application instance, you'll see a warning. When
you see this kind of message, you shouldn't make the switch. (You'll be able to
select Switch, after choosing an incompatible environment, but a backend check
prevents the switch and notifies you by displaying an error message.)
If you select an environment that contains an Oracle Cloud Application instance, you'll see
the sandbox menu so you can select a sandbox (optional).
If the workspace includes Business Object data, you'll see a message warning that
switching environments may cause the loss of data. To avoid losing any data, you need to
export the business objects (see Export the Data to a File from the Data Manager) before
switching environments and then importing them (see Import Data from a File Using the
Data Manager) after you make the switch.
6-8
7
Build Your Applications
After uploading the source code files to Git repositories, you can use the Builds page to
create and configure build jobs and pipelines, run builds and generate artifacts.
Term Description
Build system Software that automates the process of compiling, linking and packaging the
source code into an executable form.
Build executor template A build executor template defines the operating system and software
packages installed on a VM build executor. A build executor template must be
created before VM build executors can be added to it.
See What Are VM Build Executors and Build Executor Templates?.
VM build executor A VM build executor is an OCI or OCI Classic VM compute instance
dedicated to running builds of jobs that organization members define in VB
Studio projects. A VM build executor is always associated with a build
executor template. Each build uses one VM build executor.
See What Are VM Build Executors and Build Executor Templates?.
Build artifact A file generated by a build. It could be a packaged archive file, such as a .zip
or .ear file, that you can deploy to a build server.
Trigger A condition to run a build.
7-1
Chapter 7
Configure and Run Project Jobs and Builds
In a software's tile, the major version number is displayed in the title of the package. In
Configure Software page, the number shown in Version is the installed version, which includes
both major and minor versions.
Here's an example. In this image, Node.js 17, 16, and 14 are shown in the software catalog. In
the Node.js 17 tile, 17 is the major version and 6.0 is its minor version. The installed version of
the software is 17.6.0.
When a new minor version of a software package is available in the Software Catalog, all build
executor templates using that software package are updated automatically. For example,
assume that Node.js 14.17.5 is available in the Software Catalog for the Node.js 14 package.
When Node.js 14.19.0 is made available in the Software Catalog, all build executor templates
using the Node.js 14 package update automatically to use Node.js 14.19.0. If there’s an
incompatibility between the upgraded software and other installed software of the build
executor template, an error is reported with suggestions about the cause of the error.
When a new major version of a software package is available in the catalog, build executor
templates using the older versions of the software package aren't updated automatically. The
new major version of the software is added to the catalog as a separate package. For
example, when Node.js 17 is available in the Software Catalog, all build executor templates
using Node.js 14 or Node.js 16 aren’t updated automatically. To use the new version, you must
manually update the build executor templates to use the new package.
When a major version of a software is removed from the catalog, all build executor templates
using that software version are updated automatically to use the next higher version. For
example, when Node.js 12 was phased out, build executor templates that were using Node.js
12 were automatically updated to use Node.js 14.
Note:
If you're creating a new job or renaming an existing one and see a message that the
job name you entered matches a pattern that is restricted for you, you don't have
access to any job name that matches the glob pattern that restricts the job. Enter a
name that doesn't match the name restricted by the glob pattern or contact the job
owner and request to be added as an authorized user (or member of an authorized
group). See Configure Job Protection Settings.
7-2
Chapter 7
Configure and Run Project Jobs and Builds
Note:
If you're trying to access a renamed or deleted job by using a link from the activities
feed (or from a bookmarked link), you will be unable to do so because that job no
longer exists. A page with a message indicating that there was an error loading the
Jobs page is displayed, along with some text that says that the job could not be
found because it may have been deleted or renamed. Click the Take me back to
Jobs button and the Builds page's Jobs tab will be displayed.
Action How To
Create a blank job
1. In the left navigator, click Builds .
2. In the Jobs tab, click + Create Job.
3. In the New Job dialog box, in Name, enter a unique name.
4. In Description, enter the job's description.
5. In Template, select the build executor template.
6. Click Create.
Copy an existing job There may be times that you want to copy parameters and a job configuration
from one job to another. You can do that when you create a job. You cannot
copy the configuration of an existing job to another existing job.
After you create the new job, you can modify the copied parameters and
configuration:
Create a job using YAML In VB Studio, you can use a YAML file to create a job and define its
configuration. The file is stored in a project's Git repository. See Configure
Jobs and Pipelines with YAML.
Run a build of a job In the Jobs tab, click the Actions menu and select Build Now.
7-3
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Configure a job The job configuration page opens immediately after you create a job. You can
also update an existing job from the Jobs tab. Click the Actions menu
and select Configure.
View a job's log In the Jobs tab, click the Actions menu and select View Log. The log for
the most recent run is displayed.
Disable a job In the Jobs tab, click the Actions menu to disable a job, and select
Disable. A message indicating that the job has been disabled successfully is
displayed. The Disabled icon in the job's Status column indicates that the
job has been disabled. It cannot be run unless it is enabled again.
The Disable option is unavailable if the job does not afford write permission.
Enable a disabled job In the Jobs tab, click the Actions menu to enable a disabled job, and
select Enable. A message indicating that the job has been enabled
successfully is displayed.
The Enable option is unavailable if the job does not afford write permission.
Delete a job In the Jobs tab, click the Actions menu and select Delete. The Delete
Job dialog is displayed and you'll see the message, "Do you really want to
delete job xx1 and all its builds and data? This operation cannot be undone."
Click the I understand that this job will be permanently deleted button,
and then click Delete button.
View status of all job In the Jobs tab, click the View Job Statistics button. A pie graph showing all
builds of the build jobs is displayed. The status is shown using percentages.
From the Job Queue tab on the Builds page, you can cancel a single job or multiple jobs that
are running.
7-4
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Cancel a single running job There are two ways to cancel a single running job.
You can cancel the job without selecting its check
box:
1. From the Job Queue page, for the job you
want to cancel, click the Actions column to
the right.
2. Select Cancel.
The Cancel Build dialog is shown and you'll
see the prompt, “Do you really want to cancel
job xx build x?"
3. Click the Cancel Build button.
You can also cancel the job by selecting its
checkbox:
1. From the Job Queue page, select a build job
using its checkbox in the leftmost column.
2. Select the Update Selected dropdown menu.
3. Select the Cancel Selected Builds menu
item.
The Cancel Selected Builds dialog is shown
and you'll see the prompt, "Do you really want
to cancel the 1 selected builds?"
4. Click the Cancel Build button.
Cancel multiple running jobs 1. From the Job Queue page, select multiple
build jobs using the checkboxes in the leftmost
column.
2. Select the Update Selected dropdown menu.
3. Select the Cancel Selected Builds menu
item.
The Cancel Selected Builds dialog is shown
and you'll see the prompt, "Do you really want
to cancel the 3 selected builds?"
4. Click the Cancel Builds button.
Configure a Job
You can create, manage, and configure jobs from the Jobs tab on the Builds page.
To open a job’s configuration page, go to the Jobs tab on the Builds page, click the job's
Actions menu, and select Configure.
Click the Show/Hide Sidebar icon on right to hide or show the sidebar buttons (Save,
Cancel, and page action) on the right side of the Git, Parameters, Before Build, Steps, and
After Build pages. This provides a wider page for you to see all the steps (or settings) with less
scrolling. In addition, if any of the job configuration pages is long enough to have a scrollbar,
you can use the Go To Top or Go To Bottom buttons in the sticky header to traverse
the pages with minimal scrolling. With a single click, you can go to the bottom of the page or
return to the top without using the scrollbar.
7-5
Chapter 7
Configure and Run Project Jobs and Builds
If a job in the list of jobs to the left has a lock icon next to it, it has already been
protected. A protected job's restrictions can still be modified, removed, or the list of
authorized users and groups can still be changed.
The Protection Settings screen is displayed.
7-6
Chapter 7
Configure and Run Project Jobs and Builds
With just this option selected, only authorized users and groups will be able to view the Job
Details page, edit the job, or manually run it. If the job is triggered in a pipeline by an
unauthorized user or group, or if it is triggered by SCM or a timer, it will not be initiated.
6. Click in the Authorized Users/Groups field to display a dialog that lists the project's
Groups and Users you can select from.
Under Users, you can see a flattened list of all users that are members of the group(s) as
well as ones that were added individually. For example, the dev-group members (Clara
Coder, Don Developer, and Tina Testsuite) appear in the Users list, along with Alex Admin,
who was added individually. From the list, select one or more groups and/or users. Don't
forget to add yourself.
Note:
Users in Oracle Cloud Application environments that have multiple VB Studio
instances in different identity stripes have username strings that include the
environment name, where that user has been defined. Since a unique user may
have been defined for multiple environments, this format ensures that one
identity can be distinguished from that user's other unique identities. This should
help you select the correct user to add.
7-7
Chapter 7
Configure and Run Project Jobs and Builds
7. Select the checkboxes to allow project members to manually start private jobs and/or allow
commits and triggers to automatically start private jobs:
• Select the Allow any member of the project to manually start this private job
checkbox to allow any project member, not just authorized users, to manually start the
job.
Notice that when you select the first checkbox, VB Studio automatically selects the
second checkbox, which allows commits and triggers to start the private job, and grays
it out. With this setting, only authorized users and groups can view the Job Details
page or edit the job, but any project member can start and run the job. In addition,
SCM commits or triggers will also automatically start and run the job.
• Select just the Allow commits and triggers to start this private job checkbox if you
want SCM commits and triggers to be able to automatically run this job.
7-8
Chapter 7
Configure and Run Project Jobs and Builds
With just this checkbox selected, periodic triggers will run any job or pipeline, including
private jobs set to allow commits and triggers to start the private job. However, if a
pipeline includes a private job with this option selected and a non-authorized user
attempts to run the pipeline manually, the private job won't run but periodic triggers and
SCM commits will.
Leave the checkbox unselected if you don't want the job to be started when it is
triggered by an SCM commit or timer.
Note:
Best Practice:
If you use the checkbox to enable the protected build to be triggered by an
SCM commit, you need to protect the branch that the build job is tied to. If
you don't do this, anyone can trigger the protected build by making a commit
to trigger the build.
8. Click Save.
The activity stream displays all changes to a job's protection status, like changing the job
protection from public to private, or private to public, or changing a private job to allow
commits and triggers.
You can see if a job is private from several places in the VB Studio user interface. A private job
is indicated by a Lock icon:
• In the jobs list found on the Project Administration tile's Builds page's Job Protection
tab, to the right of each protected job's name.
• In the Private column on the Builds page's Jobs tab.
• In the jobs shown in the the Builds page's Pipelines tab.
An unauthorized user can't run a private build job manually, or through a pipeline, or via an
SCM/periodic trigger.
7-9
Chapter 7
Configure and Run Project Jobs and Builds
To set up a polling-based build trigger, see Trigger a Build Automatically According to an SCM
Polling Schedule.
Here's how to configure a job that monitors a Git repository in your project and triggers a build
automatically when a Git commit is pushed to the repository being tracked:
1. Open the job’s configuration page.
2. Click the Git tab and either use the dropdown to select the repository you want to monitor
or type the name of the repository in the entry field.
3. For the Git repository you want to monitor, select the Automatically perform build on
SCM commit check box.
4. To include or exclude files when tracking changes in the repository, click the Include or
Exclude button, then enter the names of one or more branches, a pattern (like valid.-*),
or both in the Branches field. See Generate Cron Expressions for more information on
entering patterns.
7-10
Chapter 7
Configure and Run Project Jobs and Builds
Note:
If you choose to run this job manually using the Build Now button, we'll show
you a list of all the branches in your repo that match the Include/Exclude criteria
so you can pick one to build. For example, if your Include criteria is branch* and
test*, then we'll show you all the branches that begin with those terms. If you
specified Exclude instead, we'll show all the branches that don't begin with those
terms—likely quite a few. If we don't find a branch that matches, we'll build your
default branch instead.
5. Click Save.
3. Click Settings .
4. Click the Triggers tab.
5. Click Add Trigger and select SCM Polling Trigger.
6. To use the expert mode, select the Expert mode check box and enter the schedule in the
text box.
The default pattern is 0/30 * * * *, which runs a build every 30 minutes.
After you edit the expression, it’s validated immediately when the cursor moves out of the
text box. Note that other fields of the section aren’t available when the check box is
selected.
7. To use the novice mode, deselect the Expert mode check box and specify the schedule
information. The page displays the generated Cron expression next to the Expert mode
check box.
8. To use the novice mode, deselect the Expert mode check box and specify the schedule
information in Minute, Hour, Day of the Month, Month, and Day of the Week.
Click Toggle Recurrence to add or remove 0/or 1/ at the beginning of the value in the
Cron expression.
The page displays the generated Cron expression next to the Expert mode check box.
Tip:
To check the job’s Git repositories every minute, deselect all check boxes.
Remember that this may consume large amounts of system resources.
7-11
Chapter 7
Configure and Run Project Jobs and Builds
To see the SCM poll log of the job after the build runs, in the job's details page or the build's
details page, click SCM Poll Log .
You can specify the Cron schedule information in the following format:
MINUTE HOUR DOM MONTH DOW
where:
• MINUTE is minutes within the hour (0-59)
• HOUR is the hour of the day (0-23)
• DOM is the day of the month (1-31)
• MONTH is the month (1-12)
• DOW is the day of the week (1-7)
To specify multiple values, you can use the following operators:
• * to specify all valid values
• - to specify a range, such as 1-5
• / or */X to specify skips of X's value through the range, such as 0/15 in the MINUTE field for
0,15,30,45
• A,B,...,Z can be used to specify multiple values, such as 0,30 or 1,3,5
7-12
Chapter 7
Configure and Run Project Jobs and Builds
• Click Include to specify a list of files and directories in the repository that you want to
track for changes. By default, all files are included for tracking (**/*), meaning
changes to any file or directory in the repository will trigger a build.
To change the default configuration, select Include and specify the fileset to be
included in Directories/Files. You can use regular expressions (regex) or glob
patterns to specify the fileset. Each entry must be separated by a new line.
You can extend this configuration to specify Exceptions to the included fileset. If
changes occur only in the fileset specified as an exception, a build won't run.
Here are some glob pattern examples:
• Click Exclude to specify a list of files and directories in the repository that you don't
want to track for changes. If all changes are only in the specified files, a build won’t be
triggered. By default, no files are excluded, meaning all files and directories are
tracked and therefore, changes to any file or directory in the repository will trigger a
build.
To change the default configuration, select Exclude and specify the fileset to be
excluded in Directories/Files. You can use regular expressions (regex) or glob to
specify an excluded fileset. Each entry must be separated by a new line.
Optionally, specify files or directories within the excluded fileset that you want to
include as Exceptions. If changes occur in the fileset specified as an exception, a
build will be triggered.
Here are some glob pattern examples:
7-13
Chapter 7
Configure and Run Project Jobs and Builds
4. Click Save.
7-14
Chapter 7
Configure and Run Project Jobs and Builds
Before you set SCM polling, note that if you use the internal address URL of a mirrored
repository, there's a wait time of at least 5 minutes. If you use the external address URL or the
direct URL of the repository, there's a wait time of at least 1 minute. Remember that polling
every few minutes consumes large amounts of system resources.
7-15
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Change the remote For the Git repository, specify the new name in Name. The default remote
name of a repository name is origin.
Specify a reference A reference repository helps to speed up the builds of the job by creating a
specification of a cache in the workspace and hence reducing the data transfer. When a build
repository runs, instead of cloning the Git repository from the remote, the build executor
clones it from the reference repository.
To create a reference specification of a Git repository, specify the name in Ref
Spec.
Leave the field empty to create a default reference specification.
7-16
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Specify a local checkout The local checkout directory is a directory in the workspace where the Git
directory repository is checked out when a build runs.
To specify the directory of a Git repository, specify the path in Local
Checkout Directory. Be sure that directory names don't contain a forward
slash or null character. You can optionally include parameters in the path,
such as:
data/$myDir/$myDir2/stuff
If Local Checkout Directory is left empty, the Git repository is checked out
on the root directory of the workspace.
Include or exclude a list When you've enabled a build to be triggered either on each SCM commit or
of files and directories to according to a polling schedule, select Include or Exclude.
determine whether to • To include a list of files and directories to track for changes and trigger a
trigger a build or not build, click Include and specify a fileset in Directories/Files. Default is
**/*, indicating that all files and directories in the repository are tracked
and changes to any file or directory will trigger a build.
If you don't want a build to be triggered for some files and directories in
the included fileset, specify Exceptions. For example, to trigger a build
following changes to all but .java files, enter **/* in Directories/Files
and *.java in Exceptions.
• To exclude a list of files and directories from tracking and prevent a build
from being triggered, click Exclude and specify a fileset in Directories/
Files. If all changes occur only in the specified files or directories, a build
won’t run. Default is an empty list, indicating no files are excluded.
If you want a build to be triggered for some files and directories in the
excluded fileset, specify Exceptions. For example, to trigger a build only
when .sql files are changed, enter **/* in Directories/Files and
*.sql in Exceptions.
For more examples, see Include or Exclude Files to Trigger a Build.
Check out the remote In Merge another branch, specify the branch name to merge to. If specified,
repository’s branch and the build executor checks out the revision to build as HEAD on this branch.
merge it into a local If necessary, in Checkout revision, specify the branch to checkout and build
branch as HEAD on the value of Merge another branch.
Configure Git user.name In Config user.name and Config user.email, specify the user name and the
and user.email variables email address.
Merge to a branch Select the Merge from another repository check box.
before a build runs In Repository, enter or select the name of the repository to be merged. In
Branch, enter or select the name of the branch to be merged. If no branch is
specified, the default branch of the repository is used.
The build runs only if the merge is successful.
Prune obsolete local Select the Prune remote branches before build check box.
branches before running
a build
Set the depth for cloning Select the Use shallow clone check box and then choose from 1-8192
commits to grab when you clone. For example, to clone with the three most
recent commits, select a value of 3. The Depth default is 1, except for YAML
jobs, where the default depth is 0. Selecting a low depth can speed up your
build process as less data needs to be fetched from the Git repository before
the build.
The default setting is a full depth job.
Skip the internal tag When a build runs, the build executor checks out the Git repository to the local
repository of the workspace and applies a tag to it. To skip this process,
deselect Skip internal tag check box.
7-17
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Remove untracked files Select the Clean after checkout check box.
before running a build
Retrieve sub-modules Select the Recursively update submodules check box.
recursively
Display commit’s author By default, the Git change log shows the commit’s Committer . To display
in the log commit’s Author, select the Use commit author in changelog check box.
Delete all files of the Select the Wipe out workspace before build check box.
workspace before a build
runs
Note:
Regardless of how you set up the schedule, your builds could be delayed if no VM
build executors of the job's build executor template are free to run builds at the
scheduled time, or if any of the VM build executors are in the Stopped/Pending state.
2. Click Settings .
3. Select the Triggers tab.
4. Click Add Trigger and select Periodic Build Trigger.
You can specify the schedule using Cron expressions:
• Use the Expert mode (see steps 5 then 6) if you’re comfortable using Cron
expressions.
• Use the novice mode and set the schedule by specifying values (see step 5 then 7) if
you're less familiar with Cron expressions.
5. In Time zone, select UTC (default) or Another time zone to specify the time setting used
for the schedule.
7-18
Chapter 7
Configure and Run Project Jobs and Builds
If you select Another time zone, use the drop down menu to select a location-based time
zone to use. Notice that the Time Zone Schedule to the right changes to reflect your
selection. There are a few advantages to setting the timezone. You don't need to manually
change the clock twice each year (ahead in the Spring and back in the Fall) and you can
see the times in the timezone you selected without doing any calculation to know when the
trigger will happen in your selected time zone.
Tip:
Click Compare Schedules and select a different time zone to compare the
scheduled times in that time zone to the times in the selected time zone.
6. To use the expert mode, select the Expert mode check box, and enter the schedule in the
text box.
The default pattern is 0/30 * * * *. This setting runs a build every 30 minutes.
After you edit the expression, it’s validated as soon as you move the cursor outside the text
box. Note that other fields of the section aren’t available when the check box is selected.
7. To use the novice mode, deselect the Expert mode check box and specify the schedule
information in Minute, Hour, Day of the Month, Month, and Day of the Week.
Click Toggle Recurrence to add or remove 0/ or 1/ at the beginning of the value in the
Cron expression.
The page displays the generated Cron expression next to the Expert mode check box.
8. If necessary, in Comment, enter a comment.
9. To view and verify the build schedule of the next ten builds, from the timezone drop-down
list, select your time zone and then click View Schedule.
10. Click Save.
7-19
Chapter 7
Configure and Run Project Jobs and Builds
5. Enter values, such as name, default value, password/private key, and description.
Note:
Parameter names must contain letters, numbers or underscores only. They can't
begin with a number and they aren't case-sensitive (the names "job", "JOB", and
"Job" are all treated the same).
You can't use hyphens in build parameter names. When the build system
encounters a script or a command with a hyphenated build parameter name in a
UNIX shell build step, it removes the portion of the name preceding the hyphen.
If you try to use a hyphen in a build parameter name in a job, you won't be able
to save the job configuration that includes it.
In addition, you shouldn't use an underscore by itself or any of the system or
other environmental variable names listed in Reserved Words that Shouldn't Be
Used in Build Parameter Names as build parameter names. There could be
unintended consequences if you do.
6. Click Save.
For example, if you want a job to change the default values for the Gradle version, the OCI
username, and the OCI user password when a build runs, in a Build step, create the Choice,
7-20
Chapter 7
Configure and Run Project Jobs and Builds
String, and Password/Private Key build parameters to accept the values. Notice that the value
for the Password/Private Key parameter isn't displayed in the input field.
Use the $BUILD_PARAMETER format when you're using build parameters. (The $
{BUILD_PARAMETER} format can be used too.) For example, this screen shot shows the Gradle
version, OCI username, and OCI password parameters used in the build step fields of a job.
Notice that the password/private key parameter's variable name isn't displayed:
7-21
Chapter 7
Configure and Run Project Jobs and Builds
7-22
Chapter 7
Configure and Run Project Jobs and Builds
This screenshot shows the dialog for a similar job configured to use a private key parameter
instead of a password parameter:
7-23
Chapter 7
Configure and Run Project Jobs and Builds
Notice the difference between the OCIPkey private key parameter's default value (asterisks)
and that for the OCIPwd password parameter's default value (black dots) shown in the
previous screenshot.
Filepaths with Parameter(s) in Pathnames
In the Job Configuration pages (for example, in the Before Build step's Target Directory field
in the Copy Artifacts section or in the Git tab's Local Checkout Directory field), VB Studio
allows and validates a filepath with parameter(s) in the pathname. For example, the $myDir
and ${myDir2} parameters that define directories can be used in the pathname, as in
<server>/$myDir/${myDir2}/<directory>.
7-24
Chapter 7
Configure and Run Project Jobs and Builds
7-25
Chapter 7
Configure and Run Project Jobs and Builds
• tool_path
• wls_home, wls_home_11_1_1_7_1, wls_home_11g, wls_home_soa,
wls_home_soa_12_2_1, workspace
Action How To
Create a named
password/private key 1. In the left navigator, click Project Administration .
2. Click Builds.
3. Click the Named Passwords/Private Key tab.
4. Click + Create Named Password/Private Key.
5. In Name, enter a name for the variable and then do one of the following:
• In Password, enter the password.
• Click the Private Key checkbox, then paste the private key into the
Private Key field.
6. Click Create.
After you create the named password or named private key, share its name
with your project users.
7-26
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Edit a named password/
private key 1. In the left navigator, click Project Administration .
2. Click Builds.
3. Click the Named Passwords/Private Key tab.
Note:
You can't change a named password's name.
6. Click Update.
Delete a named
password/private key 1. In the left navigator, click Project Administration .
2. Click Builds.
3. Click the Named Passwords/Private Key tab
When the named variable for the private key was created, it must have been set as a
private key, not a password. The named variable for the private key will then be
displayed as *****.
7-27
Chapter 7
Configure and Run Project Jobs and Builds
5. Click Save.
Note:
If you want to access the Oracle Cloud service using a command or a Shell script
from the UNIX Shell step, do not use a key protected by a passphrase, or SSH
will interactively prompt for a passphrase during the build.
7-28
Chapter 7
Configure and Run Project Jobs and Builds
• Password: Password of the SSH user. Leave the field empty to use the key based
authentication.
• Local Port: Port number of the client used for local port forwarding.
• Remote Host: Name of the remote host, or an interface on the SSH server.
• Remote Port: Port number of the remote host or interface.
• SSH Server: Name or IP address of the target SSH server.
• Connect String: Displays the connect string to be used to set up the SSH tunnel.
8. To use command line tools (such as ssh, scp, or sftp), select the Setup files in ~/.ssh for
command-line ssh tools check box.
When a build runs, necessary files with the information that you’ve provided are created for
you in the known_hosts file of the ~/.ssh directory in the build system workspace. The files
are removed automatically after the build is complete.
When a build runs, necessary files with the information that you’ve provided are created for
you in the known_hosts file of the ~/.ssh directory in the build system workspace. The files
are removed automatically after the build is complete.
Note:
If you have a build job that uses an SSH proxy to run SSH commands, including
scp, host verification will be performed for the proxy server as well as the target
server. Host certificates for both servers must be added to the Host Keys field in
the SSH Configuration.
For example, if a build script contains an scp command such as this one:
scp -o 'ProxyCommand=ssh -W %h:%p -p 22 [email protected]' target/sample.war
[email protected]:/tmp
The host keys should have two lines, one for proxy server x.x.x.x and another
for target server y.y.y.y
Alternatively, you could disable host key verification for one or both of the
servers:
scp -o StrictHostKeyChecking=no -o 'ProxyCommand=ssh -o
StrictHostKeyChecking=no -W %h:%p -p 22 [email protected]' target/sample.war
[email protected]:/tmp
9. Click Save.
To build your applications and access the Oracle Maven Repository, you configure the job and
provide your credentials to access the repository:
1. Open https://www.oracle.com/webapps/maven/register/license.html in your web
browser, sign in with your Oracle Account credentials, and accept the license agreement.
7-29
Chapter 7
Configure and Run Project Jobs and Builds
2. Configure the POM file and add the Oracle Maven Repository details:
a. Add a <repository> element that refers to https://maven.oracle.com:
<repositories>
<repository>
<name>OracleMaven</name>
<id>maven.oracle.com</id>
<url>https://maven.oracle.com</url>
</repository>
</repositories>
b. Depending on your application, you may also want to add the <pluginRepository>
element and make it refer to https://maven.oracle.com:
<pluginRepositories>
<pluginRepository>
<name>OracleMaven</name>
<id>maven.oracle.com</id>
<url>https://maven.oracle.com</url>
</pluginRepository>
</pluginRepositories>
c. If you are going to use token-based authentication in your project, follow the steps in
Set Up Token-Based Authentication to create a token with expiration and permission
settings appropriate for your Maven project. (Don't forget to copy the token and paste it
in a text file so you can access later.)
Then add the <server> element and replace {token} with the token you created.
<server>
<id>internalRepo</id>
<configuration>
<httpConfiguration>
<all>
<headers>
<property>
<name>Authorization</name>
<value>Bearer {token}</value>
</property>
</headers>
</all>
</httpConfiguration>
</configuration>
</server>
7-30
Chapter 7
Configure and Run Project Jobs and Builds
To create, edit, and delete a connection, you’ll need the Oracle Technology Network (OTN)
Single Sign-On (SSO) credentials of a user who has accepted the Oracle Maven Repository
license agreement:
Action How To
Add an Oracle Maven
Repository connection 1. In the left navigator, click Project Administration .
2. Select the Builds tile.
3. Click the Maven Connection tab.
4. Click + Create Maven Connection.
5. In the Create Maven Connection dialog, in Connection Name, enter a
unique name.
6. In OTN Username and OTN Password, enter the credentials of a user
who has accepted the Oracle Maven Repository license agreement.
7. In Server Id, if necessary, enter the ID to use for the <server> element
in the Maven settings.xml file or use the default maven.oracle.com
ID.
8. Click Create.
7-31
Chapter 7
Configure and Run Project Jobs and Builds
If there’s no pre-defined connection available or you want set up your own connection,
click the toggle button. In OTN Username and OTN Password, enter the credentials of a
user who has accepted the Oracle Maven Repository license agreement.
5. In Server Id, if required, enter the ID to use for the <server> element of the Maven
settings.xml file, or use the default maven.oracle.com ID.
6. If you’re using a custom settings.xml file, in Custom settings.xml, enter the file’s path.
7. Click Save.
For any vulnerabilities found, you can configure the job to mark the build as failed or file an
issue. If email notifications have been enabled or if a Slack webhook has been configured, you
can be notified about these actions through email or Slack.
To configure a job to scan for security vulnerabilities:
1. Open the job’s configuration page.
2. Click the Before Build tab.
3. From Add Before Build Action, select Dependency Vulnerability Analyzer.
After adding the Dependency Vulnerability Analyzer build action, make sure it's enabled.
You can disable the DVA report generation by disabling the build action.
4. In Threshold at or above, select the score threshold.
The scores capture the principal characteristics of a vulnerability and reflect its severity.
7-32
Chapter 7
Configure and Run Project Jobs and Builds
Note:
The threshold and confidence settings have different mappings and values,
depending on the type of project (Node.js/Javascript, Maven, or Gradle). The
Common Vulnerability Scoring System (CVSS) score is for vulnerabilities from
the NVD database only. Vulnerabilities in Node.js and Javascript projects can
come from sources (NPM, RetireJS, Sonatype OSS Index) in addition to those
that come from NVD.
For more information about how CVSS scores are calculated, see https://
nvd.nist.gov/vuln-metrics/cvss.
This table explains how the levels (Low, Medium, High) are defined for each vulnerability
source. The Analyzer reports vulnerabilities when the value for the level you choose is met
or exceeded.
For example, if you select Medium, any vulnerability with a CVSS score of 4.0 or above
(and a Moderate NPM level, a Medium RetireJS level, or a Sonatype OSS Index score
greater than 4.0 for a Node.js project) is detected and reported.
5. In CPE Confidence, select the confidence rating the DVA has for the identified Common
Platform Enumeration (CPE).
CPE is a structured naming scheme for describing and identifying classes of applications,
operating systems, and hardware devices present among an enterprise's computing
assets. To find more about CPE, see https://csrc.nist.gov/projects/security-
content-automation-protocol/specifications/cpe/.
The CPE Confidence rating helps you filter the Common Vulnerabilities and Exposure
(CVE) identifiers based on the confidence level. CVE is a list of common identifiers for
publicly known cybersecurity vulnerabilities. To find more about CVE, see https://
cve.mitre.org/.
For example, select Medium to filter out the low confidence CVE identifiers from the
report.
Note:
CPE confidence levels are not supported for NPM, RetireJS, and Sonatype OSS
Index sources. For these sources, the Analyzer reports all vulnerabilities,
regardless of the level you choose.
6. To fail the build if a vulnerability is detected, select the Fail Build check box.
7. To automatically file an issue for every build file where a vulnerability is detected, select the
Create issue for every affected build file check box.
7-33
Chapter 7
Configure and Run Project Jobs and Builds
To trigger the build manually, in the Job Details page, click Build Now.
12. After the build is complete and a vulnerability is detected, click Vulnerabilities to view
the vulnerabilities report. If no vulnerabilities were detected, Vulnerabilities will be
disabled.
13. On the Dependency Analyzer Summary page, review the affected files, dependencies, and
detected vulnerabilities.
Expand the Report section to view the files of your application where vulnerabilities are
found (in the POM file, in this example):
After the DVA report is generated, expand each file in the Report section to view these details:
• Issue ID, if the Create issue for every affected file check box was selected. Click the
issue link to open it.
You can also open the Project Home page and check the recent activities feed about the
issue's create notification. You should see a message that an issue was created, such as
System created Defect 2: Vulnerabilities in -MavenJavaApp. If an issue was previously
created for the vulnerability, a comment will be added to the issue and a message like
System commented Defect 2: Vulnerabilities in - MavenJavaApp will be added to the
activities feed.
• Merge request ID, if the Resolve button was clicked to resolve the vulnerabilities. Click the
merge request link to open it.
• Number of vulnerabilities
7-34
Chapter 7
Configure and Run Project Jobs and Builds
Click the Resolve button to resolve any direct and transitive dependencies that were found:
1. In the Report section of the vulnerability analysis report, expand the affected build file
(POM is shown):
7-35
Chapter 7
Configure and Run Project Jobs and Builds
2. Click Resolve.
If a merge request exists, you can cancel the dialog and use it or continue to create
another merge request.
3. In the Resolve Vulnerability dialog box, review the reported vulnerabilities.
4. If an issue was created when the report was generated, its ID is displayed. If no issue was
created, select the Create issue to track this resolution check box to create it.
In Linked Builds, add an existing build to link it to the merge request.
In Reviewers, add team members to review the merge request:
5. For each vulnerability, in Available Versions, select a version of the direct dependency or
dependency with transitive dependencies that doesn't have the reported vulnerability.
If you don't want to resolve the dependency or no versions are available, select Do Not
Resolve.
6. Click Create New Merge Request.
When you click the button, VB Studio does the following:
a. Creates a merge request with details about the vulnerabilities found.
b. Creates a branch with the job's Git repository branch as the base branch, and then
sets it as the review branch of the merge request.
c. Sets the job's Git repository branch as the target branch of the merge request.
d. Updates the review branch's application build file to use the specified versions of the
dependencies.
7-36
Chapter 7
Configure and Run Project Jobs and Builds
For example, if the job that generated the vulnerability report uses the JavaMavenApp Git
repository and its release1.1 branch, then a new branch is created in JavaMavenApp using
release1.1 as the base branch and is used as the review branch of the merge request.
The release1.1 branch is used as the target branch.
If a merge request with same review and target branches was created in an older build of
the job, VB Studio uses the same merge request to merge the application build file
updates.
7. Click the merge request link to open it in another tab or window of the browser, and click
OK.
8. In the Merge Request, review the details of the vulnerabilities in the Conversation tab and
the application build file changes (POM is shown) in the Changed Files tab:
12. In the Merge dialog box, to delete the review branch, select the Delete branch check box.
To resolve linked issues, select the Resolve linked issues check box and the check
boxes of issues you want to resolve.
13. Click Create a merge request.
14. Run a build of the job that reported dependency vulnerabilities and verify that the
application build file's update has fixed the vulnerability.
If a vulnerability is still found, repeat the preceding steps to create another merge request
after selecting a different dependency version.
7-37
Chapter 7
Configure and Run Project Jobs and Builds
as lookup tables, JavaScript libraries, and connection types. Active integrations in Oracle
Integration instances have connections with configured endpoints and credentials. An exported
integration archive doesn't include those connection endpoints or credentials for security
reasons.
Integrations can be grouped into collections in a package so, when you import or export the
package to or from Oracle Integration, all integrations in that package are imported or
exported.
Lookups are reusable tables that map the different terms used to describe the same item
across your applications. For example, one application uses a specific set of codes to describe
countries, while another uses a different set of codes to describe the same countries. You can
use lookups for items like mapping gender codes, nationality codes, currency codes, or any
type of information your applications share with each other but represent differently. The lookup
below shows this for EBS division names and codes as well as for Fusion division names and
codes.
To share your code between different Oracle Integration instances, you'll need to export and
then import individual integrations, packaged integrations, and lookups from your source
environment to the target environment—a task that VB Studio can automate for you. You can
set up export and import jobs to move an Integration archive (IAR file) or package (PAR file)
from one Oracle Integration instance to another and you can do this with standalone build jobs
or as part of a build pipeline.
Manage Integrations
These are the steps you'll need to use to import and export Integration artifacts via build jobs in
VB Studio:
7-38
Chapter 7
Configure and Run Project Jobs and Builds
7-39
Chapter 7
Configure and Run Project Jobs and Builds
5. In Template, select the System Default OL7 for Visual Builder template.
6. Click Create.
The job configuration page is displayed.
7. Click the Steps tab.
8. From Add Step, select Oracle Integration, and then select Export Integration.
9. In Export from Source Instance , select the Oracle Integration instance from which you’ll
be performing the export operation.
10. In Username and Password, provide credentials for a user who has permissions to
perform Oracle Integration operations.
11. In Identifier, provide the identifier for the integration as defined in the Oracle Integration
service instance.
You can also click Search and open the Search Integrations window. In it you can
specify the credentials (username/password) and get a list of integrations in your instance,
or narrow your search by entering a prefix in the Search field. For example, if you enter
"COUNTRYINFO", a list of Integrations that contain "COUNTRYINFO" will be displayed.
12. In Version, provide the version for the integration as defined in the Oracle Integration
service instance.
If you selected an integration by using the Search Integrations dialog, the Version and
Identifier information will be filled in automatically.
Tip:
Alternatively, you could specify a parameter, such as $version, here which, when
combined with the example identifier in the previous step, would result in an
output filename of COUNTRYINFO_${version}.iar. You'll need to copy the
generated filename or enter COUNTRYINFO_${version}.iar when you import the
Integration archive.
See Use Build Parameters for information about adding build parameters.
13. (Optional) The Include asserter recordings in exported file checkbox isn't selected by
default. If you want to include recordings in the archive, select it.
14. Select the After Build tab and add Artifact Archiver as an After Build Action.
15. In Files to archive, ensure that the IAR file in the Export Integration build step's Archive
filename is shown.
16. Click Save.
7-40
Chapter 7
Configure and Run Project Jobs and Builds
7-41
Chapter 7
Configure and Run Project Jobs and Builds
1. Builds .
2. In the Jobs tab, click + Create Job.
3. In the New Job dialog box, in Name, enter a unique name.
4. In Description, enter the job's description.
5. In Template, select the System Default OL7 for Visual Builder template.
6. Click Create.
The job configuration page is displayed.
7. Click the Steps tab.
8. From Add Step, select Oracle Integration, and then select Activate Integration.
9. In Target Instance , select the environment that points to the Oracle Integration instance
with the Integration artifact(s) you want to deactivate and activate.
10. In Username and Password, provide credentials for a user with the Oracle Integration role
to perform Oracle Integration operations.
11. In Identifier, provide the identifier for the integration as defined in the Oracle Integration
service instance.
You can also click Search and open the Search Integrations window. In it you can
specify the credentials (username/password) and get a list of integrations in your instance,
or narrow your search by entering a prefix in the Search field. For example, if you enter
"Hello", a list of Integrations that contain "Hello" will be displayed.
If you selected an integration by using the Search Integrations dialog, the Version and
Identifier information will be filled in automatically.
12. In Version, provide the version for the integration as defined in the Oracle Integration
service instance.
13. In the Deactivation section, select the Deactivate then activate integration checkbox to
deactivate the current integration on the target instance before activating it.
Note:
If the integration has already been activated, the activation will fail unless you
choose this option.
If you select Deactivate then activate integration on the target instance after importing,
you can optionally contribute integration mappings to Oracle Recommends.
14. In the Oracle Asserter section, select the Enable asserter recording checkbox to allow
Oracle's asserter testing framework to test the integration instance and records it, so you
can replay it to reproduce any potential issues.
7-42
Chapter 7
Configure and Run Project Jobs and Builds
15. In the Tracing section, select the Enable tracing checkbox to display tracing Integration
activity in the Oracle Integration Activity Stream.
16. Click Save.
You can also click Search and open the Search Integrations window. In it you can
specify the credentials (username/password) and get a list of integrations in your instance,
or narrow your search by entering a prefix in the Search field. For example, if you enter
"Hello", a list of Integrations that contain "Hello" will be displayed.
If you selected an integration by using the Search Integrations dialog, the Version and
Identifier information will be filled in automatically.
12. In Version, provide the version for the integration as defined in the Oracle Integration
service instance.
13. Click Save.
7-43
Chapter 7
Configure and Run Project Jobs and Builds
7-44
Chapter 7
Configure and Run Project Jobs and Builds
You can also click Search and open the Search Integrations window. In it you can
specify the credentials (username/password) and get a list of packages in your instance, or
narrow your search by entering a prefix in the Search field. For example, if you enter
"COUNTRYINFO", a list of packages that contain "COUNTRYINFO" will be displayed.
13. (Optional) Select the Include asserter recordings in exported file checkbox if you want
to include integrations with asserter recordings in the package.
14. Click Copy to copy the PAR file name, You'll use it in other steps.
15. Select the After Build tab and add Artifact Archiver as an After Build Action.
16. In Files to archive, paste the PAR file in the Export Package build step's Archive
filename.
17. Click Save.
7-45
Chapter 7
Configure and Run Project Jobs and Builds
a. In From job, enter the previous Package Export job you want to import.
b. In Which build, select Last successful build.
8. Click the Steps tab.
9. From Add Step, select Oracle Integration, and then select Import Package.
10. In Import to Target Instance , select the environment that points to the Oracle Integration
instance to which the package will be imported.
11. In Username and Password, provide credentials for a user who has permissions to
perform Oracle Integration operations.
12. In Import Archive Filename, enter the name of the file (with .par extension) that contains
the package of integrations to import.
You could enter the name of the archive file that was created in the export package job or
the name of a previously exported archive.
13. In the Import Method section, select one of the following:
Note:
If any integration to be replaced has been activated, the import will fail unless you
choose this option.
15. After replacing the package on the target instance, select the Reactivate existing
integrations after replacing the package checkbox in the Reactivate section to
reactivate any integrations that were deactivated for the import.
16. (Optional) Include asserter recordings, if any were written to the exported package.
Oracle's asserter testing framework tests integration instances and records them, which
you can replay to reproduce any potential issues.
17. Click Save.
7-46
Chapter 7
Configure and Run Project Jobs and Builds
You can also click Search and open the Search Packages window. In it you can
specify the credentials (username/password) and get a list of packages in your instance, or
narrow your search by entering a prefix in the Search field. For example, if you enter
"Hello", a list of Integrations that contain "Hello" will be displayed.
If you selected a package by using the Search Packages dialog, the Package Name will
be filled in automatically.
12. Optionally, in Deactivation, select the Automatically deactivate integrations in the
package checkbox.
You won't be able to delete the package if any integrations in it are active.
13. Click Save.
7-47
Chapter 7
Configure and Run Project Jobs and Builds
7-48
Chapter 7
Configure and Run Project Jobs and Builds
13. Paste the filename you copied in step 11 into the Files to archive field.
14. Click Save.
11. In Target Instance , select the environment that points to the Oracle Integration instance
into which you want to import the lookup(s).
12. In Username and Password, provide credentials for a user with the Oracle Integration role
to perform Oracle Integration operations.
13. In Import Archive Filename, enter the name of the archive file (with .csv extension)
containing the lookup to import.
14. In Import method, select how to import the lookup:
7-49
Chapter 7
Configure and Run Project Jobs and Builds
7-50
Chapter 7
Configure and Run Project Jobs and Builds
• Choose JSON file and, in JSON File Path, enter the path and the filename of the file
containing updates to the connection details.
• Choose Inline JSON and enter the JSON updates directly in the text box.
13. Click Save.
7-51
Chapter 7
Configure and Run Project Jobs and Builds
10. In Username and Password, provide credentials for a user with the Oracle Integration role
to perform Oracle Integration operations.
11. In Identifier, select the identifier of the connection in the target Oracle Integration instance
to receive the file.
You can also click Search and open the Search Connections window. In it you can
specify the credentials (username/password) and get a list of connections in your instance,
or narrow your search by entering a prefix in the Search field.
12. In Property Name, enter the name of the connection property to receive the file.
13. In File Path, enter the name of the file to upload, such as a zip or WSDL file.
14. If you're uploading a zip file, in Service WSDL, enter the file path for the WSDL file within
the zip file.
15. Click Save.
7-52
Chapter 7
Configure and Run Project Jobs and Builds
Tip:
• By default, when a build runs, it invokes the shell with the -ex option. It prints all
commands before they run. The build will fail if any command exits with a non-
zero exit code. To change this behavior, add the #!/bin/... line in the shell
script.
• If you have a long script, create a script file, add it to the Git repository, and then
run it using a command, such as bash -ex /myfolder/myscript.sh.
• To run Python 3, create an isolated environment using venv. See https://
docs.python.org/3/library/venv.html.
For example, to create a virtual environment, add these commands as a Unix
Shell build step:
pip3 list
cd $WORKSPACE
python3 -m venv mytest
cd mytest/bin
./pip3 list
./pip3 install --upgrade pip requests setuptools selenium
./pip3 list
./python3 -c 'import requests; r=requests.get('\''https://
www.google.com'\''); print(r.status_code)'
./pip3 uninstall -y requests
./pip3 list
• To provide Python 3 capabilities to build jobs, use the Python 3 packages that are
included with the build executor template by default. If you need specific
capabilities that aren't available by default, you'll need to add the Python 3
version that has those capabilities to the build executor template.
• If both Python 2 and Python 3 are available in the job’s build executor template,
to call Python, use these commands:
Command Version
python The python command refers to the OS-specific Python version
that comes pre-installed with the software package:
– Python 2 (OL7)
– Python 3 (OL8)
python2 Python 2
python3 The python3 command refers to the Python 3 version installed
with the software package.
pip pip of Python 3
pip3 pip of Python 3
• To clone an external Git repository using a shell command, use the internal URL
of the external Git repository. To copy the URL, open the Git page and, from the
Repositories drop-down list, select the external Git repository. From the Clone
menu, click Copy to clipboard of the Clone with HTTPS from internal
address URL.
7-53
Chapter 7
Configure and Run Project Jobs and Builds
Note:
If your organization's builds use Docker executors and if those builds create Docker
images and Docker containers, they'll be managed by the Docker environment in the
deployment VM. This allows builds to interact with images and containers from other
builds. If your project contains sensitive data and requires its build to run isolated in a
VM, you should set up the build using VM executors instead.
Using a simple command, such as docker rm $(docker container -q), in a shell script in a
build could have the unintended consequence of killing containers that were created by other
builds. To prevent this from happening, follow these recommendations to create and remove
Docker images and containers:
• When you create a Docker container, use a unique name, by adding $TASKID to the
container label. This distinguishes the container created by the build from a shared
container.
• Containers that are created must be scoped to the build. They must be stopped and
removed when the build completes.
• Images that are created in a build may be used across many builds, to avoid recreating the
image during every build. However, take care to not consume all of the disk space in the
deployment VM.
• Don't issue a Docker command, such as docker rmi $(docker image -q), that deletes all
Docker images. Instead, use a command, like docker rmi <my_image>, that only deletes
specific images that were created by the build.
• Don't issue Docker commands like docker stop $(docker ps -q) and docker rm $
(docker ps -q) that stop and delete all Docker containers.
7-54
Chapter 7
Configure and Run Project Jobs and Builds
DOCKER_IMAGE=some_image
Action How To
Use a private repository Select the Use Private Repository check box.
for builds You may want to use it to make sure that other Maven build artifacts don’t
interfere with the artifacts of this job’s builds. When a build runs, it creates
a Maven repository .maven/repo directory in the build executor
workspace. Remember selecting this option consumes more storage
space of the workspace.
Use a private Select the Use Private Temp Directory check box.
temporary directory for You may want to use it to create a temporary directory for artifacts or
builds. temporary files. When a build runs, it creates a .maven/tmp directory in
the workspace. The temporary files may consume large amount of
storage, so, remember to clean up the directory regularly.
7-55
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Work offline and don’t Select the Offline check box.
access remote Maven
repositories
Activate Maven profiles In Profiles, enter a list of profiles, separated by commas.
For more information about Maven profiles, see the Maven documentation
at http://maven.apache.org.
Set custom properties In Properties, enter custom system properties in the key=value format.
Specify each property on its own line.
Tip:
Don't surround properties that have multi-word values, like
key2=say hello, with single or double quotes. Multi-word
property assignments will be automatically wrapped with double
quotes.
Also, notice that arguments, which are generated for the mvn
command, have an extra space in them between "-D" and the
argument, like this:
When a build runs, the properties are passed to the build executor in the
standard way (for example, -Dkey1=value1 -Dkey2=value2) without
the extra spaces.
Include build Leave checked (default setting) to include all build parameters in the
parameters in the Properties list.
Properties list Deselect to stop automatically adding the parameters to the list.
Set the Maven From Verbosity, select the level.
verbosity level You may want to use it to set the verbosity of the Maven log output to the
build log.
Set the checksum From Checksum, select the mode.
mode You may want to use it to set the check-sum validation strictness when the
build downloads artifacts from the remote Maven repositories.
Set handling of the From Snapshot, select the mode.
SNAPSHOT artifacts
Include other Maven In Projects, enter the comma or space separated list of Maven project
projects to the reactor jobs to include in the reactor. The reactor is a mechanism in Maven that
handles multi-module projects. A project job can be specified by
[groupId]:artifactId or by its relative path.
Resume a Maven In Resume From, enter the Maven job project name from where you
project from the reactor would like to resume the reactor. The Maven job project can be specified
by [groupId]:artifactId or by its relative path.
Set the failure handling From Fail Mode, select the mode.
mode You may want to use it to set how the Maven build proceeds in case of a
failure.
Set the Make-like From Make Mode, select the mode. You may want to use it enable Make-
reactor mode like build behavior.
Configure the reactor In Threading, enter the value for experimental support for parallel builds.
threading model For example, a value of 3 indicates three threads for the build.
7-56
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Pass parameters to In JVM Options, enter the parameters. The build passes the parameters
Java VM as MAVEN_OPTS.
9. Click Save.
Note:
Make sure that your build VM template includes the WebLogic Server (WLS)
software bundle. For example, the Oracle JDeveloper Studio 12 software bundle
includes the JDeveloper Studio 12.2.1.3 (or 12.2.1.4) software.
To install the WebLogic plugin every time a build starts, in the job configuration, add a Unix
Shell command to install the plugin and then deploy it:
1. Open the job’s configuration page.
2. Click the Steps tab.
3. From Add Step, select Unix Shell.
4. In Script, enter this command:
5. Click Save.
7-57
Chapter 7
Configure and Run Project Jobs and Builds
d. In the Maven tab, click Copy to copy the <distributionManagement> code snippet
to the clipboard.
e. Open the POM file of your project in a code editor (or a text editor) and paste the
contents of the clipboard under the <project> element:
2. To download an artifact from the Maven repository, use the repositories snippet of the
project’s Maven repository:
a. In the left navigator, click Maven .
b. On the right side of the page, click Browse.
c. In the Artifact Details section, expand Distribution Management.
d. In the Maven tab, copy the <repository> element of the Distribution Management to
the clipboard.
e. Open the POM file of your project in a code editor (or a text editor) and paste the
<repository> element in the<repositories> element under <project>:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/
2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://
maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.employees</groupId>
<artifactId>employees-app</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>employees-app Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>Demo_repo</id>
<name>Demo Maven Repository</name>
<url>http://developer.us2.oraclecloud.com/profile/my-org/s/my-
org_demo_12345/maven/</url>
</repository>
</repositories>
.
.
.
</project>
7-58
Chapter 7
Configure and Run Project Jobs and Builds
3. Save the file, commit it to the Git repository, and then push the commit.
4. Configure the job to add a Maven step and add the required Maven goals:
Tip:
Use the deploy goal to upload Maven artifacts to the project’s Maven repository.
5. If you want to view build information for an artifact uploaded to the Maven repository with a
build job or pipeline, make sure that the build executor template you select from the
Software catalog in the Software tab includes the latest Maven and Gradle versions.
6. Run a build of the job.
Note:
You don't have to provide the credentials in settings.xml to access the project’s
Maven repository when you run a build. Build jobs have full access to the
project’s Maven repository for uploads and downloads.
7. If you configured the job to upload artifacts to the project’s Maven repository, after the build
is successful, verify the artifacts in the Maven page:
7-59
Chapter 7
Configure and Run Project Jobs and Builds
8. If you selected a build executor template that includes Maven and Gradle from the
Software catalog in the Software tab, you can view build information for the artifact:
7-60
Chapter 7
Configure and Run Project Jobs and Builds
In VB Studio, Gradle 5 is available. To use another version of Gradle, use Gradle Wrapper in
the Gradle build step. Gradle recommends using Gradle Wrapper as the preferred way to run a
Gradle build. To learn more about using Gradle Wrapper, see https://docs.gradle.org/
current/userguide/gradle_wrapper.html.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and add Gradle
commands.
7-61
Chapter 7
Configure and Run Project Jobs and Builds
3. Click Settings .
4. In the Software tab, select the Gradle build executor template.
5. Click Configure .
6. In the Git tab, add the Git repository where you uploaded the build file.
7. Click the Steps tab.
8. From Add Step, select Gradle.
9. To use the Gradle installation that comes with the build executor, use the default settings
and don't select anything. To use the Gradle wrapper, select Use 'gradlew' wrapper:
• If you selected Use 'gradlew' wrapper, you can deselect the Create 'gradlew'
wrapper check box if you don't want to create a new Gradle wrapper when a build
runs. If the check box isn't selected, make sure that the gradlew executable is in
the $WORKSPACE directory. If the gradlew executable is in the root build script directory,
select the In root build script directory check box.
• To use a different Gradle version, select Use Gradle version and specify the version
in the Gradle version field. The Gradle version is optional.
Tip:
To change the Gradle version when a build runs, add a build parameter,
perhaps GRADLE_VERSION, and use it here. When a build runs, you can
change the default version of Gradle and specify another version.
• To specify a different distribution mirror, select Use Gradle distribution URL and enter
the address in the Gradle distribution URL field. You may want to do this if, for
example, you experience intermittent download timeouts. Your company may offer
regional mirrors that you can use as an alternative.
10. In Tasks, enter Gradle tasks.
11. In Build File, enter the name and path of the Gradle build.gradle file. This path must be
relative to the root build script directory, if specified, else relative to the $WORKSPACE
directory.
12. In Root build script directory, enter the directory path that contains the top-level
build.gradle file and serves as the project root. The path must be relative to
the $WORKSPACE directory.
If left empty, the path defaults to build.gradle in the root directory.
13. In Switches, enter Gradle switches.
7-62
Chapter 7
Configure and Run Project Jobs and Builds
14. If you’re using a build executor that is shared by other jobs or users, select the Force
GRADLE_USER_HOME to use workspace check box to set GRADLE_USER_HOME to the
workspace.
By default, GRADLE_USER_HOME is set to $HOME/.gradle, so with this option you can avoid
encountering unwanted changes in the default shared directory.
15. Click Save.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and add a Node.js
script.
3. Click Settings .
4. In the Software tab, select the Node.js build executor template.
5. Click Configure .
6. In the Git tab, add the Git repository where you uploaded the script file.
7. Click the Steps tab.
8. From Add Step, select Node.js.
9. To specify the script file, in Source, select NodeJS File. In NodeJS File Path, specify the
file path in the Git repository.
7-63
Chapter 7
Configure and Run Project Jobs and Builds
To specify the script, in Source, select Script. In NodeJS Script, enter the script.
10. To speed up build execution time, you can use a Unix Shell step to install NPM packages
globally on your VM build executor(s), by running NPM commands with the --global
option.
Modules such as Gulp, Grunt, Bower, and Oracle DB Node package come preinstalled on
a Compute VM. Not all modules are available across all versions of Node and these
packages get out of date and are superseded by newer versions rather quickly.
By using the --global option, you can install the NPM packages you need on a VM build
executor and doing so will also make those packages available to subsequent builds that
run on the same VM build executor. This results in a significant time saving over installing
the same packages locally, which requires them to be reinstalled in every subsequent
build.
Global packages are important, but you should avoid using them if they aren't needed. In
general, the rule of thumb is:
• If you’re installing something to be used in your program, make it required, then install
it locally, at the root of your project.
• If you’re installing something to be used in your shell or on the command line, install it
globally, so its binaries end up in your PATH environment variable.
11. Click Save.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
7-64
Chapter 7
Configure and Run Project Jobs and Builds
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and add SQLcl
commands.
2. Click Settings .
3. In the Software tab, select the SQLcl build executor template.
4. From the Java drop-down list, select the version.
5. Click Configure .
6. In the Git tab, add the Git repository where you uploaded the script file.
7. Click the Steps tab.
8. From Add Step, select SQLcl.
9. In Username and Password, enter the user name and password of the Oracle Database
account.
You can also use build parameters in Username and Password.
10. To connect to Oracle Database Exadata Express Cloud Service, in Credentials File, enter
the workspace path of the uploaded credentials zip file.
11. In Connect String, enter the JDBC or HTTP connection string of the Oracle Database
account using any of the host_name:port:SID or host_name:port/service_name formats.
Here's a JDBC example:
test_server.oracle.com:1521:adt1100
In this example, adt1100 is the SID, and ora11g is the service name in
test_server.oracle.com:1521/ora11g.
Here's an HTTP example:
http://test_server.oracle.com:8085/ords/demo
You can also use build parameters in Connect String.
7-65
Chapter 7
Configure and Run Project Jobs and Builds
12. If the SQL statements are available in a file uploaded to the project Git repository, in
Source, select SQL File. In SQL File Path, enter the Git repository path of the SQL file.
You can copy the file’s path from the Git page.
To enter SQL statements, in Source, select Inline SQL. In SQL Statements, enter the
SQL statements. You can also use build parameters in SQL Statements.
13. In Role, if necessary, select the database role of the user.
14. In Restriction Level, if necessary, specify the restriction level on the type of SQL
statements that are allowed to run.
15. In JVM Options, enter the parameters you want to pass to the Java VM and the build will
pass the parameters as _JAVA_OPTIONS.
You’re setting this parameter (or these parameters) specifically for the session running
SQLcl – if you set it globally, that would impact every Java program running on the
machine, which you probably don't want to do.
16. Click Save.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and add PSMcli
commands.
2. Click Settings .
7-66
Chapter 7
Configure and Run Project Jobs and Builds
4. Click Configure .
5. In the Git tab, add the Git repository where you uploaded the script file.
6. Click the Steps tab.
7. From Add Step, select PSMcli.
8. In Username and Password, enter the user name and password of the Oracle Cloud
account.
9. In Identity Domain, enter the identity domain.
10. In Region, select your identity domain’s region.
11. In Output Format, select the preferred output format: JSON (default) or HTML.
You can add multiple shell steps to run different group of commands. Don’t add the PSMcli
build step again.
Note:
You shouldn't use a passphrase for OCI public/private keys in an OCIcli build
step. If you do, when the build job encounters the key you'll be prompted for the
passphrase, but, since you can't interact with the job's shell to supply it, the build
will fail and an error will be reported in the build job's log. To avoid this problem,
you'll need to generate a public-private key pair without a passphrase and
upload the public key to your user preferences.
See Upload Your Public SSH Key for information about generating an SSH key
and uploading the public SSH key to your VB Studio account.
• The fingerprint of a user who can create and access the resources
• The tenancy name
Contact the OCI administrator and get the required OCI input values. Get OCI input Values
explains where these values can be found.
7-67
Chapter 7
Configure and Run Project Jobs and Builds
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and add OCIcli
commands.
2. Click Settings .
3. In the Software tab, select the OCIcli build executor template.
4. Click Configure .
5. Click the Steps tab.
6. From Add Step, select OCIcli.
7. In User OCID, enter the OCID of the user who can access or create OCI resources.
8. In Fingerprint, enter the public key fingerprint of the user.
9. In Tenancy, enter the tenancy OCID.
10. In Private Key, enter the private key of the user.
Use a private key that was set with no passphrase. If you don't have one, generate a
public-private key pair without a passphrase and upload the public key to your user
preferences. See Upload Your Public SSH Key for information about generating an SSH
key and uploading the public SSH key to your VB Studio account.
11. In Region, select the Oracle Cloud Infrastructure tenancy’s region.
Add multiple Unix Shell steps to run additional sets of commands. Don’t add another OCIcli
build step.
7-68
Chapter 7
Configure and Run Project Jobs and Builds
Tip:
If you face a network issue when you run Docker commands, try adding the
HTTP_PROXY and HTTPS_PROXY environment variables in the Docker file.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and add Docker
commands.
2. Click Settings .
3. In the Software tab, select the Docker build executor template.
4. Click Configure .
5. Click the Steps tab.
6. From Add Step, select Docker, and then select the Docker command:
7-69
Chapter 7
Configure and Run Project Jobs and Builds
7. Click Save.
The Docker logout command runs automatically after all Docker commands have run.
7-70
Chapter 7
Configure and Run Project Jobs and Builds
Run Fn Commands
Fn, or Fn Project, is an open-source, container-native, serverless platform for building,
deploying, and scaling functions in multi-cloud environments. To run Fn commands when a
build runs, you must have access to a Docker container that has a running Fn server.
For more information about Fn, see https://fnproject.io/.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After your organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that buiold executor template and add Fn
commands.
2. Click Settings .
3. In the Software tab, select the Fn build executor template.
4. Click Configure .
5. Click the Steps tab.
6. From Add Step, select Fn, and then select the command:
7-71
Chapter 7
Configure and Run Project Jobs and Builds
7. Click Save.
Use SonarQube
SonarQube is open source quality management software that continuously analyzes your
application. When you configure a job to use SonarQube, the build generates an analysis
summary that you can view from the job or build details page.
To learn about SonarQube, see its documentation at https://docs.sonarqube.org.
Action How To
Add a SonarQube
connection 1. In the left navigator, click Project Administration .
2. Click Build.
3. Click the SonarQube Server tab.
4. Click Add SonarQube Server Connection.
5. In the Create SonarQube Server dialog box, enter a name for the
server, provide the SonarQube server’s URL, and specify the credentials
of a user who has access to the server.
6. Click Create.
7-72
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Edit a connection to
change the user 1. In the left navigator, click Project Administration .
credentials or provide 2. Click Build.
another server ID
3. Click the SonarQube Server tab
7-73
Chapter 7
Configure and Run Project Jobs and Builds
To view the SonarQube analysis summary after a build, from the job’s details page, click
SonarQube Analysis Summary . The SonarQube Analysis Summary displays SonarQube
server URL for the job and the analysis summary.
11. From the Build Details page, click Build Now to run the build job.
12. Once the build completes, click SonarQube Analysis Summary to display the
SonarQube Analysis Summary page, which shows the SonarQube server URL for the
job and the analysis summary.
7-74
Chapter 7
Configure and Run Project Jobs and Builds
8. In the After Build tab, add the SonarQube Result Publisher action.
9. Select Apply SonarQube quality gate status as build status and Archive Analysis
Files.
10. Click Save to save the build configuration.
11. From the Build Details page, click Build Now to run the build job.
12. Once the build completes, click SonarQube Analysis Summary to display the
SonarQube Analysis Summary page, which shows the SonarQube server URL for the
job and the analysis summary.
7-75
Chapter 7
Configure and Run Project Jobs and Builds
11. From the Build Details page, click Build Now to run the build job.
12. Once the build completes, click SonarQube Analysis Summary to display the
SonarQube Analysis Summary page, which shows the SonarQube server URL for the
job and the analysis summary.
8. In the After Build tab, add the SonarQube Result Publisher action.
9. Select Apply SonarQube quality gate status as build status and Archive Analysis
Files.
10. Click Save to save the build configuration.
11. From the Build Details page, click Build Now to run the build job.
12. Once the build completes, click SonarQube Analysis Summary to display the
SonarQube Analysis Summary page, which shows the SonarQube server URL for the
job and the analysis summary.
7-76
Chapter 7
Configure and Run Project Jobs and Builds
Create a Sonarqube Analysis Report for a VB Studio Project with Javascript Sources
The VB Studio build system supports Sonarqube analysis for Java using Maven and Gradle
during building and packaging. This is for Java apps, not visual applications. It doesn't provide
built-in support for analyzing Javascript sources. If you need to perform a Sonarqube analysis
for Javascript sources, such as those created by VB Studio, you'll need to create your own
Sonarqube analysis report by using the Unix Shell builder and then uploading the results to
Sonarqube.
There are two ways to create a Sonarqube analysis report on Javascript sources in VB Studio:
• If the project being built is a Maven project, you'll need to direct the Sonar Scanner Maven
plugin to include the JS files for analysis.
• If the project is a VB Studio project that is purely Javascript, you'll need to install and use
the sonar-scanner command line tool to do the analysis.
7-77
Chapter 7
Configure and Run Project Jobs and Builds
unzip sonar-scanner-cli-4.6.0.2311-linux.zip
c. Run the scanner to perform the analysis, after explicitly specifying which Javascript
sources you want it to analyze, as in -Dsonar.sources=UiServer/src/main/webapp::
sonar-scanner-4.6.0.2311-linux/bin/sonar-scanner
-Dsonar.host.url=$SONAR_URL
-Dsonar.login=$SONAR_LOGIN
-Dsonar.password=$SONAR_PASSWD
-Dsonar.sources=UiServer/src/main/webapp
-Dsonar.projectName=$SONAR_PROJECT_NAME
-Dsonar.projectKey=$SONAR_PROJECT_KEY
d. Click Save.
5. Run the build and check the build log to make sure that the analysis was successful:
[2021-04-01 22:12:20] INFO: ------------- Run sensors on module
Project1.Sonar_8_8_sonar_scanner
[2021-04-01 22:12:20] INFO: Load metrics repository
[2021-04-01 22:12:20] INFO: Load metrics repository (done) | time=486ms
[2021-04-01 22:12:22] INFO: Sensor CSS Metrics [cssfamily]
[2021-04-01 22:12:22] INFO: Sensor CSS Metrics [cssfamily] (done) | time=50ms
[2021-04-01 22:12:22] INFO: Sensor CSS Rules [cssfamily]
[2021-04-01 22:12:23] INFO: 12 source files to be analyzed
[2021-04-01 22:12:23] INFO: 12/12 source files have been analyzed
[2021-04-01 22:12:23] INFO: Sensor CSS Rules [cssfamily] (done) | time=1292ms
[2021-04-01 22:12:23] INFO: Sensor JaCoCo XML Report Importer [jacoco]
[2021-04-01 22:12:23] INFO: 'sonar.coverage.jacoco.xmlReportPaths' is not defined.
Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/
jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml
[2021-04-01 22:12:23] INFO: No report imported, no coverage information will be
imported by JaCoCo XML Report Importer
[2021-04-01 22:12:23] INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) |
time=3ms
[2021-04-01 22:12:23] INFO: Sensor JavaScript analysis [javascript]
[2021-04-01 22:12:26] INFO: 13 source files to be analyzed
[2021-04-01 22:12:28] INFO: 13/13 source files have been analyzed
[2021-04-01 22:12:28] INFO: Sensor JavaScript analysis [javascript] (done) |
time=4827ms
[2021-04-01 22:12:28] INFO: Sensor C# Project Type Information [csharp]
[2021-04-01 22:12:28] INFO: Sensor C# Project Type Information [csharp] (done) |
time=1ms
[2021-04-01 22:12:28] INFO: Sensor C# Properties [csharp]
[2021-04-01 22:12:28] INFO: Sensor C# Properties [csharp] (done) | time=0ms
[2021-04-01 22:12:28] INFO: Sensor JavaXmlSensor [java]
[2021-04-01 22:12:28] INFO: Sensor JavaXmlSensor [java] (done) | time=1ms
[2021-04-01 22:12:28] INFO: Sensor HTML [web]
[2021-04-01 22:12:28] INFO: Sensor HTML [web] (done) | time=151ms
7-78
Chapter 7
Configure and Run Project Jobs and Builds
7-79
Chapter 7
Configure and Run Project Jobs and Builds
If you use multiple browsers, the build executor will categorize the results by browser.
9. To mark the build as failed when JUnit tests fail, select the Fail the build on fail tests
check box.
10. To archive videos and image files, select the Archive Media Files check box.
Action How To
View the last build's test 1. Open the job’s details page.
results
2. Click Tests .
The Test Results page displays, showing the metrics for the most recent
run.
3. Click Tests .
View a test suite's details On the Test Results page, click the All Tests toggle button. From the Suite
Name, click the suite name.
The test suite details page is displayed.
View a test's details Open the test suite details page and click the test name.
To view details of a failed test, on the Test Results page, click the All Failed
Tests toggle button, and then click the test name.
View test results history On the Test Results page, click View Test Results History.
7-80
Chapter 7
Configure and Run Project Jobs and Builds
7-81
Chapter 7
Configure and Run Project Jobs and Builds
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
After the organization administrator adds a VM build executor to the build executor template,
you can create and configure a job to use that build executor template and Xvfb.
2. Click Settings .
3. In the Software tab, select the Xvfb build executor template or any minimum required build
executor template.
4. Click Configure .
5. Click the Before Build tab.
6. From Add Before Build Action, select Xvfb Wrapper.
7. In Display Number, specify the ordinal number of the display the Xvfb server is running
on. The default value is 0. If left empty, a random number is chosen when the build runs.
8. In Screen offset, specify the offset for display numbers. The default value is 0.
9. In Screen Size (WxHxD), specify the resolution and color depth of the virtual frame buffer
in the WxHxD format. The default value is 1024x758x24.
10. In Additional options, specify additional Xvfb command line options, if necessary. The
default options are -nolisten inet6 +extension RANDR -fp /usr/share/X11/fonts/
misc.
11. In Timeout in seconds, specify the timeout duration for the build to wait before returning
control to the job. The default value is 0.
7-82
Chapter 7
Configure and Run Project Jobs and Builds
12. If you don’t want to log the Xvfb output in the build log, deselect the Log Xvfb output
check box. The check box is selected by default.
13. If you don’t want to keep the Xvfb server running for post-build steps, deselect the
Shutdown Xvfb with whole job, not just with the main build action check box. The
check box is selected by default.
14. Click Save.
Publish Javadoc
If your application source code files are configured to generate Javadoc, you can configure a
job to publish Javadocs when a build runs:
1. Open the job’s configuration page.
2. Click the After Build tab.
3. From Add After Build Action, select Javadoc Publisher.
4. In Javadoc Directory, specify the workspace path where the build executor would publish
the generated Javadoc. By default, the path is set to target/site/apidocs .
5. To configure the build executor to retain Javadoc for each successful build, select the
Retain Javadoc for each build check box.
You may want to enable this otion if you have a need to browse Javadoc of older builds,
but be cognizant that this practice will consume more disk space that not retaining those
older Javadocs. By default, the check box isn’t selected.
6. Click Save.
Archive Artifacts
You can manually download archived artifacts. By default, build artifacts are kept as long as
the build log is.
If you want a job's builds to archive artifacts, you can do so as an after build action:
1. Open the job’s configuration page.
2. Click Configure .
3. Click the After Build tab.
4. Click Add After Build Action and select Artifact Archiver.
5. In Files to archive, enter a comma-separated list of file paths, such as
env/,SQL/,target/, using the path relative to the workspace, not the full file path.
You can use wildcards to archive multiple files. For example, you could use env/** to
archive all files in all subdirectories of the env directory. Or, you could use env/**/*.bin to
archive all files that end with the .bin extension in all subdirectories of the env directory.
Here are some more examples:
• **/* or ** archives all files in all directories and subdirectories
• **/*.sql archives all files that have a .sql file extension, in all directories and
subdirectories
• env/* matches all files in the env folder itself, but doesn't include any files in any
subdirectories
7-83
Chapter 7
Configure and Run Project Jobs and Builds
The patterns can be more complex too. For example, you could use **/target/*.jar to
archive .jar files in all target directories your workspace.
6. In Files to exclude, enter a comma-separated list of files, including the path, as described
in the previous step.
A file that matches the exclude pattern won’t be archived even if it matches the pattern
specified in Files to archive.
7. If your application is a Maven application and you want to archive Maven artifacts, select
Archive Maven Artifacts.
To archive the Maven POM file along with the Maven artifacts, select Include POM.xml.
8. Click Save.
2. Click Settings .
3. Click the General tab, if necessary.
4. If not selected, select Discard Old Builds.
5. Configure the discard options.
6. Click Save.
Old builds will be discarded after you save the job configuration and after a job has been built.
2. Click Configure .
3. Click the Before Build tab.
4. Click Add Before Build Action and select Copy Artifacts.
5. In From Job, select the job whose artifacts you want to copy.
6. In Which Build, select the build that generated the artifacts.
7. If you select the Use last successful build if not run in pipeline option, the last
successful (other) build will be used if this build isn't run in a pipeline.
The build will fail if you don't select the option but do select the upstream build in the
previous step and don't run the build in a pipeline.
8. In Artifacts to copy, specify the artifacts to copy. When a build runs, the artifacts are
copied with their relative paths.
If you don't specify a value, the build will copy all artifacts. The archive.zip file is never
copied.
9. In Target Directory, specify the workspace directory where the artifacts will be copied.
Be sure that directory names don't contain a forward slash or null character. You can
optionally include parameters in the path, such as:
7-84
Chapter 7
Configure and Run Project Jobs and Builds
data/$myDir/$myDir2/stuff
If Target Directory is left empty, the artifacts will be copied to the root directory of the
workspace.
10. To flatten the directory structure of the copied artifacts, select Flatten Directories.
11. By default, if a build can’t copy artifacts, it'll be marked as failed. If you don’t want the build
to be marked as failed, select Optional (Do not fail build if artifacts copy failed).
12. Click Save.
Note:
If you're trying to access a renamed job by using a link from the activities feed (or
from a bookmarked link), you will be unable to do so because that job no longer
exists. A page with a message indicating that there was an error loading the Jobs
page is displayed, along with some text that says that the job could not be found
because it may have been deleted or renamed. Click the Take me back to Jobs
button and the Builds page's Jobs tab will be displayed.
Action How To
Rename the job or 1. Open the job’s configuration page.
update its description
2. Click Settings .
3. Click the General tab.
4. In Name and Description, update the job name and description.
5. Click Save.
2. Click Settings .
3. Click the General tab.
4. Select the Execute concurrent builds if necessary check box.
By default, only one build of a job runs at a time. The next build runs after
the running build finishes.
5. Click Save.
7-85
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Set a quiet period 1. Open the job’s configuration page.
2. Click Settings .
3. Click the Advanced tab.
4. Select the Quiet period check box and specify the amount of time (in
seconds) a new scheduled build of the job will wait before it runs.
If the build executor is busy with too many builds, setting a longer quiet
period can reduce the number of builds.
5. Click Save.
2. Click Settings .
3. Click the Advanced tab.
4. Select the Retry Count check box.
5. In Build Retries specify the number of times the build executor tries the
build. By default, the build executor tries five times to run a build that fails.
You can increase or decrease the count.
In SCM Retries specify the number of times the build executor tries the
build to checkout files from the Git repository. You can increase or
decrease the default count.
6. Click Save.
7-86
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Set the maximum size of 1. Open the job’s configuration page.
the console log
2. Click Settings .
3. Click the Advanced tab.
4. In Max Log Size (MB), set the size. The default value is 50 MB and the
maximum value is 1000 MB.
5. Click Save.
Action How To
Disable a build action In any tab on the Job Configuration page, for any enabled build action,
change the toggle from Enabled to Disabled and click Save.
Use this toggle to disable the build step or action temporarily. If a step or
action is disabled, it'll be skipped when the job is run.
If you see a validation error while trying to save a job configuration after
adding, then disabling, a new build action, make sure that you filled out all
required fields. Required fields are still required, even though the build action
is disabled. You must either fill out the required field(s) in the disabled build
action or remove the build action before trying to resave the job configuration.
Enable a disabled build In any tab on the Job Configuration page, for any disabled build action,
action change the toggle from Disabled to Enabled and click Save.
Expand/collapse build In the Steps tab on the Job Configuration page, mouse over any build step
steps header to collapse or expand the build step.
Reorder build actions In any tab on the Job Configuration page that has multiple build actions, use
the Up and Down icons with any build action to reorder and then click
Save.
Remove a build action In any tab on the Job Configuration page, for any enabled or disabled build
action, click Remove and then click Save.
2. Click Settings .
3. Click the Software tab.
4. In Available Software, from the Java drop-down list, select the Java SE version (1.8.x,
11.x, 17.x, or 18.x) that you want to use.
7-87
Chapter 7
Configure and Run Project Jobs and Builds
Note:
Java 1.8.x is deprecated in the 22.10.0 release. Java 17.x has been added to all
system build executor templates. Oracle recommends that you upgrade any of
your jobs that currently use Java 1.8.x to this version.
Before changing a job's Java version, ask your organization administrator to add the
version you want to use in the job's build executor template if you don't see the version
already there. If an organization administrator adds multiple version of Java to a build
executor template, users can select the Java version they want to use in a job from the
job's configuration page.
Instead of selecting Java, you could select Java 1.8.x (Graal VM). GraalVM is a universal
virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based
languages like Java, Scala, Groovy, Kotlin, Clojure, and LLVM-based languages such as C
and C++. To learn more about GraalVM, see https://www.graalvm.org/docs/.
5. Click Save.
Note:
To find your organization administrator, click Contacts under your user profile. Your
administrator, or a list of administrators, will display.
See Create and Manage Build Executor Templates in Administering Visual Builder Studio.
Here's how you can change your job’s build executor template after you create the job:
1. Open the job’s configuration page.
2. Click Settings .
3. Click the Software tab.
4. Select the build executor template that you want to use for your builds.
5. Click Save.
7-88
Chapter 7
Configure and Run Project Jobs and Builds
Run a Build
You can run a job’s build manually or configure the job to trigger it automatically on an SCM
commit or according to a schedule:
Action How To
Run a build manually Open the job’s details page and click Build Now.
Note:
If you've set up this job to run automatically on
SCM commit, and you have specified Include/
Exclude criteria, we'll show you a list of
branches that match the pattern so you can pick
one to build. For example, if your Include criteria
is branch* and test*, then we'll show you all
the branches that begin with those terms. If you
specified Exclude instead, we'll show all the
branches that don't begin with those terms—
likely quite a few. If we don't find a branch that
matches, we'll build your default branch instead.
You can also run a job’s build from the Jobs tab on the Builds page. In the
selected job's row, click the Actions menu and select Build.
Run a build on SCM See Run a Build Automatically on an SCM Commit.
commit
Run a build on a See Trigger a Build Automatically on a Schedule.
schedule
A job that takes more than eight hours to build will fail. If you know that a job's processes will
take more than eight hours to execute, you should distribute those processes in multiple jobs
and run them together in a pipeline.
7-89
Chapter 7
Configure and Run Project Jobs and Builds
Log/Report Description
View all files that have changed in the build.
Changes
When a build is triggered, the build system checks the job’s Git repositories
for any changes to the SCM. If there are any updates, the SCM Change log
displays the files that were added, edited or removed.
View the latest archived artifacts generated by the build.
Artifacts
View the build's Javadoc output.
Javadoc
The report is available only if the application’s build generated Javadoc.
View the log of build’s JUnit test results.
Tests
To open the Test Suite details page, on the Test Results page, click the All
Tests toggle button and click the suite name in the Suite Name column.
To view details of a test, on the Test Results page, click the All Failed Tests
toggle button and then click the test name link in the Test Name column. You
can also click the All Tests toggle button, open the test suite details page,
and then click the test name link in the Test Name column.
View the last build’s log. In the log page, review the build log. If the log is
Build Log
displayed partially, click the Full Log link to view the entire log. To download
the log as a text file, click the Download Log link.
View the Git SCM polling log of the builds that displays the log of builds
Git Log
triggered by SCM polling. The log includes scheduled builds and builds
triggered by SCM updates.
In the Job Details page of a job, click Latest SCM Poll Log to view the Git
SCM polling log of the last build.
View the Audit log of user actions.
Audit
You can use the Audit log to track the user actions on a build. Use the log to
see who performed particular actions on the job. For example, you can see
who canceled a build of the job, or who disabled the job and when was it
disabled.
View the SonarQube analysis report for the job.
SonarQube
View the Security Vulnerabilities report that identifies direct and transitive
Vulnerabilities
dependencies in the job's Maven, Node.js, Javascript, and/or Gradle projects.
1. From the job’s details page, click Build Log to open the build log.
The log file opens and displays the lines (up to 100,000) as it lazy loads.
7-90
Chapter 7
Configure and Run Project Jobs and Builds
2. Scroll down to examine the log or use the floating menu at the top.
3. Click the Go To Bottom button and check the status of the build.
7-91
Chapter 7
Configure and Run Project Jobs and Builds
4. If your log file exceeds 100,000 lines, scroll up from the end of the log and you'll see a
message indicating how many lines were skipped.
7-92
Chapter 7
Configure and Run Project Jobs and Builds
5. Click the Download Log link and download the log file to your computer where you can
open it in your text editor and scroll through the lines that were skipped in the log.
6. Click the Go To Top button to return to the beginning of the log and examine the
settings and parameters that were used in the build.
The log lazy loads as you scroll. You can see as much as you want to and can scroll down to
about 100,000 lines. If you scroll that far, you'll see the skipped lines notice plus the last 100
lines. If you click the Go To Bottom button, all those lines will be loaded, the skipped lines
notice will be displayed, and then the last 100 lines will be shown.
Clicking the Go To Top button at that point will not change what is loaded. You'll still see
the first 100,000 lines plus the last 100.
Tip:
To sort the table data by a column, right-click inside the build history table column
and select the sort order from the Sort context menu.
7-93
Chapter 7
Configure and Run Project Jobs and Builds
Pipeline The build was initiated by a pipeline. Click to open the build’s pipeline
instance.
Periodic Build Trigger The build was triggered by a periodic build trigger.
Build System The build was started or rescheduled by the build system.
• In the Build column, an * in the build number indicates the build is annotated with a
description. Mouse over the build number to see the description.
• The list doesn’t show discarded and deleted jobs.
• If a running build remains stuck in the queued state for a long time, you can mouse over
the Queued status to display a message about the problem.
If the build uses a VM build executor, you can contact the organization administrator to
check its status.
• To sort the table data in ascending or descending order, click the header column name and
then click the Previous or Next icon in the column header.
As an alternative, you can right-click inside the table column and select the sort order from
the Sort context menu.
• Only project members can delete builds. Non-members cannot.
To open the Audit log, click Audit on the job's details page.
The log displays information such as:
• Who initiated or deleted a build (either by user email address or pipeline name)
A build can also be triggered by a timer, a commit to a Git repository, or an upstream job.
• Time and date the build was queued, started, and completed
7-94
Chapter 7
Configure and Run Project Jobs and Builds
Action How To
Keep a build forever A build that’s marked "forever" isn’t removed if a job is configured to discard
old builds automatically. You can’t delete it either.
To keep a build forever, click Configure, select the Keep Build Forever
check box, and click Save.
Add a name and Adding a description and a name is especially helpful if you mark a particular
description to a build build to keep it forever and not get discarded automatically. When you add a
description to a build, an * is added to the build number in the Build History
table.
To keep a build forever, click Configure. In Name and Description, enter the
details, and click Save.
Open a build’s log Click Build Log.
Delete a build Click Delete.
2. Click Artifacts .
To download a particular build's artifacts, in the Build History, click the build number, and
then click Artifacts .
3. Expand the directory structure and click the artifact link (file or directory) to download it.
Watch a Job
You can subscribe to email notifications that you'll receive when a build of a job succeeds or
fails.
7-95
Chapter 7
Configure and Run Project Jobs and Builds
To get email notifications, enable them in your user preferences, and then set up a watch on
the job:
Action How To
Enable your email In your user preferences page, select the Build Activities check box.
notifications preference
Watch a job 1. Open the job’s details page.
2. Click the On toggle button, if necessary.
3. Click CC Me.
4. In the CC Me dialog box, to receive email when the build is successful,
select the Successful Builds check box. Select Failed Builds to receive
email when the build fails.
5. Click OK.
7-96
Chapter 7
Configure and Run Project Jobs and Builds
To get the following, a timestamp that shows when the build started and a
build number, you need to add two additional environment variables in your
shell script:
STARTED_BY_ORIGIN Who or what started or triggered the pipeline run. The value represents what
the origin of the entire pipeline run was and what was the origin of the build
happening. It can be a USER, SYSTEM: SCM, or SYSTEM: PERIODIC-
TRIGGER. Whatever started the first build that started the pipeline is
returned.
7-97
Chapter 7
Configure and Run Project Jobs and Builds
The log for Job5, which executed after the last build of the three parallel jobs
(Job2, Job3, and Job4) finished running, shows that Job3 of the three parallel
jobs was built last and triggered the build for Job5, the last job in the pipeline.
7-98
Chapter 7
Configure and Run Project Jobs and Builds
The first line in bold indicates that the pipeline run was started by the pipeline
(MyPipeline), a trio of jobs were built in parallel, and the build of Job3 finished
after the other two, so it has the asterisk next to it, indicating that it was the
trigger for starting the build of Job5. The other bold line, the Started By
Upstream line, shows the same information. This information comes from a
shell script that was added to a Unix Shell build step in Job5. You can see in
the log where the script was run.
Note:
Only the direct upstream builds are listed, as
they are the direct conditions to start the job
whose log is being examined. For example, for
the pipeline with Job1 followed by Job2 followed
by Job3, the log for Job3 will list only Job2,
which triggers the build of Job3. If all the
pipeline jobs build consecutively, not in parallel,
when you examine the Started by line in the log
for the current build, you'll see just one build
listed, with an asterisk next to it, indicating that it
was the build that triggered the current build.
7-99
Chapter 7
Configure and Run Project Jobs and Builds
Tip:
• You can run the env command as a Shell build step to view all environment
variables of the build executor.
• Some Linux programs, such as curl, only support lower-case environment
variables. Change the build steps in your job configuration to use lower-case
environment variables:
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export no_proxy="$NO_PROXY"
curl -v http://www.google.com
7-100
Chapter 7
Run Jobs in a Pipeline
Software Variables
SOA 12.2.1.4 JAVACLOUD_HOME_SOA=/opt/Oracle/
MiddlewareSOA_12.2.1.4.0/jdeveloper/cloud/oracle-
javacloud-sdk/lib
JAVACLOUD_HOME_SOA_12_2_1=/opt/Oracle/
MiddlewareSOA_12.2.1.4.0/jdeveloper/cloud/oracle-
javacloud-sdk/lib
MIDDLEWARE_HOME_SOA=/opt/Oracle/
MiddlewareSOA_12.2.1.4.0
MIDDLEWARE_HOME_SOA_12_2_1=/opt/Oracle/
MiddlewareSOA_12.2.1.4.0
ORACLE_HOME=/opt/Oracle/MiddlewareSOA_12.2.1.4.0/
jdeveloper
ORACLE_HOME_SOA=/opt/Oracle/MiddlewareSOA_12.2.1.4.0/
jdeveloper
ORACLE_HOME_SOA_12_2_1=/opt/Oracle/
MiddlewareSOA_12.2.1.4.0/jdeveloper
WLS_HOME_SOA=/opt/Oracle/MiddlewareSOA_12.2.1.4.0/
wlserver
WLS_HOME_SOA_12_2_1=/opt/Oracle/
MiddlewareSOA_12.2.1.4.0/wlserver
Software Variables
JDeveloper JAVACLOUD_HOME=/opt/Oracle/Middleware_12.2.1.4.0/
12.2.1.4 jdeveloper/cloud/oracle-javacloud-sdk/lib
MIDDLEWARE_HOME=/opt/Oracle/Middleware_12.2.1.4.0
ORACLE_HOME=/opt/Oracle/Middleware_12.2.1.4.0/
jdeveloper
WLS_HOME=/opt/Oracle/Middleware_12.2.1.4.0/wlserver
7-101
Chapter 7
Run Jobs in a Pipeline
What Is a Pipeline?
A Pipeline lets you define dependencies of jobs and create a path or a chain of builds. You can
use pipelines to run continuous integration jobs.
To create a pipeline, you design a pipeline diagram where you define the dependencies of
jobs. When you create a dependency of a job over another, you define the order of automatic
builds of the dependent jobs. If required, the dependent jobs can be configured to use artifacts
of the parent job too.
Note:
YAML pipelines are created in a .yml file that's stored in any of the project's Git
repositories. You can view a YAML pipeline diagram layout, but you can't configure a
YAML pipeline in the pipeline designer. See Configure Jobs and Pipelines with YAML.
In this diagram, Job 2 depends on Job 1 and runs after Job 1 is successful.
In this diagram, Job 2, Job 3, and Job 4 depend on Job 1 and run after Job 1 is successful. Job
2, Job 3, and Job 4 are scheduled in parallel. They can all run at the same time.
7-102
Chapter 7
Run Jobs in a Pipeline
• Job 1 is the initial job. Running it triggers a chain. All jobs after it in the chain (Job 2
through Job 8) run automatically, one after the other.
You can create multiple pipeline diagrams of jobs. If multiple pipelines have some common
jobs, then multiple builds run some of those jobs. For example, in this figure, Pipeline 1 and
Pipeline 2 have common jobs:
Let’s assume that Pipeline 1 is defined first and Pipeline 2 is defined second. If both pipelines
are triggered, the builds run in this order:
1. A build of Job 1 runs.
2. Builds of Job 2 and Job 3 of Pipeline 1 get in the build executor queue after Job 1 is
successful. A build of Job 2 of Pipeline 2 also gets in the build executor queue after Job 1
is successful.
3. Builds of jobs in build executor queue run on first-come first-served basis. So, Job 2 and
Job 3 of Pipeline 1 run first. Let’s call the build as Build 1 of Job 2 and Job 3. Then,
another build of Job 2 of Pipeline 2 runs. Let’s call it Build 2 of Job 2.
4. A build of Job 4 of Pipeline 1 joins the build executor queue as soon as Job 2 is
successful. A build of Job 3 of Pipeline 2 also joins the queue when Job 2 is successful.
5. As soon as the build executor is available, Build 1 of Job 4 runs and Build 2 of Job 3 also
runs. Remember that Build 1 of Job 3 ran in Pipeline 1.
6. After a build of Job 3 of Pipeline 2 is successful, a build of Job 4 of Pipeline 2 joins the
queue and runs when the build executor is available. Remember that this is Build 2 of Job
4 as Build 1 ran in Pipeline 1.
While creating multiple pipeline diagrams with common jobs, be careful if a job is dependent on
artifacts of the parent job.
Pipeline Layout
From a pipeline's Layout page, you can view the pipeline diagram and textual layout summary.
To access a pipeline's layout page:
• In the Pipeline Details page, click the View Layout button.
7-103
Chapter 7
Run Jobs in a Pipeline
• In the Pipelines tab, click the Actions menu for the pipeline you want to view and
select View Layout.
In a pipeline diagram, the arrow colors represent the dependencies between jobs in the flow.
• Green: The child job will run if the parent job is successful.
• Red: The child job will run if the parent job fails.
• Orange: The child job will run if the test run of the parent job fails.
• Purple: Two or more conditions point to the same node.
Hover over an arrow to view information on the conditions and dependencies between child
and parent jobs.
Hover over a job note to view the job number, job ID, and dependencies between child and
parent jobs.
To view a textual summary of the pipeline flow, click the Pipeline Layout Summary in the
upper right corner of the page.
Note:
If you're creating a new pipeline or renaming an existing one and see a message that
the pipeline name you entered matches a pattern that is restricted, you don't have
access to any pipeline name matching the glob pattern that restricts the pipeline.
Enter a name that doesn't match the name restricted by the glob pattern or contact
the pipeline owner and request to be added as an authorized user (or member of an
authorized group).
See Protect Your Pipeline: Restrict Who Can Start It Manually or Edit Its
Configuration.
7-104
Chapter 7
Run Jobs in a Pipeline
Note:
If you're trying to access a renamed or deleted pipeline by using a link from the
activities feed (or from a bookmarked link), you will be unable to do so because that
pipeline no longer exists. A page with a message indicating that there was an error
loading the Pipelines page is displayed, along with some text that says that the
pipeline could not be found because it may have been deleted or renamed. Click the
Take me back to Pipelines button and the Builds page's Pipelines tab will be
displayed.
Action How to
Create a pipeline In the Pipelines tab:
a. Click + Create Pipeline.
The Create Pipeline dialog is displayed.
b. In Name and Description, enter a unique name and a description,
respectively.
c. (Optional) Select the appropriate check boxes:
• Auto start when pipeline jobs are built externally: Select this
check box to trigger a pipeline build when any job in the pipeline
is triggered externally (that is, started from outside the pipeline).
In the pipeline, builds of jobs downstream from the started job will
be run in the order shown in the diagram. Builds of jobs upstream
from the externally-started job in the pipeline won't be run.
• Auto start only when trigger jobs are built: If you selected the
Auto start option in the previous step, you can select this check
box to limit the jobs that can automatically start the pipeline to
trigger jobs only. This effectively excludes all jobs that aren't
trigger jobs.
If both options are selected, when a non-trigger pipeline job is
started manually, it won't be shown in the Pipeline Instances
page. It will be shown on the Jobs Overview page instead,
because the Trigger only option was selected.
• Disallow pipeline jobs to build externally when the pipeline
is building: Select this check box to disable manual or automatic
builds of the jobs that are part of the pipeline when the pipeline is
running.
d. Click Create.
e. In the Pipeline Configuration page, design the pipeline, and click
Save.
7-105
Chapter 7
Run Jobs in a Pipeline
Action How to
Rename a pipeline or In the Pipelines tab:
update its description
a. Choose Configure Pipeline from the Actions menu in the
Pipelines tab (or click the Configure button from a pipeline's details
page).
b. Select Settings if it isn't already selected.
c. In Name, update the pipeline name.
d. Click Save.
Create a pipeline using In VB Studio, you can use a YAML file (a file with .yml extension) to store a
YAML job or pipeline configuration in any of the project's Git repositories. See
Configure Jobs and Pipelines with YAML.
Configure a pipeline The pipeline configuration page opens immediately after you create a
pipeline. You can also configure an existing pipeline by choosing
Configure Pipeline from the Actions menu in the Pipelines tab or
clicking the Configure button from a pipeline's details page.
Note:
If you are configuring an edit restricted pipeline:
• The Pipelines page's Configure Pipeline and Delete
Pipeline options in the Actions menu are disabled.
• The Pipeline Details page doesn't display the Configure or
Delete buttons.
• The Delete option in the Run History page's Actions
menu is disabled.
• The Delete button is not displayed on the Pipeline Run
Instance page.
• The lock icon will be displayed in the Private column in
the list of pipelines on the Pipelines page.
• The Pipeline Protection page's pipelines list (accessed
from the tab under the Project Administration : Builds
tile) uses the same icon to identify protected pipelines. See
Protect Your Pipeline: Restrict Who Can Start It Manually
or Edit Its Configuration.
Run a pipeline Choose Run Pipeline from the Actions menu in the Pipelines tab or
click the Run button from a pipeline's details page.
Note:
There can be a maximum of five (5) instances of the same
pipeline running simultaneously. If there is an attempt to exceed
this limit, VB Studio will display a message that an additional
instance of the pipeline failed to start because the maximum
number of instances were already running.
Delete a pipeline Choose Delete Pipeline from the Actions menu in the Pipelines tab
or click the Delete button from a pipeline's details page.
7-106
Chapter 7
Run Jobs in a Pipeline
3. Click the Actions menu for the pipeline that you want to configure and select
Configure Pipeline.
4. Click the Configure button.
5. To add a new start job, right-click the Start node, and select Add New Start Jobs.
Tip:
You can also press the Add Jobs button to add jobs to the pipeline configuration
diagram, then right-click Start node then select Edit Start Jobs to link the job
you added to the Start node.
6. Search for and select the jobs that you want to add, then click Save.
7-107
Chapter 7
Run Jobs in a Pipeline
7. Right-click a job to add or edit child jobs, delete the selected job, or open the selected job.
Note:
To add a job that triggers a pipeline, click +Add Jobs, then search for and add the
trigger job.
7-108
Chapter 7
Run Jobs in a Pipeline
2. Search for and select the child job, then click Save.
A dependency is now formed.
In the above example, Job 2 is now dependent on Job 1. A build of Job 2 will run
automatically after every Job 1 build is successful.
7-109
Chapter 7
Run Jobs in a Pipeline
2. Search for and select the child jobs, then click Save.
A dependency is now formed. In the above example, Job 2, Job 3, and Job 4 are now
dependent on Job 1. Job 2, Job 3, and Job 4 run automatically after Job 1 completes
successfully.
2. Right-click one of the parent jobs, select Add, then select a dependency type for the child
job.
3. Search for and select the child job, then click Save.
7-110
Chapter 7
Run Jobs in a Pipeline
4. Right-click the second parent job, select Edit, then choose a dependency type for the child
job.
6. Repeat Steps 4 and 5 for each parent job that the child job is dependent on.
7-111
Chapter 7
Run Jobs in a Pipeline
A dependency is now formed. In the above example, Job 4 is dependent on Job 1, Job 2, and
Job 3. A build of Job 4 will run automatically after Job 1, Job 2, and Job 3 are successful.
2. Right-click the parent job, select Add, then select the dependency for the child job.
3. Search for and add the child job, then click Save.
The color of the dependency arrow will change to reflect the current dependency.
7-112
Chapter 7
Run Jobs in a Pipeline
If you configure the pipeline using YAML, you'll have access to additional options that
aren't available in the UI. However, the dependency conditions in YAML all map to the
three that you have access to in the UI. See Set Dependency Conditions in Pipelines
Using YAML.
Note:
You can also use this procedure to update the formatting of a pipeline. For example,
if you a diagram that looks confusing because of flow arrows that cross over each
other, you can rebuild the diagram by deleting child nodes and editing the
dependencies.
Protect Your Pipeline: Restrict Who Can Start It Manually or Edit Its
Configuration
If you want to prevent unauthorized users from manually starting your pipeline or editing (and
changing) its configuration, you can impose those restrictions from the Pipeline Protection tab
on the Project Administration Builds page:
If a pipeline in the list of pipelines to the left has a lock icon next to it, it has already
been protected. A protected pipeline's restrictions can still be modified, removed, or the list
of authorized users and groups can still be changed.
The Protection Settings dialog box is displayed.
7-113
Chapter 7
Run Jobs in a Pipeline
With this setting, only authorized users and groups will be allowed to edit the pipeline
configuration.
6. Click in the Authorized Users/Groups field to display a dialog that lists the project's
Groups and Users you can select from.
Under Users, you can see a flattened list of all users that are members of the group(s) as
well as ones that were added individually. For example, the dev-group members (Clara
Coder, Don Developer, and Tina Testsuite) appear in the Users list, along with Alex Admin,
who was added individually. From the list, select one or more groups and/or users. Don't
forget to add yourself.
7-114
Chapter 7
Run Jobs in a Pipeline
Note:
Users in Oracle Cloud Application environments that have multiple VB Studio
instances in different identity stripes have username strings that include the
environment name, where that user has been defined. Since a unique user may
have been defined for multiple environments, this format ensures that one
identity can be distinguished from that user's other unique identities. This should
help you select the correct user to add.
7. Select the Allow any member of the project to manually start this pipeline checkbox to
leave the restriction for editing the pipeline by authorized users and groups in place but lift
the restriction on who can manually start the pipeline.
7-115
Chapter 7
Run Jobs in a Pipeline
If you select this checkbox, any project member with sufficient privileges can start the
pipeline manually, even if they haven't been specified as an authorized user or are a
member of a group that has been authorized. This effectively cancels any previous
restriction for starting or running the pipeline manually.
8. Click Save.
When a pipeline is protected, the Pipeline Details page won't show the Configure and Delete
buttons to unauthorized users for protected pipelines and the Configure Pipeline option in the
Actions menu on the Pipelines page won't be available. However, an unauthorized user
could still inadvertently access a protected pipeline, perhaps by using a bookmarked URL that
was saved before the user lost access, and this is what they'll see:
The lock icon in the Private column in the list of pipelines on the Pipelines page identifies
protected pipelines.
The project's activity feed shows all edit-restricting activities, thereby providing a historical
record of showing how the pipeline was protected. The pipeline log also records these
protective activities and provides a historical accounting that can be referred to later, if needed.
Tip:
Protecting the pipeline prevents unauthorized users from editing the configuration but
it does not prevent anyone from running the pipeline. The only way to limit that is to
protect the initial job (the one that follows the Start node) by changing its Job
Protection Settings to Private. That way, if the job is triggered in a pipeline by an
unauthorized user or group, it won't be initiated. By default, the Job Protection
settings don't allow commits and triggers to start a private job. You may, however,
click the Allow commits and triggers to start this private job button to allow the
job to be initiated if it is triggered by an SCM commit or by a timer. See Configure Job
Protection Settings for more information.
7-116
Chapter 7
Run Jobs in a Pipeline
the pipeline. The pipeline run pauses, while it waits for approvals. Once the approvers
approve, the pipeline run resumes building. If the approvers reject, the pipeline run stops and
returns a failed status. The project's activity stream displays pipeline approval-related activities
when a pipeline pauses for approval, an approver approves or rejects a pipeline, and when the
pipeline resumes after approval.
Manual approval functionality involves four main tasks:
• Configuring the approvers
See Create a Pipeline Approvers Group for Your Project.
• Adding the approval item to the pipeline during design time
See Add a Manual Approval Item to Your Pipeline at Design Time.
• Notifying the approvers that they need to take action
See Notify the Pipeline Approvers.
• Approving or rejecting the manual approval during run time
See Approve the Manual Approval when the Pipeline Runs.
Notice that a Default Approver Group has already been set up for the project. This group
has no members initially. Its approvers can approve any pipelines that isn't restricted by a
7-117
Chapter 7
Run Jobs in a Pipeline
specific approval group. If the default group has no approvers, however, nobody will be
allowed to add any approvers to any pipelines in the project. Note that pipelines can't be
added to this group.
Add the default pipeline approvers now:
a. Select the default group.
The Configure Pipeline Approvers dialog displays.
b. In the Configure Pipeline Approvers dialog, click in the Approvers field and select
one or more approvers from the list and add them as default approvers.
c. Click Save.
Now, for any pipeline you create in the Pipeline Designer going forward in the project,
you'll see and be able to select from the list of default approvers you added here.
Tip:
Using this approach only isn't an ideal solution for most organizations. A better
approach would be to also create an approval group for a specific pipeline (or
multiple pipelines). Once you do that, the default group no longer applies to that
pipeline (or pipelines). Proceed to the next step and begin this process.
7-118
Chapter 7
Run Jobs in a Pipeline
4. Enter a name for your group in the Name field (required) and optionally describe the group
in the Description field.
5. Click in the Approvers (Required) area and select the project members you want to add
as approvers. You can also add individual members from a local group, which are listed
along the left panel. (Local groups are created at the Organizational level and added to the
current project.) To add a team member from a local group, expand the group and select
the member's user ID.
This step is required. Approvers you add to this approvers group will also appear in the list
of approvers that you can select in the Pipeline Designer, when you configure the Manual
Approval item (node). See Add a Manual Approval Item to Your Pipeline at Design Time.
Note:
Users in Oracle Cloud Application environments that have multiple VB Studio
instances in different identity stripes have username strings that include the
environment name, where that user has been defined. Since a unique user may
have been defined for multiple environments, this format ensures that one
identity can be distinguished from that user's other unique identities. This should
help you select the correct user to add.
6. Click in the Pipelines area and optionally add the pipeline(s) that will require pipeline
approvals.
7. Click Create.
7-119
Chapter 7
Run Jobs in a Pipeline
You can see the group you just added, on the left, under the Default Pipeline Approvers
group.
When you no longer need the group, click Delete . You'll be prompted to verify that you do
want to remove your pipeline approvers group.
Click the Delete button and remove the group. Otherwise, click Cancel.
7-120
Chapter 7
Run Jobs in a Pipeline
context menu item. When the node is added to the pipeline layout, its appearance is quite
different from that of a Job node, so it's easy to differentiate between them.
Like a Job item, a Manual Approval item can be used with the fork-join layout pattern. That is, it
can be a downstream item of a single upstream Job or a join of multiple upstream Jobs. Once
it has been approved, it can trigger a single downstream job or fork multiple downstream jobs.
However, although you can join multiple upstream jobs to and fork multiple downstream jobs
from an Approval item, you can't use the Approval item itself as one of the joining items.
Note:
If you haven't defined any default approvers yet, you won't be able to use the manual
approval functionality with any pipelines, because you can't add any approvers for
that pipeline. The default approval group applies to any pipeline. Before you try to
add approvals to a pipeline, you must add approvers to the default approvers group
so you have a pool of approvers from which you can select when you define
approvers for a pipeline in the Pipeline Designer or when you create an approval
group and associate it with a specific pipeline (or pipelines).
See Create a Pipeline Approvers Group for Your Project.
After you add a Manual Approval node to your pipeline layout, you'll be presented with a dialog
to configure approvers for your pipeline. If you don't want to configure them now, you can right-
click on the approval item later and select the Configure context menu item, which displays
the dialog you use to configure approvers.)
You can use the Configure dialog to:
• Add or remove one or more approvers (only those who can approve this pipeline).
• View information about the group of approvers, making it easier for you to determine if
you're picking up the correct approver.
• If you've selected multiple approvers, you can mark All or n number of approvers to
enable approval for the approval item.
• Mark one or more approvers as required. Required approvers must approve; all other
approvers are optional.
That is, if three approvers (approver1, approver2, approver3) are selected and approver2
is marked as required, if at least 2 approvers must approve, then one of those two
approvers must be approver2.
If you already configured approvers, when you hover over the Manual Approval node, you can
view information about it. If you haven't configured any approvers for the pipeline, the warning
marker next to the node indicates that you need to configure approvers. The tooltip you see
when you mouse over it provides information that explains how to configure the required
approvers.
Let's step through this process using an example. We could start with a very simple pipeline
that has two jobs and an approval but it may be more interesting and realistic to create one
that has joins and forks. If you already have a pipeline with two jobs, each connected to the
Start node, you can skip to step 8 and start there. Otherwise, start at the beginning.
7-121
Chapter 7
Run Jobs in a Pipeline
7. Search for and select the jobs that you want to add, then click Save.
Here we've selected Job 1 and Job 3.
8. Right click the first job (Job 1) and select Manual Approval, then select Add New
Approval.
7-122
Chapter 7
Run Jobs in a Pipeline
9. Right-click the second job (Job 3) and select Manual Approval, then select Connect to
Existing Approval.
The approval will wait for both jobs to finish before notifying any approvers you configure.
11. Right click the approval item, select Edit Approval.
7-123
Chapter 7
Run Jobs in a Pipeline
12. In the Approvers section, click the Add Approvers field and use the selector to choose the
approvers that can approve this manual approval from the list displayed.
Here we've selected Alex Admin and Clara Coder.
Note:
Users in Oracle Cloud Application environments that have multiple VB Studio
instances in different identity stripes have username strings that include the
environment name, where that user has been defined. Since a unique user may
have been defined for multiple environments, this format ensures that one
identity can be distinguished from that user's other unique identities. This should
help you select the correct user to add.
13. Toggle the Required setting to on to make the approver's approval mandatory.
14. Repeat for all the project members you want to be approvers.
If you select more than one approver from the list, you'll see a field for setting the
Minimum number of approvers before the pipeline can proceed field filled in with one
approver, who is required.
The minimum number must always be equal to or greater than the total number of required
approvers. For example, if Alex Admin and Clara Coder are both selected as required
7-124
Chapter 7
Run Jobs in a Pipeline
reviewers, then the minimum number of approvers must be at least two. If you wanted
either Alex Admin or Clara Coder's approval to allow the pipeline to continue, then you
would set both of them to not required and set the number of approvers to 1.
15. In the Expiration Duration section, click the Set duration before expiration check box.
16. Use the Days, Hours, and Minutes selectors or enter values to set the length of time to
wait for an approval.
If you enter or select a value of 72 in the Hours field, for example, it will be converted to a
value of 3 in the Days field. Similarly, 25 hours will be converted to 1 day and 1 hour.
17. Click Save to exit the values you set.
18. Right-click the approval item again and select the Add New On Approval Jobs option.
7-125
Chapter 7
Run Jobs in a Pipeline
If you don't see a notification, go to the Profile tab your user account and, under User
Preferences, check that the user has been verified. See Add Manual Pipeline Approvals.
There are a few restrictions for manual approvals. You may encounter these when you are
prevented from saving a newly created pipeline or one that's been modified:
• You can't create an approval item from the Start node. You can only create it from a job (or
jobs) downstream from the Start node.
• You can't configure parallel approvals. If you try, when you attempt to save the
configuration, you'll see the message, "Only one manual approval can be in effect at any
given point in time. Your pipeline has multiple paths which can result in more than one
approval to be active at the same time." Click OK to dismiss.
• You can't have random jobs in the pipeline that aren't connected to start or to approvals or
to other downstream jobs. "Pipelines with manual approval cannot have unconnected jobs
or approvals. The following jobs or approvals are not connected to start: Job1".
• You can't introduce jobs that bypass the approval(s).
Note:
Currently, you can't resume a pipeline after it has been rejected. You need to address
and correct the issue(s) that caused an approver to reject completing the pipeline run
and then restart the pipeline and approval process.
7-126
Chapter 7
Run Jobs in a Pipeline
The approval node is yellow, which indicates that some action is needed. The spinner
indicates that the approval process is ongoing and likely in a waiting state.
2. Hover over the approval node.
You'll see that the pipeline is waiting for approval, how many approvals are needed, how
many approvals have been approved, who the approvers are, how many approvals are
pending, the length of time before the approval expires (and will be automatically rejected),
and so on.
7-127
Chapter 7
Run Jobs in a Pipeline
Note:
Users in Oracle Cloud Application environments that have multiple VB Studio
instances in different identity stripes have username strings that include the
environment name, where that user has been defined. Since a unique user may
have been defined for multiple environments, this format ensures that one
identity can be distinguished from that user's other unique identities. This should
help you select the correct user to add.
4. Two approvals are needed. It looks like alex.admin-dev already approved, so now
alex.admin-test (the blue stripe indicates that that's you) needs to approve or reject the
run.
Select one of the options:
• Select Approve.
A confirmation message shows that an approval has been submitted. The pipeline will
continue executing. After the approval has been completed, the approval item will turn
green, and any downstream jobs will too after they successfully execute.
If you check the status, you'll see a green check , indicating that the pipeline run
was successful.
• Select Reject.
You'll be prompted to confirm that you want to reject the approval and will be allowed
to add a comment explaining why you chose this action.
The approval item turns red and the pipeline execution halts. No downstream jobs are
executed so they remain white, instead of completing and turning green. When you
mouse over the approval node, you'll see that it was rejected and the comment that
was added in the confirmation window.
7-128
Chapter 7
Run Jobs in a Pipeline
The red thumbs down icon , at the top of the screen, indicates that the pipeline run
was rejected.
Tip:
If you mouse over the rejected icon in the Status column of the Approval
Details screen, this is representative of what you may see.
Notice the timestamp that shows when the approval was rejected and any comments
that were added explaining why.
If an expiration duration was set for the manual approval but nobody approves it during
the specified interval, the build system automatically rejects the approval. The activities
stream displays the reason for the rejection. In addition, the Pipeline Run Summary
screen and the notification email that is sent to required approvers also indicate why
the approval was rejected.
Note:
Currently, you can't resume a pipeline after it has been rejected. You'll need
to address and correct the issue(s) that caused an approver to reject
completing the pipeline run and then restart the pipeline and approval
process.
7-129
Chapter 7
Run Jobs in a Pipeline
If you’re an approver, you can click Waiting for approval to go to the Pipeline Run page,
which shows all the approvers, who has already approved, and so on, as shown:
If you approve or reject from here (by right-clicking the Approval node), any comments you
supply will be added to the final email that all approvers receive.
Note:
If you are not a required approver and you approve the job (either from here or
through email), the pipeline remains paused until all required approvers have signed
off. If you reject the job, this run of the pipeline is canceled.
As an approver, there are a few tasks that you need to do to ensure that you can receive email
notifications about pipeline approvals:
• Make sure you verified your email address or you won't receive any VB Studio email
notifications at all.
You don't want to see this message.
7-130
Chapter 7
Run Jobs in a Pipeline
• Make sure you enabled notifications for Build activities and that you're also set up to
include your own updates.
The check boxes encircled in red need to be selected.
To check both items, click the user avatar and select Preferences. See Configure Your Global
Email Notifications for additional information about these items that you need to check and
potentially address.
Click on link in email and it'll take you to the pipeline's Run page or from the Build page's
Pipeline Queue tab go to the Waiting for approval link in the Progress column. Because
you're the approver, you can see the link. If you're not one of the approvers, you'll see the
same message but it won't be a link. If you are an approver and you click the link, you'll go to
the Pipeline Designer graph. Hover over the approval item to see its status, then right-click and
select the Approve/Reject Details option. If you approved it, the Pipeline approve
submitted message is displayed. Once the required number of approvers have submitted an
approval, the pipeline starts back up and continues running, the approval node turns green
(signifying completion), and the pipeline continues by executing the next downstream task.
There are several places in the pipelines interface where approvers are subtly notified about
pending approvals.
7-131
Chapter 7
Run Jobs in a Pipeline
• They can see the pipeline's flow from the Pipeline Run page before approving or rejecting
it.
• The Pipeline Queue tab shows pipelines runs that are either running or are waiting for
some action, such as an approval. If a pipeline is in the waiting state, an approval (or
multiple ones) is needed.
• From the Pipeline Queue page, you can sort by the Progress column, to see all the
pipelines "Waiting for approval".
• The notification email's subject line may show, for example, "Pipeline run 4 for pipeline
ManualApproval07 requires approval to proceed". If you click the "4" link in the email, you'll
be taken to the page where you can right-click the Approval node and select the Approve/
Reject Details context menu item.
Column Details
Status The status for the latest pipeline build is displayed:
•
Success : Indicates that the latest build of the pipeline was
successful.
•
Failed : Indicates that the latest build of a job in the pipeline failed,
causing the pipeline to fail too.
•
Test Failed : Indicates that the latest test build of a job in the pipeline
failed, causing the pipeline to fail too.
•
Canceled : Indicates the latest build of the pipeline was canceled.
•
In Progress : Indicates a pipeline is in progress.
Weather The weather for the recent builds are displayed:
•
All recent builds completed successfully
•
All recent builds failed
The weather also displays icons showing what percentage (%) of recent
builds failed.
Pipeline Click the pipeline link to view more information about the pipeline. See View
Pipeline Run Details.
Last Successful Date and time of the last successful build of the pipeline. You can click on the
instance number to view more details about the pipeline instance.
Last Unsuccessful Date and time of the last unsuccessful build of the pipeline. You can click on
the instance number to view more details about the pipeline instance.
Duration Duration of the latest pipeline build
# Jobs Number of jobs in the pipeline. Click the number to view a list of the jobs. You
can click on a job name to display details about the job.
Details
Click Details to view details and settings for the latest build.
View pipeline layout To view the layout of the pipeline, click Actions menu, then choose View
Layout.
View last run log To view the log for the last pipeline that has run, click the Actions menu,
then choose Last Run Log.
Run the pipeline To run the pipeline, click the Actions menu, then choose Run Pipeline.
7-132
Chapter 7
Run Jobs in a Pipeline
Column Details
Configure the pipeline To configure the pipeline, click the Actions menu, then choose Configure
Pipeline.
Delete the pipeline To delete the pipeline, click the Actions menu, then choose Delete
Pipeline.
Column Details
By Who or what initiated the run. The icons represent the following:
•
User : The build was initiated by a user.
•
Periodic Build Trigger : The build was triggered by a periodic build
trigger.
•
Build System : The build was started or rescheduled by the build
system.
Status These are the possible statuses for each pipeline build:
•
Success : Indicates that all the pipeline builds were successful.
•
Failed : Indicates that a build of a job in the pipeline failed, causing the
pipeline to fail too.
•
Test Failed : Indicates that a test build of a job in the pipeline failed,
causing the pipeline to fail too.
•
Canceled : Indicates the pipeline was canceled.
•
In Progress : Indicates a pipeline is in progress.
Run Click on the run number to view details about the pipeline run. From the run
details page, you can view the pipeline run diagram, delete the run, view the
run log, or view a summary of the run.
In the pipeline diagram, the color of job nodes indicates the job’s status:
• Green: The last build of the job was successful
• White: A build of the job is running or hasn’t run yet
• Red: The last build of the job failed
• Orange: The last test build failed.
Started Displays the date and time the run started. Click the link to view the run
details and pipeline diagram. Use the Cancel Run, Delete, View Log, and
Pipeline Run Summary buttons to cancel a running pipeline, delete the run,
view the run log, or view a summary of the run.
View the run log Click the Actions menu and select View Log.
From the pipeline details page, you can also view the pipeline run trends, run, configure or
delete the pipeline, and view the pipeline layout. See Create and Manage Pipelines.
7-133
Chapter 7
Run Jobs in a Pipeline
Column Details
By Who or what initiated the run. The icons represent the following:
•
User : The build was initiated by a user.
•
Periodic Build Trigger : The build was triggered by a periodic build
trigger.
•
Build System : The build was started or rescheduled by the build
system.
Pipeline Click the name of the pipeline to view the Pipeline Details page.
Run Click on the run number to view details about the pipeline build progress.
From the pipeline details page, you can view the pipeline diagram, delete the
run, view the run log, or view a summary of the run.
In the pipeline diagram, the color of job nodes indicates the job’s status:
• Green: The job's last build was successful.
• White: A build of the job is either currently running or hasn’t run yet.
• Red: The job's last build failed.
• Orange: The last test build failed.
Scheduled Displays the time the build started.
Progress Displays a progress bar and the percentage of the build that's been
completed.
To cancel a pipeline run, click the Actions menu, and select Cancel.
To cancel more than one pipeline run, select the pipelines that you want to cancel or click the
box at the top left corner of the table to select all pipelines, then click Update Selected and
select Cancel Selected Runs.
7-134
Chapter 7
Run Jobs in a Pipeline
parameter can then be used to configure subsequently run jobs, and appear as environment
variables in shell scripts run in the build. You might even want to export parameters at the end
of job execution, based upon data that was calculated during the build.
Both added and exported parameters would be visible to downstream jobs, which could, in
turn, modify a subset of the parameters and then pass them along.
There are two different ways to set parameters dynamically:
• From a list of parameter definitions that are written in the same manner that environment
variables are set in a shell script, that is, from a file with one or more lines that contain
PARAMETER_NAME=value definitions.
• With multi-line values, such as private keys for example, and parameters with sensitive
contents like passwords and private keys. These include items that are more complex than
those that can be specified using the simple definition format.
All jobs in a pipeline currently see job parameters that have been configured for all jobs in the
pipeline. These parameters are collected from the jobs when the pipeline is started, and are
added to all jobs that are downstream of the condition that started the pipeline, that is of a
triggering job or the “Start” node of a manually-started or a periodically-triggered pipeline.
Then, when a job completes, its parameters are extracted and are passed on to any
downstream jobs it triggers.
These job parameters can be modified and new parameters can be added in subsequent build
steps during a run. This simply adds a way to explicitly direct that parameters be added, both
before and after Build steps, like shell scripts, run.
Add a Parameter
The Add a Parameter task runs during build setup, after the Git steps finish running, but
before any build steps are run. The task adds a single parameter at a time, potentially allowing
a multi-line value (a private key, for example) read from a file, and allows the parameter to be
marked sensitive which, by the way, means “Don't print these values in the build log.” You can
configure zero or more of these in a job.
Here's how you configure a pre-build task that adds a parameter (or multiple parameters) to a
build job:
7-135
Chapter 7
Run Jobs in a Pipeline
Export a Parameter
The Export a Parameter task runs after the build steps have been run. The task adds a single
parameter at a time, to allow multi-line values ( a private key, for example) to be read from a
file. It also allows the parameter to be marked sensitive which, by the way, means “don't print
these values in the build log.” You can configure zero or more of these in a job.
Here's how you configure a post-build task that exports a parameter (or multiple parameters)
that can be passed to a downstream build job:
7-136
Chapter 7
Configure Jobs and Pipelines with YAML
In VB Studio, you can use a YAML file (a file with .yml extension) to store a job or pipeline
configuration in any of the project's Git repositories. The build system constantly monitors the
Git repositories and, when it detects a YAML file, creates or updates a job or a pipeline with the
configuration specified in the YAML file.
Here's an example with a YAML file that configures a job:
job:
name: MyFirstYAMLJob
vm-template: Basic Build Executor Template
git:
- url: "https://mydevcsinstance-mydomain.developer.ocp.oraclecloud.com/
mydevcsinstance-mydomain/s/mydevcsinstance-mydomain_my-project_902/scm/
employee.git"
branch: main
repo-name: origin
steps:
- shell:
script: "echo Build Number: $BUILD_NUMBER"
- maven:
goals: clean install
pom-file: "employees-app/pom.xml"
after:
7-137
Chapter 7
Configure Jobs and Pipelines with YAML
- artifacts:
include: "employees-app/target/*"
settings:
- discard-old:
days-to-keep-build: 5
builds-to-keep: 10
days-to-keep-artifacts: 5
artifacts-to-keep: 10
Note:
Jobs and pipelines created with YAML can't be edited on the Builds page. They must
be edited using YAML. Similarly, jobs and pipelines created on the Builds page can't
be edited using YAML.
YAML stores data as a key-value pair in the field: value format. A hyphen (-) before a field
identifies it as an array or a list. It must be indented to the same level as the parent field. To
indent, always use spaces, not tabs. Make sure that number of indent spaces before a field
name matches the number of indented spaces in the template. YAML is sensitive to number of
spaces used to indent fields. Also, the field names in a YAML file are similar to the field names
in the job configuration user interface:
name: MyFirstYAMLJob
vm-template: Basic Build Executor Template
git:
- url: "https://mydevcsinstance-mydomain/.../scm/employee.git"
steps:
- shell:
script: "echo Build Number: $BUILD_NUMBER"
- maven:
goals: clean install
pom-file: "employees-app/pom.xml"
7-138
Chapter 7
Configure Jobs and Pipelines with YAML
If you're editing a YAML file on your computer, always use a text editor with the UTF-8
encoding. Don't use a word processor.
Here are some additional points to consider about YAML files before you begin creating or
editing them:
• The name field in the configuration file defines the job's or pipeline's name. If no name is
specified, the build system creates a job or a pipeline with name as <repo-name>_<name>,
where repo-name is the name of the Git repository where the YAML file is hosted and
<name>.yml is the name of the YAML file.
For example, if the YAML file's name is MyYAMLJob and it's hosted in the YAMLJobs Git
repository, then the job's or pipeline's name would be YAMLJobs_MyYAMLJob.
If you add the name field later, the job or pipeline will be renamed. Its access URL will also
change.
• Each job's configuration must define the vm-template field.
• When you define a string value, you can use quotes, if necessary. If any string values
contain special characters, always enclose the values with quotes.
Here are some examples of special characters: *, :, {, }, [, ], ,, &, #, ?, |, -, <, >, =, !, %,
@, `.
You can use single quotes (' ') or double quotes (" "). To include a single quote in a
single quoted string, escape the single quote by prefixing it with another single quote. For
example, to set Don's job in the name field, use name=Don''s job in your YAML file. To
use a double quote in a double quoted string, escape the double quote with a backslash
(\) character. For example, to set My "final" job in the name field, use name=My
\"final\" job in your YAML file. There's no need to escape backslashes in a single
quoted string.
• Named Password/Private Key parameters must be specified in the format
#{PSSWD_Docker} surrounded by quotes, as shown in bold in the following example:
params:
- string:
name: myUserName
value: "don.developer"
description: My Username
steps:
- docker-login:
username: $myUserName
password: "#{PSSWD_Docker}"
Password/Private Key parameters are specified using the format $myPassword, as shown
in bold in the following example:
params:
- string:
name: myUserName
value: "don.developer"
description: My Username
- password:
name: myPwd
password: #{PSSWD_Docker}
description: Defining the build password
steps:
- docker-login:
username: $myUserName
password: $myPwd
7-139
Chapter 7
Configure Jobs and Pipelines with YAML
• If you specify a field name but don't specify a value, YAML assumes the value to be null.
This can cause errors. If you don't need to define a value for a field, you should remove the
field name.
For example, if you don't want to define Maven goals and use the default clean install,
remove the goals field. The following YAML code can cause error because goals isn't
defined:
steps:
- shell:
script: "echo Build Number: $BUILD_NUMBER"
- maven:
goals:
pom-file: "employees-app/pom.xml"
• You don't need to define every one of the job's fields in the YAML file. Just define the ones
you want to configure or change from the default values, and make sure that you're adding
the parent field(s) when you define a child field:
steps:
- maven:
pom-file: "employees-app/pom.xml"
• To run a build of the job automatically when its Git repository is updated, use the auto field
or set build-on-commit to true.
For the current Git repository, using auto is equivalent to setting build-on-commit to true.
So, don't use auto and build-on-commit: true together.
Here's an example that uses auto:
name: MyFirstYAMLJob
vm-template: Basic Build Executor Template
auto:
branch: patchset_1
If you use auto, don't specify the Git repository URL. The job automatically tracks the Git
repository where the YAML file is committed.
Here's an example that uses build-on-commit:
name: MyFirstYAMLJob
vm-template: Basic Build Executor Template
git:
- url: "https://mydevcsinstance-mydomain.developer.ocp.oraclecloud.com/
mydevcsinstance-mydomain/s/mydevcsinstance-mydomain_my-project_902/scm/employee.git"
branch: patchset_1
build-on-commit: true
A commit when pushed to the patchset_1 branch triggers a build of the MyFirstYAMLJob
job.
• To add comments in the configuration file, precede the comment with the pound sign (#):
steps:
# Shell script
- shell:
script: "echo Build Number: $BUILD_NUMBER"
7-140
Chapter 7
Configure Jobs and Pipelines with YAML
• On the Builds page, to configure an existing job or a pipeline, click its Configure button or
icon. If the job or the pipeline was created in YAML, VB Studio opens the YAML file in the
code editor on the Git page so you can view or edit the configuration.
• The branch value is dependent on the default branch of the repository that is specified in
the YAML. If the head of the Git repository is main, then that is the default. If the head is
master, then that will be the default.
The default behavior has been dependent on the head of the Git repository. Until this
release, though, that has always been master.
Here's an example with a curl command that validates a job configuration on a Windows
computer:
curl -X POST -H "Content-Type: text/plain" --data-binary @d:/myApps/myPHPapp/.ci-
build/my_yaml_job.yml -u [email protected]:My123Password https://
mydevcsinstance-mydomain.developer.ocp.oraclecloud.com/myorg/rest/myorg_my-
project_1234/cibuild/v1/yaml/validate
Here's an example with a curl command that validates a pipeline configuration on a Windows
computer:
curl -X POST -H "Content-Type: text/plain" --data-binary @d:/myApps/myPHPapp/.ci-
build/my_yaml_pipeline.yml -u [email protected]:My123Password https://
mydevcsinstance-mydomain.developer.ocp.oraclecloud.com/myorg/rest/myorg_my-
project_1234/cibuild/v1/yaml/validate
7-141
Chapter 7
Configure Jobs and Pipelines with YAML
https://<base-url>/<identity-domain>/rest/<identity-domain>_<unique-projectID>/
cibuild/v1/yaml/cibuild/yaml/import
VB Studio will read the YAML job (or pipeline) configuration and, if no errors are detected,
create a new job (or pipeline). The job (or pipeline) must be explicitly named in the YAML
configuration. After the job (or pipeline) has been created, you can edit its configuration on the
Builds page. If errors are detected, the job (or pipeline) will not be created and the Recent
Activities feed will display any error messages.
Here's an example that shows how to use a curl command with a YAML file on a Windows
computer to create a job:
curl -X POST -H "Content-Type: text/plain" --data-binary @d:/myApps/myPHPapp/
my_PHP_yaml_job.yml -u [email protected] https://mydevcsinstance-
mydomain.developer.ocp.oraclecloud.com/myorg/rest/myorg_my-project_1234/
cibuild/v1/yaml/import
6. Open the Project Home page and, in the Recent Activities Feed, verify that the YAML
file' and job were created.
If there are any validation issues with the YAML file, a notification with a View Error link is
displayed. Click the View Error link to review the error messages. Then update the YAML
file and commit it again.
7. Click the job's name to open it in the Builds page.
You can create the job configuration file using the code editor on the Git page too:
7-142
Chapter 7
Configure Jobs and Pipelines with YAML
If you create the YAML file this way, you won't be able to validate it without committing it first.
Commit the file and check the Recent Activities Feed on the Project Home page for any
errors.
job:
name: ""
description: ""
vm-template: "" # required
auto: false # deprecated - true implies branch: master;
otherwise, set branch explicitly
auto:
branch: mybranch # deprecated
# See Auto specification section below
auto: mybranch # automatically build a single branch on commit
auto: "*" # automatically build any branch on commit
auto:
include: # array of branches or branch patterns to include,
for example
- "*" # automatically build any branch on commit
except: # array of exceptions (optional)
- "" # except these branches
auto:
exclude: # array of branches or branch patterns to exclude
- "" # default exclude nothing (include everything)
except: # array of exceptions (optional)
- "" # but including these branches
from-job: "" # create job as copy of another job; ignored after
creation
for-merge-request: false
allow-concurrent: false # if true, concurrent builds will be allowed if
necessary
disabled: false # if true, job will not build
#
# disabled=true/false can be specified for every
item in the job below
# e.g., for git, param, steps, etc. items
# for brevity, not shown below in every item
git:
- url: "" # required
branch: "master" # branch: * is treated specially; see the Auto
build section above
repo-name: "origin"
local-git-dir: ""
refspec: ""
included-regions: "" # deprecated - see trigger-when, file-pattern, and
7-143
Chapter 7
Configure Jobs and Pipelines with YAML
exceptions
excluded-regions: "" # deprecated - see trigger-when, file-pattern, and
exceptions
trigger-when: INCLUDE # one of INCLUDE or EXCLUDE
file-pattern: "" # default is "**/*" for INCLUDE or "" for EXCLUDE
exceptions: "" # exceptions to INCLUDE or EXCLUDE file-pattern
excluded-users: ""
merge-branch: ""
config-user-name: ""
config-user-email: ""
merge-from-repo: false
merge-repo-url: ""
checkout-revision: ""
prune-remote-branches: false
skip-internal-tag: true
clean-after-checkout: false
update-submodules: false
use-commit-author: false
wipeout-workspace: false
build-on-commit: false
shallow-clone: false # Added 24.07.0. Optional, default false. Defines
if the git will use shallow cloning or not in which case the clone-depth will
be used
clone-depth: 0 # Added 24.07.0. Optional, default 0. The depth of
the clone for that git if the shallow-clone is set to true
# When build-on-commit: true, the "auto" branch
can be specified as follows:
include: # A list of branches to include
- "*" # Branch name, wildcard like "*" or regular
expressions like /.*/ are allowed
except: # Except do not include the branches in this list
- "/^patchset_/" # Branch name, example regular expression shown
# Or
exclude: # A list of branches to exclude (all branches not
excluded are included)
- "/^patchset_/" # Branch name, example regular expression shown
except: # Except do not exclude the branches in this list
- patchset_21_07_0 # Branch name, example literal branch name shown
params:
# boolean, choice, and string parameters can be specified as string values
of the form - NAME=VALUE
# the VALUE of a boolean parameter must be true or false, e.g., -
BUILD_ALL=true
# the VALUE of a choice parameter is a comma-separated list, e.g., -
PRIORITY=NORMAL,HIGH,LOW
# the VALUE of a string parameter is anything else, e.g., - URL=https://
github.com
# Alternatively, parameters can be specified as objects:
- boolean:
name: "" # required
value: true # required
description: ""
- choice:
name: "" # required
description: ""
choices: [] # array of string value choices; at least one
7-144
Chapter 7
Configure Jobs and Pipelines with YAML
required
- merge-request:
params:
- GIT_REPO_BRANCH="" # required
- GIT_REPO_URL="" # required
- MERGE_REQ_ID=""
- password:
name: "" # required
# one of password or private-key is required
# recommended to use named password/private key
reference like "#{NAME}"
password: "" # required, or
private-key: "" # required
required: false # if not present required is false. If required
is set to true then when the user will do a build now operation, he will have
to have a value
# for that field. The user will not be able to
submit the build with an empty value.
description: ""
- string:
name: "" # required
value: "" # required
required: false # if not present required is false. If required
is set to true then when the user will do a build now operation, he will have
to have a value
# for that field. The user will not be able to
submit the build with an empty value.
description: ""
before:
- add-param: # Add a parameter after git before rest of build
parameter-name: "" # required - name of added parameter
file-path: "" # required - file that contains value of
parameter
sensitive: false # true if sensitive, e.g., password or private
key
- add-params: # Add one or more parameters as above (cannot
be used to add password parameters)
file-path: "" # required - file that contains one or more
lines of the format
# NAME=value
- copy-artifacts:
from-job: ""
build-number: 1 # requires which-build: SPECIFIC_BUILD
artifacts-to-copy: ""
target-dir: ""
which-build: "LAST_SUCCESSFUL" # other choices: LAST_KEEP_FOR_EVER,
UPSTREAM_BUILD, SPECIFIC_BUILD, PERMALINK, PARAMETER
last-successful-fallback: false
permalink: "LAST_SUCCESSFUL" # other choices: LAST, LAST_SUCCESSFUL,
LAST_FAILED, LAST_UNSTABLE, LAST_UNSUCCESSFUL
# other choices require which-build:
PERMALINK
param-name: "BUILD_SELECTOR" # requires which-build: PARAMETER
flatten-dirs: false
optional: false
- npm-registry-setup:
7-145
Chapter 7
Configure Jobs and Pipelines with YAML
7-146
Chapter 7
Configure Jobs and Pipelines with YAML
display-number: "0"
screen-offset: "0"
screen-dimensions: "1024x768x24"
timeout-in-seconds: 0
more-options: "-nolisten inet6 +extension RANDR -fp /usr/share/X11/
fonts/misc"
log-output: true
shutdown-xvfb-after: true
steps:
- cancel-configuration-set:
configuration-set-id: "" # required
environment-name: "" # required
service-name: "" # required
username: # required
password: # required
- ant:
build-file: ""
targets: ""
properties: ""
java-options: ""
- application-ext-packaging:
build-artifact: "extension.vx" # optional, defaults to 'extension.vx'
version: ""
- application-ext-delete:
extension-id: # required
extension-version: # required
environment-name: # required
service-name: # required
auth-type: "OAUTH" # optional, defaults to 'BASIC'
username: # required if auth-type is 'BASIC'
password: # required if auth-type is 'BASIC'
- application-ext-audit:
environment-name: # required
service-instance: # required
username: # required
password: # required
extension-id: # required
extension-version: # required
options: | # optional, defaults to
'audit.outputfile=auditoutput.json', each option on its own line
audit.outputfile=auditoutput.json
- application-ext-test:
karma-browser: "FirefoxHeadless" # optional, defaults to
'FirefoxHeadless'
karma-log-level: "INFO" # optional, defaults to 'INFO'
mocha-timeout: 0 # optional, defaults to 0
- apply-configuration-set:
configuration-set-id: "" # required
environment-name: "" # required
service-name: "" # required
username: # required
password: # required
- bmccli:
private-key: ""
user-ocid: "" # required
fingerprint: "" # required
7-147
Chapter 7
Configure Jobs and Pipelines with YAML
7-148
Chapter 7
Configure Jobs and Pipelines with YAML
7-149
Chapter 7
Configure Jobs and Pipelines with YAML
registry-host: ""
username: ""
api-url: "" # required
- fn-oci:
compartment-id: "" # required
provider: ""
# Note: the passphrase field is no longer
required nor allowed
- fn-push:
work-dir: ""
verbose: false
registry-host: ""
username: ""
- fn-version: {}
- gradle:
use-wrapper: false
wrapper-gradle-version: "" # ignored unless use-wrapper: true
make-executable: false # ignored unless use-wrapper:
true, then default true
# must set make-executable: true
if wrapper doesn't already exist
# corresponds to Create 'gradlew'
wrapper
from-root-build-script-dir: false # ignored unless use-wrapper: true
root-build-script: "" # ignored unless from-root-build-
script-dir: true; script directory
tasks: "clean build"
build-file: "build.gradle"
switches: ""
use-workspace-as-home: false
description: ""
use-sonar: false # if true sonarqube-setup must be
configured
- import-configuration-set:
configuration-set-id: "" # required
ignore-unpublished-sandboxes: false
environment-name: "" # required
service-name: "" # required
username: # required
password: # required
- maven:
goals: "clean install"
pom-file: "pom.xml"
private-repo: false
private-temp-dir: false
offline: false
show-errors: false
recursive: true
profiles: ""
properties: ""
verbosity: NORMAL # other choices: DEBUG, QUIET
checksum: NORMAL # other choices: STRICT, LAX
snapshot: NORMAL # other choices: FORCE, SUPPRESS
projects: ""
resume-from: ""
fail-mode: NORMAL # other choices: AT_END, FAST, NEVER
7-150
Chapter 7
Configure Jobs and Pipelines with YAML
7-151
Chapter 7
Configure Jobs and Pipelines with YAML
7-152
Chapter 7
Configure Jobs and Pipelines with YAML
operation
username: "" # required
password: "" # required
lookup-archive: "" # required, the filename of the lookup
archive file (<lookupname>.csv)
import-method: "ADD" # other choices: REPLACE, AUTOMATIC
- oic-import-package:
environment-name: "" # required, identifies the environment
containing the OIC instance
service-name: "" # required, the OIC instance for the
operation
username: "" # required
password: "" # required
package-archive: "" # required, the filename of the
package archive file (<packagename>.par)
import-method: "ADD" # other choices: REPLACE, AUTOMATIC
deactivate-integrations: true # when replacing the package,
deactivate any of its active integrations first
reactivate-integrations: true # after replacing the package,
reactivate any integrations that were deactivated by the deactivate-
integrations option
include-recording-flag: true # include asserter recordings (if any)
- oic-update-connection:
environment-name: "" # required, identifies the environment
containing the OIC instance
service-name: "" # required, the OIC instance for the
operation
username: "" # required
password: "" # required
identifier: "" # required, the identifier of the
connection to update
json-file: "" # required if json-text not specified,
the filename of the json file containing connection properties to update
json-text: "" # required if json-file not specified,
the inline json text containing connection properties to update
- oic-upload-connection-property-attachment
environment-name: "" # required, identifies the environment
containing the OIC instance
service-name: "" # required, the OIC instance for the
operation
username: "" # required
password: "" # required
identifier: "" # required, the identifier of the
connection to update
property-name: "" # required, the name of the property
to attach the upload file to
file-path: "" # required, specifies the zip file or
WSDL file to upload
service-wsdl: "" # required if file-path is a zip file,
specifies file path of WSDL file within the zip
- oracle-deployment: # currently Visual Applications,
Application Extensions, and JCS using REST are supported
environment-name: "" # required, scopes the service-name
service-name: "" # required, the service instance type
determines the deployment type
auth-type: "OAUTH" # optional, defaults to 'BASIC'
7-153
Chapter 7
Configure Jobs and Pipelines with YAML
7-154
Chapter 7
Configure Jobs and Pipelines with YAML
7-155
Chapter 7
Configure Jobs and Pipelines with YAML
7-156
Chapter 7
Configure Jobs and Pipelines with YAML
archive-analysis-files: false
settings:
- abort-after:
hours: 0
minutes: 0
fail-build: false
- build-retry:
build-retry-count: 5
git-retry-count: 5
- discard-old:
days-to-keep-build: 0
builds-to-keep: 100
days-to-keep-artifacts: 0
artifacts-to-keep: 20
- git-poll:
cron-pattern: "0/30 * * * * #Every 30 minutes"
- log-size:
max: 50 # megabytes
- logger-timestamp:
timestamp: true
- periodic-build:
cron-pattern: "0/30 * * * * #Every 30 minutes"
- quiet-period:
seconds: 0
- versions:
version-map:
Java: "17" # For templates the configurable options (with
defaults wrapped in '*' chars) are
# Java: 8, 11, *17*, 8 (GraalVM)
# For the Built-in (Free) executors, the options are
# Java: 8, 11, or *17*
# nodejs: 0.12 or *10*
# python3: 3.5, or *3.6*
# soa: 12.1.3, or *12.2.1.1*
7-157
Chapter 7
Configure Jobs and Pipelines with YAML
7-158
Chapter 7
Configure Jobs and Pipelines with YAML
7-159
Chapter 7
Configure Jobs and Pipelines with YAML
7-160
Chapter 7
Configure Jobs and Pipelines with YAML
6. Open the Project Home page and, in the Recent Activities Feed, verify the notification
about the YAML file. You should see notifications that the YAML file and pipeline were
created.
If there were any issues with the YAML file, a notification with a View Error link would be
displayed. Click the View Error link to download a JSON file with the error messages.
Review the error, update the YAML file, and commit the file again.
7. To view the pipeline, go to the Builds page and open the Pipelines tab:
pipeline:
name: "" # pipeline name - if omitted, name is
constructed from repository and file name
description: "" # pipeline description
auto-start: true # automatically start pipeline if any job in
pipeline is run
# if false, pipeline will start only if
manually started
# or a trigger action item is activated
auto-start: # implied true
triggers-only: false # if true, autostart only for jobs that have
no preceding jobs
allow-external-builds: true # jobs in pipeline can run independently while
pipeline is running
periodic-trigger: "" # cron pattern with 5 elements (minute, hour,
day, month, year)
# the pipeline is started (beginning with
the Start item) periodically
triggers: # define trigger action items of periodic,
poll, or commit types
# there may be one or more of each type
- periodic: # define trigger action item of periodic type;
build pipeline every so often
name: "" # required, trigger name - must be unique
trigger name; may not be "Start"
cron-pattern: "" # required, cron pattern specifying Minute
Hour Day Month Year, e.g., "? 0 * * *"
- poll: # define trigger action item of poll type;
poll repository every so often
7-161
Chapter 7
Configure Jobs and Pipelines with YAML
7-162
Chapter 7
Configure Jobs and Pipelines with YAML
7-163
Chapter 7
Configure Jobs and Pipelines with YAML
7-164
Chapter 7
Configure Jobs and Pipelines with YAML
7-165
Chapter 7
Configure Jobs and Pipelines with YAML
pipeline:
name: My Pipeline
description: YAML pipeline configuration Job 2 runs after Job 1 completes successfully.
auto-start: true Then Job 3 runs after Job 2 completes
allow-external-builds: true successfully.
start:
The pipeline automatically starts if any job in the
- Job 1
pipeline is run. The default settings are used even if
- Job 2
they all aren't listed in the YAML file:
- Job 3
• auto-start is implied to be true if it isn't
listed, but it is included in this configuration.
• triggers-only is set to false by default
and isn't listed here in this configuration. You
could explicitly set it to true, in which case the
autostart option will only be applied to jobs that
have no preceding jobs.
• allow-external-builds is set to true and
is included in this configuration, so jobs in the
pipeline can run independently while the
pipeline is running.
If you change these settings, you should expect
different results.
pipeline:
name: My Pipeline
auto-start: true
start:
- Job 1
- parallel:
- Job 2 Jobs 2, 3, and 4 run in parallel after Job 1
- Job 3 completes successfully. Job 5 runs after the three
- Job 4 parallel jobs complete successfully.
- Job 5 The pipeline will start if any job in the pipeline runs.
pipeline:
name: My Pipeline
start:
- Job 1
- Job 2 Job 2 runs after Job 1 completes successfully. Jobs
- parallel: 3, 4, and 5 run in parallel after Job 2 completes
- sequential successfully. Job 6 runs after Job 3 completes
- Job 3 successfully. Job 7 runs after Jobs 6, 3, and 4
- Job 6 complete successfully.
- Job 4
- Job 5
- Job 7
7-166
Chapter 7
Configure Jobs and Pipelines with YAML
pipeline:
name: My Pipeline
start:
- Job 1
- on succeed:
- Job 2 If Job 1 runs successfully, Job 2 runs. If Job 1 runs
- on fail: and fails, Job 3 runs.
- Job 3
pipeline:
name: My Pipeline
start:
- Job 1
- on succeed: If Job 1 runs successfully, Job 2 is run. If Job 2
- Job 2 runs successfully but fails tests or any post build
- on test-fail: action, or if Job 1 fails, Job 3 is run. Job 3 won't run
- Job 3 if Job1 completes successfully.
- on fail:
- Job 3
7-167
Chapter 7
Configure Jobs and Pipelines with YAML
pipeline configuration to define triggers. Trigger action items can start up on their own and then
trigger the rest of the pipeline. This is a YAML only feature. To understand triggers, it helps to
explore action items.
What Is a Trigger?
A trigger is an action item that is based on some user or automated event that starts executing
a pipeline at a specific point beginning with the nodes directly downstream of the trigger. If a
trigger has upstream connections, and is invoked from an upstream connection, the trigger
acts as a pass-through. It completes immediately and, if it has any downstream connections,
the downstream items are initiated.
There are several subcategories of triggers:
• Periodic – The trigger is started periodically, based on a cron schedule.
• Polling – The trigger is started if SCM polling detects that commits have been pushed to a
specified repository and branch since the last poll. Polling is based on a cron schedule.
The repository URL and branch name are set as downstream parameter values with user-
configurable names.
• Commit – The trigger is started if a commit is pushed to a specified local project repository
and a specified set of branches. The repository URL and branch name are set as
downstream parameter values with user-configurable names.
• Manual – The trigger is started manually. Start, the default manual trigger, is present in
every pipeline. If Start is the only manual trigger, the pipeline starts there and executes the
next downstream job(s). If a pipeline includes a manual trigger job, it can be started in the
UI and execute its next downstream job, bypassing Start. If the pipeline has multiple trigger
jobs, the user needs to choose which of them to initiate the pipeline run with.
Periodic Triggers
Here's an example that shows how to use a periodic trigger:
pipeline:
name: PeriodicPipeline
description: "Trigger defined in periodic, used in start"
auto-start:
triggers-only: true
allow-external-builds: false
triggers:
7-168
Chapter 7
Configure Jobs and Pipelines with YAML
- periodic:
name: MidnightUTC
cron-pattern: "0 0 * * *"
start:
- trigger:
- <MidnightUTC>
- JobA3
Notice that the periodic trigger is defined with a name and a cron pattern. The reference to the
trigger action item is enclosed in angle brackets, <MidnightUTC> in this case, to differentiate it
from a job, such as JobA3.
Let's look at how the UI graphically represents things:
• In the Pipelines tab on the Builds page, trigger action items are represented as squared
off blocks, like the Start item or the <TenMinutes> item. The pipeline in this diagram was
started by the action item with the periodic trigger <TenMinutes>. This trigger runs the
pipeline every ten minutes.
Notice that a solid line goes from it to JobA1 and JobA2, but a dotted line goes from Start
through its trigger to its downstream jobs. This is so, because the pipeline wasn't initiated
from Start. The trigger item and the executed jobs are shaded, indicating the pipeline's
execution path.
• You could manually start the pipeline too, as this diagram shows.
In this case, the execution passes from Start, the default trigger, to JobA1 and then to
JobA2. The graphic representation shows the execution path with solid lines. The
<TenMinutes> periodic trigger job, outlined with dotted lines, isn't shaded because it wasn't
executed. The dotted lines from it to its downstream jobs further indicate an execution path
not taken.
Polling Triggers
This polling pipeline only runs at midnight UTC, as specified by the cron pattern. Additional
parameters can be used too. See What Is the Format for a YAML Pipeline Configuration?.
pipeline:
name: PollingPipeline
auto-start: false
triggers:
- poll:
name: Poller
cron-pattern: "0 0 * * *"
url: <git-repo-url>
branch: main
7-169
Chapter 7
Configure Jobs and Pipelines with YAML
start:
- <Poller>
- A
When the pipeline is started manually, the execution flow goes through the trigger action item
to job A. In the Pipeline Designer, the trigger has no hue and has a dotted line border. There
are dotted lines from Start to the trigger item to job A. When the polling mechanism detects a
change, the pipeline is started by the trigger. This is shown with a dotted line from Start to the
trigger item, the trigger item has a dark hue, and there is a solid line from the trigger item to job
A.
Commit Triggers
A commit trigger automatically runs when a commit happens.
pipeline:
name: CommitPipeline
auto-start: false
triggers:
- commit
name: OnCommit
url: <git-repo-url>
branch: main
start:
- <OnCommit>
- A
Additional parameters can be used too. See What Is the Format for a YAML Pipeline
Configuration?.
7-170
Chapter 7
Configure Jobs and Pipelines with YAML
Examine Pipeline Logs with Commit or SCM Polling Trigger Action Items
Poll logs for pipelines are very similar in format to logs for jobs. By examining these pipeline
logs, you can determine how pipelines were triggered and see exactly what was executed
during the run. SCM polling and commit logs show action items, but not embedded triggers.
Notice that the first trigger (<OnCommit01>) is shown in gray and its downstream jobs are too?
That's because they weren't executed.
The first line in the log reveals how the pipeline was started - automatically by the commit
trigger <OnCommit02>:
A commit automatically triggered the pipeline, which started build (build #2) that executed
JobA003. The pipeline run was successful and took 27 seconds to run. The two jobs upstream
from the second trigger (JobA001 and JobA002) were not executed because their trigger
(<OnCommit01>) didn't initiate the pipeline run. Had that happened, the second trigger would
have been a pass-through and the build would have executed three jobs in succession.
7-171
Chapter 7
Configure Jobs and Pipelines with YAML
Notice that the pipeline's second trigger (<TwoMinutes>) is shaded with a lighter color. It wasn't
executed, so it didn't have any effect on the pipeline run, even though it was in its path. In this
case, the execution flow passed through it and continued executing downstream jobs.
The first line in the log reveals how the pipeline was started - by the SCM polling trigger
<FiveMinutes>:
We can see that the trigger started build #3 with JobA01 then, upon successful completion,
started job JobA02. Successive jobs JobA03 through JobA06 ran after the previous job
successfully completed. After the last job (JobA06) in build #3 finished, the pipeline ended. We
can also see how long it took the pipeline to run and whether all the jobs in the build were
successful or not. In this case, they were.
7-172
Chapter 7
Configure Jobs and Pipelines with YAML
As in the previous pipeline diagram, the second trigger, which wasn't executed, is shown in a
lighter shade. Start, the default trigger, is shown in gray since it wasn't executed either. Had the
pipeline been manually started, the first trigger would have been ignored but the job execution
would've been the same as it was in the current run.
Here's the log:
We can see that all three jobs were successfully executed and the pipeline run lasted less than
a minute. There was no mention of the pass-through trigger (<FiveMinutes>) that wasn't
executed.
7-173
8
Deploy and Manage Your Applications
By using an Oracle Deployment build step, you can deploy an application to an instance
called a deployment target. You deploy extensions to Oracle Cloud Applications instances,
visual applications to Visual Builder instances, or other build artifacts, like Java or Node.js
applications, to instances running Oracle Java Cloud Service (JCS). You can enable
continuous delivery, a method for automatically deploying a build artifact to the target service,
by enabling the Auto Start functionality in a pipeline that contains a deployment build step.
Note:
Before you can publish an extension or visual application from the Designer, the
pipeline's deployment job must be configured with user credentials that are
authorized to deploy to the target Oracle Cloud Applications or Visual Builder
instance. If your project owner hasn't provided these credentials, you'll be prompted
for them each time you click Publish, and must enter them before you can continue.
If you don't know the credentials, you'll need to talk to your project owner or an
administrator. Your administrator may choose to enter the credentials directly in the
build jobs instead, so you aren't prompted for them each time the job runs.
See Configure the Deployment Job for extensions or Configure the Deployment Job
for visual applications.
Application lifecycle operations for extensions and visual applications can be managed by
using the options under their respective build step menus:
• Extensions can be packaged and deployed extensions can be deleted.
• Visual applications can be packaged, data can be imported from and exported to
applications, deployed applications can be locked and unlocked, changes can be rolled
back to a previous version, and deployed applications can be undeployed.
See Lock, Unlock, or Roll Back a Deployed Visual Application for information about lock,
unlock, and rollback operations.
See Configure a Build Job to Import or Export Data from a Visual Application for
information about importing data from and exporting data to visual applications.
Some of these operations can also be managed from the activity menu in the Environments
page's Deployments tab:
• You can export data from, import data to, and undeploy a visual application that's deployed
to your current identity domain's Visual Builder instance.
However, if your visual application is in another identity domain, you'll need to create and
use the Visual Application : Export Data, Visual Application : Import Data, or Visual
Application : Undeploy build steps to undeploy to perform these operations.
• You can delete an extension in an Oracle Cloud Applications instance in the current
identity domain.
8-1
Chapter 8
Package, Deploy, and Manage Extensions
However, if the extension is in another identity domain, you'll need to either use an
Application Extension : Delete build step to perform this operation or use the Manage
Extension Lifecycle page.
The Manage Extension Lifecycle page provides a simpler interface where you can manage
the application lifecycle operations for extensions without the need to create build jobs and
pipelines. For more information, see Manage Your Published Extensions.
8-2
Chapter 8
Package, Deploy, and Manage Extensions
See Create and Configure Build Jobs for information about setting up these jobs for a
production environment.
See Create and Configure a Pipeline for more information about setting up a pipeline.
Note:
If working with Oracle Cloud Applications instances where the authentication method
is OAuth, you can bypass the CI/CD pipeline and instead use the Manage Extension
Lifecycle page to deploy an extension to additional instances. See Manage Your
Published Extensions.
To open an app UI in a deployed Application Extensions extension, click the Open icon.
Delete an Extension
The method you use to delete an extension depends on if you want to delete the entire
extension or only an extension version. Delete an entire extension using the Manage Lifecycle
Extension page. To delete an extension version, the method is different depending on if the
8-3
Chapter 8
Package, Deploy, and Manage Extensions
extension is deployed to an Oracle Cloud Applications instance that's in the same identity
domain as VB Studio, or a different one.
• You delete an extension version manually from its environment's Deployments tab, if the
extension is deployed to an Oracle Cloud Applications instance that's in the same identity
domain as VB Studio (by default a TEST pod, although it could be a DEV pod or a different
TEST pod if you requested that Oracle re-associate VB Studio to a different pod). You
could also configure a build job to delete it.
• If the extension is deployed to a different identity domain (typically your PROD instance)
and you want to delete an extension version, you must configure a build job to delete it.
You should now see the Manage Extension Lifecycle page, which lists all the environments
that are available. You can work with an environment on this page as long as the
authentication method for its Oracle Cloud Applications instance is OAuth.
8-4
Chapter 8
Package, Deploy, and Manage Extensions
Under each environment, you'll see a list of the extensions already deployed. Each entry
includes the extension name plus additional details, such as extension version,
deployment date, and project name. The Manage Extension Lifecycle page can show all
extensions deployed from the current project or across projects. Use Show all extensions
and Only show extensions for my project to toggle between both views.
2. To delete an extension from an Oracle Cloud Applications instance, find the extension that
Tip:
Before deleting an extension from your PROD instance, delete the extension
from the DEV instance (or TEST instance, if applicable) and make sure there
aren't any adverse effects.
5. Click Actions and select Delete next to the extension you want to delete.
Note that there can be only one active extension version at a time. The recommended best
practice is to avoid deleting the active extension version because, if you delete it, the
extension will become inactive as if it wasn't installed at all. You can, however, delete
inactive versions without impacting the currently active deployed extension.
6. In the confirmation dialog box, click Delete.
For an extension deployed to an Oracle Cloud Applications instance in the same identity
domain as VB Studio, you can also use a build job to delete it, if preferred.
8-5
Chapter 8
Package, Deploy, and Manage Extensions
Tip:
If you create a separate job for each task, after you create and configure the lifecycle
management build steps, you may want to add the jobs, in some combination, to the
pipeline you created for the packaging and deployment steps for that testing or
production instance. By integrating these build steps in your deployment process,
you'll ensure a more robust and error-free process when upgrades are done through
deployment.
8-6
Chapter 8
Package, Deploy, and Manage Extensions
These options automate CI/CD tasks for you. Each option has its own set of parameters.
Some operations should follow a particular order. For example, the Audit and Test steps
should be performed before the Package step, and all three steps must precede the
Deploy step.
See the following for more information about each option:
• See Configure a Job to Audit and Test Your Extension for information about Audit and
Test.
• See Configure a Job to Delete an Extension for information about Delete.
5. When you're done, click Save.
8-7
Chapter 8
Package, Deploy, and Manage Extensions
a. Enter the extension's identifier in the Extension ID field and the extension's version in
the Extension Version field.
You can find the details on the Deployments tab of the environment where the
extension is deployed.
b. In Options, enter auditoutputfile=$OUTPUT_FILE, using the parameter you defined in
step 2.
4. In the After Build tab, select Artifact Archiver from the Add After Build Action
dropdown list.
5. In the Configure Post Build Actions panel, in Artifacts from files, enter $OUTPUT_FILE in
the Files to archive field.
6. Click Save.
8-8
Chapter 8
Package, Deploy, and Manage Extensions
For an extension deployed to an instance in a different identity domain, you can also use the
Manage Extension Lifecycle page to delete it, but keep in mind that this deletes the entire
extension. You must use a build job, if:
• You want to delete an extension version, not an entire extension
• The extension is deployed to an Oracle Cloud Applications instance that has an
authentication method of something other than OAuth
Before you configure and run the job, delete the extension from the DEV instance (or TEST
instance, if applicable) and make sure there aren't any adverse effects. For example, let's
assume you have an attribute that's hidden in both the extension's business object and the
user interface. After you delete the extension, the user interface shows the attribute that is still
hidden in the business object. This may cause an error.
To configure the job, make sure you have valid credentials for the Oracle Cloud Application's
instance where the extension is deployed.
9. In Instance, select the Oracle Cloud Applications instance where the application is
deployed.
10. In the Authorization section, select Use OAuth or Use Basic to specify the type of
authorization used to run this build step.
• If you selected Use OAuth, the Authorization is required message displayed
before authorization indicates that this build step needs to be authorized, either by
8-9
Chapter 8
Package, Deploy, and Manage Visual Applications
clicking the Authorize button or by running the build manually and entering the
credentials when you are prompted for them at that point. After authorization, the
Authorization has been provided message and the Renew Authorization button
are displayed.
• If you selected Use Basic, in Username and Password, enter the credentials of an
IDCS user who is not only an Oracle Cloud Applications user, but one who can access
the Oracle Cloud Application's production instance and undeploy from it. These
credentials must be those of a local user, not a federated identity, and must not require
multi-factor authentication.
11. Enter the extension's identifier in Extension ID.
Tip:
The identifier is displayed in a column of the same name on the Deployments
tab of the environment where the extension is deployed. The extension name
can be viewed in a tooltip if you hover over the identifier. You can also see the
extension name from Settings in the top right hamburger menu. This option
displays the visual view of the file.
You can find the Extension Manager version on the Deployments tab of the environment
where the extension is deployed. The Application Extensions section lists deployments for
the current project only. Optionally, you can use the Show Previewed/Shared versions
checkbox to display extensions that were deployed through the Designer, not through a
build step.
13. Click Save.
8-10
Chapter 8
Package, Deploy, and Manage Visual Applications
8-11
Chapter 8
Package, Deploy, and Manage Visual Applications
Tip:
The Schema column lists the database schemas that store the deployed app's
business objects. Hover over the text to see the full schema name in a tooltip or,
to copy it, select the Copy to Clipboard icon , then paste it in a text editor of
your choice.
See View Database Schemas Used During an App's Lifecycle for more
information.
8-12
Chapter 8
Package, Deploy, and Manage Visual Applications
Note:
If you deployed your visual application to a different identity domain or if the
application URL includes the version, you need to add and configure steps in a build
job to perform lock, unlock, or roll back operations.
After you create and configure the lifecycle management build steps, you may want to add
them, in some combination, to the pipeline you created for the packaging and deployment
steps for that testing or production instance. By integrating these build steps in your
deployment process, you'll ensure a more robust and error-free process when upgrades are
done through deployment.
8-13
Chapter 8
Package, Deploy, and Manage Visual Applications
• For applications that are deployed with the version in the URL (staged applications), the
undeploy confirmation dialog warns, "Are you sure you want to undeploy this application?
You won't be able to restore it if you do."
• For applications that are deployed without the version in the URL (live applications), the
undeploy confirmation dialog warns, "Are you sure you want to undeploy this application
that is being used by your customers? You won't be able to restore it if you do."
By default, the Yes, I'm sure checkbox is unchecked, Undeploy is grayed out (unavailable),
and Cancel is active and in focus. Undeploy will only become active (available) after you opt
in by selecting the Yes, I'm sure checkbox.
5. For the visual application to undeploy, click Actions and select Undeploy.
6. In the confirmation dialog box, click Undeploy.
8-14
Chapter 8
Package, Deploy, and Manage Visual Applications
Tip:
If you create a separate job for each task, after you create and configure the lifecycle
management build steps, you may want to add the jobs, in some combination, to the
pipeline you created for the packaging and deployment steps for that testing or
production instance. By integrating these build steps in your deployment process,
you'll ensure a more robust and error-free process when upgrades are done through
deployment.
job:
These options are Grunt-based commands that automate CI/CD tasks for you. Each option
has its own set of parameters. Some operations should follow a particular order. For
example, the Audit and Test steps should be performed before the Package step, and all
three must precede the Deploy step.
See the following for more information about each option:
• See Configure a Job to Audit and Test Your Visual Application for information about
Audit and Test.
• See Configure a Job to Import Data to or Export Data from a Visual Application for
information about Import Data and Export Data.
• See Configure a Job to Lock, Unlock, or Roll Back a Deployed Visual Application for
information about Lock, Unlock, and Rollback.
• See Configure a Job to Undeploy a Visual Application for information about Undeploy.
5. When you're done, click Save.
8-15
Chapter 8
Package, Deploy, and Manage Visual Applications
8-16
Chapter 8
Package, Deploy, and Manage Visual Applications
8-17
Chapter 8
Package, Deploy, and Manage Visual Applications
12. In Artifact, enter the name of the ZIP file to contain the business object data to import or
export. For example, enter bodata.zip.
13. Add additional steps to the job to complete the import or export operation.
For example, to complete exporting data you need to add an after build action that
archives the artifact (bodata.zip, in our example) while you typically need to copy an
artifact from another job for import business object data. See Archive Artifacts and Copy
Artifacts from Another Job for more information.
14. Click Save.
Tip:
If you deployed a visual application to a Visual Builder instance that's in the same
identity domain as your VB Studio instance and if the URL doesn't include the
application version (live, rather than the application version, appears in the
application URL you're rolling back) , you can roll the application back to a previous
version from your Environments page's Deployments tab, using the Rollback menu
option when you've deployed your visual application more than once. You can only
roll back one previous version at a time.
8-18
Chapter 8
Package, Deploy, and Manage Visual Applications
Note:
The version that you specify to roll back must be the latest version of the
application. If the version isn't the latest, you'll see an HTTPS status 400
error when you run the rollback job. So, if the latest version of the application
is version 2.3, that is the version you specify to roll back, not version 2.2 or
any other earlier version.
8-19
Chapter 8
Deploy Build Artifacts to Oracle Cloud Services
8-20
Chapter 8
Deploy Build Artifacts to Oracle Cloud Services
access VB Studio and VB Studio needs to access the VM build executors. That access is done
through a public subnet that needs to be configured. See Allow VM Build Executors to Access
A Private Subnet's Resources.
You can either add a build step that deploys the build artifact(s) to the job that creates and
packages the artifact(s) or you can create a separate job for each task. If you use separate
jobs, you can create a pipeline that begins with a job that builds and packages the application,
followed by a job that deploys the build artifact(s) to the desired target environment. Using
pipelines allows you the flexibility to add testing and other tasks to the flow.
12. Click Find Targets and select the server you want to deploy to from the list of available
servers or clusters.
13. Click OK.
14. In the Build Artifact field, enter the path to the artifact that you want to deploy.
15. In the Application Name field, enter the name that will be used by the target JCS service
to identify your application.
16. Select the Deploy as shared library checkbox to deploy the artifact directly to the JCS
server as a shared library or leave it unchecked (default).
When the artifact is deployed directly to a JCS server, any application can reference the
resources in that deployed shared library.
17. Click Save.
18. To run the job, from the Builds page, click Build Now and the job will execute, first
copying the artifact, then deploying it to the selected JCS target instance.
8-21
Chapter 8
Deploy Build Artifacts to Oracle Cloud Services
At this point, you probably want to create a pipeline that flows a series of jobs that builds and
packages the artifact, then retrieves it and deploys it to the desired JCS server in the target
instance.
8-22
Chapter 8
Deploy Build Artifacts to Oracle Cloud Services
Action How To
Start or stop the Open and use the target service’s console to start or stop the deployed
application application on the target service.
Redeploy the application If you’ve made changes to the source code or the build generated a new
artifact, you can rerun the deploy build step to redeploy the application to the
target service.
View logged deployment In the build log, locate and view the deployment section.
information
Undeploy a deployed Open and use the target service’s console to stop and then undeploy the
application deployed application on the target service.
8-23
Part III
Maximize the Power of Your Project
These are things that a project owner can choose to add and, if added, project members can
use. Each chapter combines set-up and usage information.
Topics:
• Track and Manage Tasks, Defects, and Features
• Manage Software Releases
• Use Agile Boards to Manage and Update Issues
• Manage Binaries and Dependencies with Maven
• Access External Docker Registries
• Use the Project's NPM Registry
• Send Notifications to External Software Using Webhooks
• Share and Use Code Snippets
• Co-Author Wikis
9
Track and Manage Tasks, Defects, and
Features
Use issues to track new feature requests or enhancements, assign tasks to team members, or
file bugs.
You can create, update, and search issues from the Issues page or from Agile boards. You
can also use REST APIs to create, retrieve, and update issues.
In a project, you can create an issue as a Task, Defect, or a Feature. If your team uses an
Agile Scrum board to update issues, Epic and Story types of issues are also available. An Epic
is a larger issue typically composed of multiple smaller sub-issues or Story issues. An Epic
must have sub-issues and can span multiple sprints.
These are the key steps you’ll perform to create and track issues:
1. As the project owner, start by setting up products, components, and releases for your
project, which you'll need when you start identifying tasks, defects, and features.
If the default set of issue fields don’t meet your requirements, create custom fields.
2. Create issues and assign them to your team members.
3. Update issues, either from the Issues page or from an Agile board.
Issue Types
An issue can be categorized into task (or action), defect (or bug), and feature (or
enhancement).
You can create these types of issues:
9-1
Chapter 9
Create Issues
Create Issues
You can create an issue from the Issues page or from the REST API. When you create an
issue, it gets assigned a unique ID and is added to the issues list on the Issues page.
When you create an issue, you specify its summary, type, severity and priority, due date, tags,
and release. You can assign the issue to a team member or to yourself, or leave the field blank
to assign the issue later to a team member.
Note:
VB Studio doesn't provide an option in the user interface for deleting an issue and
doesn't provide the means to perform such a deletion from the service's backend
database, even with administrative permissions. Instead, you should resolve and
close the issue, using one of the available fields (such as Entered in error, Duplicate,
Other) and add a comment explaining the reason.
Search Issues
You can search for issues using the pre-defined filters under Standard Searches, My
Searches, Shared Searches, or Global Searches. If you can’t find the issue, you can run a
basic search or an advanced one.
9-2
Chapter 9
Search Issues
To run a basic search, use the Search Issues box in the upper-right corner of the Issues page.
You can search for a term in the summary, description, or comments of issues. To clear the
search term, click Clear Filter .
To run an advanced search, use the Advanced Searches link. You can search through all, not
archived, or archived issues. You can also search for issues using various parameters such as
sprints, product, version, date, owner, type, and priority.
To save the search query as a filter, click Save this search. To see the search query
expression, click Show Search String. Later, if you want to edit the search query, click Edit
this search.
To edit a custom search query, mouse over the query under My Searches and click Edit .
To delete a custom search query, mouse over the query under My Searches and click Delete
.
9-3
Chapter 9
View and Update Issues
Element Description
Share a search filter with
specific project members 1. In My Searches, mouse over the filter link, and click Share .
2. In the Start Sharing Search dialog box, select the project member names
in Share with following users.
3. Click OK.
The filter link moves from My Searches to Shared Searches.
Share a search filter with
all project members 1. In My Searches, mouse over the filter link, and click Share .
2. In the Start Sharing Search dialog box, select the Share with Everyone
check box.
3. Click OK.
The filter link moves from My Searches to Global Searches.
Stop sharing a search 1. In Global Searches or Shared Searches, mouse over the filter link and
filter
click Stop Share .
2. In the Stop Sharing Search dialog box, click OK.
If the search query is being used by other project members, the dialog
box shows their list.
When you stop sharing a search query, it is removed from the Shared
Searches or Global Searches list for all project users.
Note:
VB Studio doesn't provide an option in the user interface for deleting an issue and
doesn't provide the means to perform such a deletion from the service's backend
database, even with administrative permissions. Instead, you should resolve and
close the issue, using one of the available fields (such as Entered in error, Duplicate,
Other) and add a comment explaining the reason. Another alternative is to archive
the issue, which effectively hides it from being viewed in several places in the Issues
and Agile pages. See Archive Issues to learn more about this non-destructive
process.
9-4
Chapter 9
View and Update Issues
2. Click the + Create Merge Request button and display the New Merge Request wizard.
The Branch page is where you start.
3. Select the repository and the target branch, then click the Review Branch dropdown and
select an existing branch or create a new review branch. If you need to create a new
branch, type the name of this new branch in the field.
Let's create a new branch, say newbranch, so we'll type it in the Review Branch field.
Notice the message that is displayed under the field:
Branch 'newbranch' will be created from 'main'
9-5
Chapter 9
View and Update Issues
9-6
Chapter 9
View and Update Issues
5. Add more reviewers, as needed, and click Next to go to the Details page.
The current issue is automatically linked to the MR and is added to the Linked Issues
field.
9-7
Chapter 9
View and Update Issues
11. Return to the Linked Merge Request section on the Issue page and mouse over the
branch6 item in the Review Branch column.
Notice that if a branch is remote or was deleted, you'll see a line through its name and
you'll see the message like the one shown here.
12. Click the Unlink icon and unlink the merge request from the issue.
Unlinking breaks the association between the MR and the issue, but nothing is deleted.
The MR is still there after unlinking.
So, you can now show and create the association from both sides, from a merge request as
well as from an issue.
Resolve an Issue
You can resolve an issue as Fixed, Invalid, Duplicate, Will not fix, Works for me, or Need info:
9-8
Chapter 9
View and Update Issues
9-9
Chapter 9
View and Update Issues
• To edit the time spent entry, click Edit and update the fields in the Edit Time Spent
dialog.
• To remove a time spent entry, click Remove and update the fields in the Update Time
Spent dialog box.
The remaining time is adjusted automatically.
Action How To
Create a child issue for You can create multiple child issues for an issue:
an issue
1. Click the issue link to open it in the Issues page.
2. Click + New Sub-issue.
3. Enter details for the new issue and click Create Issue.
4. Click the parent issue's ID in the header to open it and, in the
Associations section, verify the child issue's ID.
Add a parent issue to an You can only add one parent to an issue:
issue
1. Click the issue link to open it in the Issues page.
2. In the Associations section, in Parent Issue, enter the parent issue's ID
or summary text, and select it.
3. Click Save.
9-10
Chapter 9
View and Update Issues
4. Click the Issues search box, enter your search criteria and, from the list, select the issue to
link.
9-11
Chapter 9
View and Update Issues
6. Click the issue link to display the Issues page for the linked-to issue.
Below the selector and search box, the Relations section displays a row showing the type
of relation that was automatically selected for the linked-to issue.
For example, if you selected "Requires" for the relation type when you created the
relationship, "Required By" will be the relation type that is shown for the linked-to issue.
7. Click the linked issue's link and return to the issue from which the linked-to issue was
linked.
9-12
Chapter 9
View and Update Issues
The contents of Found In and Release are determined by Product. If Product isn’t
specified, the intersection of all known products is used. For example, if product P1 has
Found In set to 1.0, 2.0 and product P2 has Found In set to 1.0, 1.5, then with no
product specified, the Found In is set to 1.0. The same logic is applied for Release too.
4. Click Next.
5. On the Issues will be Updated page, verify the summary, and click Save.
Issues that fail the update are listed with a description of the error. To resolve errors for multiple
issues, select the error issues and click Update Selected. You’ll be taken to the Issues
Selected page where the previous changes you made are shown.
If all issues are successfully updated, you’ll be returned to the Issues page.
Archive Issues
VB Studio does not support deleting issues, but does provide a way to hide (archive) them as a
way to clean up obsolete, out of scope, and decommissioned issues so they don't pile up
unnecessarily in the backlog. There are no special permissions needed to mark an issue as
one that is obsolete. Issues that were archived (hidden) can be unarchived (unhidden) at any
time. Unlike deletion, archiving issues isn't a destructive operation.
VB Studio supports query filtering based whether an issue was archived or not. Multiple issues
can be archived in a single operation as well. Archived issues only affect relevant queries on
the Issues tab, not issues referenced in MRs, builds, links, or elsewhere. Archived issues don't
show up in the default predefined queries so, if you want to display a default query that shows
all archived issues, you'll have to add a new default query for that.
Global Search (in the upper right corner of the Issues page) doesn't filter issues when you
look for specific issues, whether they've been archived or not. Typeahead search in the issue's
"Duplicate Of" and "Associations" fields doesn't exclude archived issues either, and neither do
sub-issue queries in the "Sub-issues" table or duplicate queries in the "Duplicates" table. The
Advanced Search function does expose archived issues.
The issue owner and CC list members receive notifications after an issue has been archived
(or unarchived). This notification excludes mass updates, effectively limiting email notifications
to a per-issue basis. Archiving/unarchiving activity is automatically logged in the issue's History
as well as in the project's Recent Activities feed. Archived issues don't appear in the Agile
backlog.
Once an issue has been archived, it won't appear again in most user queries. Archived issues
can be unarchived at any time, after which they will reappear wherever they had been hidden.
An issue cannot be archived while it is being created. You can only archive an existing issue.
1. In the Issues page, select an issue, and click its Summary link to open it.
2. Click the Archive checkbox and then click Save.
VB Studio displays a message that says the issue has been updated.
When you return to the Issues page, notice that the archived issue no longer appears in
any of the views under Standard Searches (Assigned to me, Open issues, Recently
changed, or Related to me). It only shows up in the list view under Archived issues.
Also notice that the archiving/unarchiving action you performed shows up in the History
tab under Activity and under Recent Activities on the Project Home page.
9-13
Chapter 9
Watch an Issue
Tip:
You can archive or unarchive multiple issues in a single operation:
a. Click the checkboxes to the left of each issue you want to update.
b. Click Update Selected.
c. Under Details, scroll to the bottom of the list, select the Archive checkbox,
and use the selector to pick Archive (or Unarchive).
d. Click Next to display the Summary window.
e. Review your choices, and then click Save.
VB Studio displays a message that says the selected issues have been
updated.
3. Return to the Issues page, select an issue, and click its Summary link to open it.
4. Click the Unarchive checkbox and then click Save.
VB Studio displays a message that says the issue has been updated.
When you return to the Issues page, notice that the archived issue reappears in all the
views under Standard Searches (Assigned to me, Open issues, Recently changed,
and Related to me). It no longer appears in the list view under Archived issues any more
though.
Archived issues, indicated by the badge just to the left of the summary text, are
displayed in some Agile boards, in the backlog, in active sprints, and in reports:
• A board cannot be queried using the predefined Archived Issues query.
• Archived issues aren't shown the Backlog page's Backlog section.
• If you send an issue (or drag-and-drop it) from a sprint to the backlog in the Backlog page,
the issue will be removed from the sprint but it won't be added into the Backlog section.
• Archived issues can be added to or removed from a sprint.
Watch an Issue
You can set up a watch on an issue and get email notifications when a project user updates an
issue, adds a comment, or adds or removes an attachment:
Action How To
Issues assigned to you By default, you get email notifications of issues assigned to you. If you aren’t
getting the email notifications, select the Issue updates, attachments and
comments check box in your user preferences page:
1. In the branding bar, click the user avatar, and select Preferences.
2. Click the Notifications tab.
3. Select the Issue updates, attachments and comments check box, if
not selected.
4. To the left of the User Preferences title, click Close to return to the
last opened page.
9-14
Chapter 9
Watch an Issue
Action How To
Issue created by another 1. In the branding bar, click the user avatar, and select Preferences.
user
2. Click the Notifications tab.
3. Select the Issue updates, attachments and comments check box, if
not selected.
4. To the left of the User Preferences title, click Close to return to the
last opened page.
5. Open the issue in the Issues page.
6. In the Details section, in CC, enter and select your name.
You may also enter other names of other users if you want to notify them
too.
7. Click Save.
To stop watching, remove your name from the CC field.
Issues you created but By default, you get email notifications of issues created by you. When you
are assigned to another create an issue and assign it to another user, your name is set in the CC field
user of the issue. Open the issue in the Issues page and verify your name in the
CC field of the Details section.
To stop watching, remove your name from the CC field.
9-15
10
Manage Software Releases
A Release enables you to provide a stable code and artifacts of your applications that project
users can download. For a release, you can specify tags or branches of Git repositories with
stable code, artifacts of project Maven repository, build artifacts of stable builds, and binary
files.
For example, you can you create a release titled V18-Q1 to mark stable code files, artifacts,
and binaries of your application for the first quarter release of 2018 release. Project users then
won’t have to look around or ask which Git repository or branch has the stable code. They can
then download Git repository archives and other artifacts of the V18-Q1 release from the
Release page itself.
You can access and manage releases from the Releases page. When a project user opens a
release, the user can download source snapshots of a specified branch or tag of the project Git
repository, artifacts from the project Maven repository, specified binaries, and archived build
artifacts.
State Description
Draft Indicates that the features of the release are under development.
When you create a release, you specify the Maven artifacts and the Git
repository tags. While adding a Git repository to a release, you may want to
specify a branch that has the stable code at the time of release. Usually, it’s
the main branch, but you can specify any branch name. You may also want to
specify the Git repository tag that indicates the stable state of the branch.
Usually, the tag is created before the release when the code in the branch is
stable. While creating a Release, if you specify a tag name that doesn’t exist,
it’s automatically created when you change the status of the Release to
Public.
Pre-Release Indicates that the release is stable, but might need some fixes before it
becomes Public.
You usually set the release’s status to this state after your team has
completed all features, staged the software, and are awaiting approvals to
release the software. If the Maven artifacts, Git repositories, tags, or branch
names have changed since the release was in the Draft state, edit the
release and update the artifacts.
Public Indicates that the release is public or is ready to go public.
While creating a release, if you specify a tag name that doesn’t exist, it will be
automatically created for the specified branch when the release is set to
Public. If you specified an existing tag name, it will be used. This might be
useful when you create a release that is already public.
You might want to edit the release and update the Maven artifacts, Git
repositories, tags, or branch names if they have changed while the release
was in the Pre-Release or the Draft state.
10-1
Chapter 10
Create a Release
Create a Release
When you create a release, you specify the build artifacts, Git repositories and branches, and
Maven artifacts. You can create a release or clone an existing release.
Action How To
Create a release
1. In the left navigator, click Releases .
2. Click + Create Release.
3. In Name and Description, enter a release name and description.
4. In Status, specify the status of the release.
5. Add the artifacts.
6. In Notes, enter the release notes in the Page Text tab. Preview the notes
in the Preview tab.
You can use the project’s wiki markup language to format the notes.
7. Scroll to the top of the page and click Save.
Clone a release
1. In the left navigator, click Releases .
2. Select the release that you want to edit or clone, click Actions and
then select Clone.
3. In Name and Description, enter a release name and description.
4. In Status, specify the status of the release.
5. Add, update, or remove the artifacts.
6. In Notes, enter the release notes in the Page Text tab. Preview the notes
in the Preview tab.
You can use the project’s wiki markup language to format the notes.
7. Scroll to the top of the page and click Save.
10-2
Chapter 10
Manage Releases
Action How To
Add Build artifacts Expand Builds and specify the job, build number, and its artifact. Click Add to
Release to add the artifact. You can specify multiple artifacts.
To use the last build of the specified job when the release’s status changes to
Public, in Build, select Last Build. When the release’s status changes to
Public, make sure that the last build is successful and has generated desired
artifacts.
To store the artifact in the project’s storage system, in case the specified job
or build is removed, select the Store check box.
Add Maven artifacts Expand Maven Artifacts and specify the group ID, artifact ID, and version of
artifacts. Click Add to Release to add the artifact. You can specify
multiple artifacts.
Add Git repositories Expand Repositories, and specify Git repositories and branches (or tags).
Click Add to Release to add the artifact. You can specify multiple
artifacts.
If you enter a tag name that doesn't exist, a Git repository tag of the same
name will be created when the release is marked as Public.
Add binary artifacts The only time you can add binary artifacts is when you edit a release. You
can’t add binary artifacts when you create a release.
Expand Binaries and upload the binary files.
Manage Releases
After creating a release, you can edit its artifacts and properties, change its status, or delete it.
Action How To
Edit a release On the Releases page, select the release that you want to edit. Click Actions
and then select Edit. On the Edit Release page, update its name,
description, artifacts, and click Save.
Change a release’s state Edit a release. On the Edit Release page, in Status, change the state. The
name of the release at the top of the page shows the selected release state.
Delete a release On the Releases page, select the release that you want to edit. Click Actions
and then select Delete.
10-3
11
Use Agile Boards to Manage and Update
Issues
The Agile methodology is a type of software development that's based on an incremental
model focusing on process adaptability and customer satisfaction. In Oracle Visual Builder
Studio (VB Studio), you use the Agile methodology to manage issues in Scrum and Kanban
boards.
If you're new to Agile, see http://agilemethodology.org/ for more information.
Before creating a board, appoint a team member as the Agile board’s leader. This leader is
responsible for managing and updating the board's issues, setting up team meetings to discuss
the progress with these issues, and updating them in the board.
Here are the key steps the board’s leader performs when creating and managing issues:
1. If required, create an issue query that returns a list of issues from which you'll select and
add to the Agile board.
2. Create an Agile board (Scrum or Kanban).
3. Configure the working days, progress states, and other board properties.
4. Manage sprints or active issues.
5. Update the issues' progress states.
6. Review reports and adjust the sprints, issues, or the board accordingly.
Component Description
Board A Board is used to display and update issues of the project using the Agile
methodology. There are two types of boards available: Scrum and Kanban.
When you create a board, you associate it with an issue query and the issues
returned by the query are added to the board. You can create your own board
or use a board created by a team member.
In a board, you update issues by moving them to different progress states of
the board. Each progress state has some pre-defined conditions that specify
which issues can be assigned to a progress state.
Scrum In a Scrum board, tasks are broken small actions to be completed in fixed
duration cycles, called as Sprints.
Kanban In a Kanban board, tasks are managed with a focus on continuous delivery.
11-1
Chapter 11
Create and Configure Agile Boards
Component Description
Sprint A Sprint is a short duration (usually, a week or two) during which your team
members try to implement a product component.
You add the product component related issues to a sprint. When you start
working on a product component, you start (or activate) its related sprints. To
update issues of a sprint, you must first activate the sprint and add the sprint
to the Active Sprints view.
Story Points A Story Point is a metric that defines the relative effort of work and helps to
understand how complex the issue is.
Backlog view In a Scrum board, the Backlog view displays issues of the board, active and
inactive sprints of the board, and the sprints from other boards that contain
issues matching the board’s query.
Each sprint lists issues added to it. The Backlog section (the last section of
the Backlog page) lists all open issues that aren’t part of any sprint yet. The
Backlog view doesn’t show the resolved and closed issues.
In a Kanban board, the Backlog view displays active issues (issues being
actively worked on) in the Active Issues section and a backlog list of issues
(issues aren’t being actively worked on) in the Backlog section. The Epic
issues don’t appear in the Backlog view.
Active Sprints view Available in a Scrum board, the Active Sprints view lists all active sprints of
the board and enables you to update an issue status by dragging and
dropping it to the respective status columns.
Active Issues view Available in a Kanban board, the Active Issues view enables you to manage
the progress of active issues.
Reports view Displays various reports and charts that summarize the progress of issues.
Create a Board
When you create a board, you specify the board type, an issue search query, and the
estimation criteria.
Any project member can create a board from the Boards page:
11-2
Chapter 11
Create and Configure Agile Boards
Note that Resolved, Verified, and Closed issues aren’t added to the board. To add new
issues to a board, edit the issue search query to reflect the issues in its search result. The
issues are automatically reflected in the Backlog list of the board.
You can also create a board from the Switch Board menu. From the board name menu, click +
New Board.
After creating a board, you can configure its working days, progress states, and conditions.
11-3
Chapter 11
Create and Configure Agile Boards
Action How To
Edit a progress state 1. From the progress states list, select the progress state.
2. To edit the name and description, in Name and Description, enter a new
name and description.
3. To update the capacity (number of issues in the progress state), update
the value in Suggested Issue Capacity.
If the number of issues exceeds the suggested capacity, a warning icon
and a message appears in the Active Sprints or the Active Issues view.
4. To remove a condition, select the condition from the Conditions list, click
> and move it to the Unassigned Conditions list.
To add a condition, select the condition from the Unassigned
Conditions list, click < and move it to the Conditions list.
For example, if you remove the Resolved - WorksForMe from the
Completed progress state, issues in the Resolved - WorksForMe state
don’t appear in the board.
Add a progress state A condition can be associated with one progress state only. Before you add a
progress state, remove the conditions that you want to apply to the new
progress state from their existing progress states.
1. Click + Add Progress State.
2. In Name and Description, enter a name and description.
3. In Suggested Issue Capacity, specify the number of issues to be
allowed.
If the number of issues exceeds the suggested capacity, a warning icon
and a message appears in the Active Sprints or the Active Issues view.
4. To mark the state as the Completed state, select the Completed State
check box.
The check box is disabled if a Completed state exists or the current state
isn't the last state in the list.
5. To add a condition, select the condition from the Unassigned
Conditions list, click Move to Conditions and move it to the
Conditions list.
6. To remove a condition, select the condition from the Conditions list, click
Move to Unassigned Conditions and move it to the Unassigned
Conditions list.
Reorder progress states In the progress states list, use the Up and Down order buttons to change the
orders of the states. The buttons appear when you mouse over the state
name. The order of states in the list is reflected in the Swimlanes and
Columns views.
The Completed state must be the last state in the list. If Completed isn’t the
last state in the list, a Warning icon appear next to the state name. Any
changes made to the page aren’t saved until the Completed state is the last
state in the list.
Delete a progress state In the progress states list, mouse over the progress state, and click Delete
. All conditions of the deleted progress state move to the Unassigned
Conditions list and are available to new progress states.
You can’t delete the Completed state, but you can delete other states.
11-4
Chapter 11
Create and Configure Agile Boards
Action How To
Edit a board’s name and 1. From the Board drop-down list, select Configure.
description
2. In the General tab, in Name and Description, update the values.
3. Click Save.
Edit the board’s search 1. From the Board drop-down list, select Configure.
query and estimation
2. In the General tab, in Search select the search query. In Estimation,
enter the new estimation value.
3. Click Save.
11-5
Chapter 11
Use Scrum Boards
Action How To
Enable or disable time If the time tracking is enabled, then the Active Sprints page shows the
tracking estimation in Remaining Days only. The Backlog page shows the estimation
in Remaining Days if estimation metric is Estimated Days.
If the time tracking is disabled, then the Backlog, Active Sprints and
Reports pages show the chosen metric for Estimation (estimated days or
story points) instead of Remaining Days and Time Spent.
1. From the Board drop-down list, select Configure.
2. In the General tab, in Time Tracking, select On or Off to enable or
disable time tracking.
3. Click Save.
Create a copy of a board To create another board with similar properties of an existing board that you
can access, instead of creating a new board and manually copying properties,
you can create a copy of the board. The copied board has properties include
time tracking, progress states, and working days.
1. From the Board drop-down list, select Copy Board.
2. In the Copy Board dialog box, click Copy.
Delete a board You can’t delete a Scrum board with active sprints. You must complete the
active sprints before you delete the board. You can delete a Kanban board
with active issues or archives. All issues of the deleted board are returned to
the backlog.
1. From the Board drop-down list, select Delete Board.
2. In the Delete Agile Board dialog box, select the I understand that my
agile board will be permanently deleted check box and click Delete.
11-6
Chapter 11
Use Scrum Boards
Action How To
Create a sprint 1. From the toggle buttons, click Backlog.
2. In the Backlog view, click + Add Sprint.
3. In the Add Sprint dialog box, enter the sprint name. If the Scrum board
uses story points, then specify the sprint’s capacity.
4. Click OK.
Start a sprint When you or your team begin work on a sprint and want to update the issues
of the sprint, you must first start (or activate) it.
1. From the toggle buttons, click Backlog.
2. In the Backlog view, for the sprint that you want to start, click Start
Sprint.
3. In the Start Sprint dialog box, specify the start and end dates of the
sprint.
If necessary, update the sprint’s name and its estimate.
4. Click Start.
The started sprint is now available in the Active Sprints view.
Reorder a sprint In the Backlog view, by default, the inactive sprints (also called as future
sprints) in the order they were created. You can change their display order
manually.
For the inactive sprint that you want to move up or down, click ... and select
Move sprint up or Move sprint down.
You cannot change the order of active sprints. The active sprints are ordered
by Start Date in the Backlog view. If two sprints have the same Start Date,
then they are ordered by name.
Move a sprint to another 1. From the toggle buttons, click Backlog.
board
2. In the Backlog view, for an inactive sprint, click ... and select Edit sprint.
If the sprint is active (or started), click Edit Sprint.
3. In the Edit Sprint dialog box, from the Board drop-down list, select the
target board.
4. Click OK.
Delete a sprint You can delete an inactive sprint from the Backlog view of the board. You
can’t delete an active sprint.
For the inactive sprint that you want to delete, click the ... and select Delete
Sprint. The sprint is deleted and all issues of the sprint are moved to the
Backlog list.
11-7
Chapter 11
Use Scrum Boards
Action How To
Add an issue to a sprint 1. From the Backlog list or from the sprint that contains the issue, drag the
issue to the target sprint.
2. In the blue dotted rectangle that appears when you drag the issue to the
target sprint, drop the issue in the blue rectangle.
You can also right-click the issue and select Send to > target sprint name to
move the issue to the target sprint. A Sprint field is also added to the issue
indicating the sprint it’s associated with.
If you’re unable to use the drag-and-drop action, click the issue link to open it
in the Issues page. Navigate to the Agile section. From the Added To drop-
down list, select the sprint.
Create an issue from the In the sprint, below the issues table, click New Issue. On the New Issue page,
sprint enter the issue’s details, and click Create Issue.
The new issue is automatically associated with the current sprint.
Remove an issue from a 1. From the sprint that contains the issue, drag the issue to the Backlog list.
sprint
2. In the blue dotted rectangle that appears when you drag the issue to the
Backlog list, drop the issue in the blue rectangle.
You can also right-click the issue and select Send to > Backlog to remove
the issue from the sprint.
If you’re unable to use the drag-and-drop action, click the issue link to open it
in the Issues page. Navigate to the Agile section. In the Added To field, click
11-8
Chapter 11
Use Scrum Boards
Reschedule a Sprint
While updating issues of a sprint, you can change the start or end date of the sprint, or update
its capacity from the Edit Sprint dialog box.
1. In the Backlog view, for the sprint you want to reschedule, click Edit sprint.
2. In the Edit Sprint dialog box, change the start and end dates.
To update the sprint’s capacity, update Story Points . The field is available if story points
were selected as the estimation of the board.
3. Click OK.
11-9
Chapter 11
Use Kanban Boards
Complete a Sprint
You can complete a sprint from the Active Sprints view of the board.
You must be a project owner or the board owner to mark the sprint as completed.
1. Open the board the sprint belongs to.
2. Click Active Sprints.
3. In the sprint drop-down list on the left, select the sprint.
4. Click Complete Sprint.
5. In the Complete Sprint dialog box, select the I understand that it will be removed from
the Active Sprint view check box, and click Complete Sprint.
After a sprint is complete, it’s removed from the Active Sprints view. A warning displays if there
are any incomplete issues in the sprint. All incomplete issues go back to the next inactive
sprint, or to the Backlog section if there are no inactive sprints. The Sprint Report page opens
showing the day-by-day progress of the sprint issues.
11-10
Chapter 11
Use Kanban Boards
Action How To
Activate an issue 1. From the Backlog list, drag the issue to the Active Issues section.
2. In the blue dotted rectangle that appears when you drag the issue to the
Active Issues section, drop the issue in the blue rectangle.
In the Backlog list, you can also right-click the issue and select Send to
>Active Issues to move the issue to the Active Issues list. Issues already
added to sprints of Scrum boards aren’t available in the Kanban board
Backlog list.
If you’re unable to use the drag-and-drop action, click the issue link to open it
in the Issues page. Navigate to the Agile section. From the Added To drop-
down list, select the Active Issues option under the board name.
Create an issue from the In the Active Issues section, below the issues table, click New Issue. In the
Active Issues section New Issue page, enter the issue’s details, and click Create Issue.
The new issue is automatically activated and associated with the Kanban
board.
Remove an issue from 1. From the Active Issues section, drag the issue to the Backlog list.
the Active Issues list
2. In the blue dotted rectangle that appears when you drag the issue to the
Backlog list, drop the issue in the blue rectangle.
You can also right-click the issue and select Send to > Backlog to remove
the issue.
If you’re unable to use the drag-and-drop action, click the issue link to open it
in the Issues page. Navigate to the Agile section. In the Added To field, click
Remove .
11-11
Chapter 11
Use Kanban Boards
Complete a Sprint
You can complete a sprint from the Active Sprints view of the board.
You must be a project owner or the board owner to mark the sprint as completed.
1. Open the board the sprint belongs to.
2. Click Active Sprints.
3. In the sprint drop-down list on the left, select the sprint.
4. Click Complete Sprint.
5. In the Complete Sprint dialog box, select the I understand that it will be removed from
the Active Sprint view check box, and click Complete Sprint.
After a sprint is complete, it’s removed from the Active Sprints view. A warning displays if there
are any incomplete issues in the sprint. All incomplete issues go back to the next inactive
sprint, or to the Backlog section if there are no inactive sprints. The Sprint Report page opens
showing the day-by-day progress of the sprint issues.
11-12
Chapter 11
Review Agile Reports and Charts
Burndown Charts
Burndown charts show how much work still needs to be completed in issues or epics.
The burndown chart for issues and epics is available in Scrum and Kanban boards:
1. Open the board.
2. Click Reports.
Scrum Boards
For a Scrum board, the chart for your active sprint is displayed.
• To use a different sprint, click the Sprint drop-down.
• To use a different estimate criterion, click the Burndown drop-down and select from
Estimated Days, Story Points, or Number of Issues. The Y-axis in the chart reflects this
setting.
The burndown chart displays the configured tracking statistic for the active sprint, start and end
dates, the sprint capacity, and a guideline for completing the statistic you’re tracking in the
sprint. The horizontal axis tracks time; the vertical axis represents your configured tracking
ttatistic, either story points, estimation days, or number of issues. Use burndown charts to see
the total work remaining and increase the accuracy for predicting the likelihood that you'll
achieve the sprint's goal. By tracking the remaining work throughout the iteration, your team
can manage its progress and respond appropriately, especially if things don’t go as planned. If
time tracking is enabled for the board, the burndown chart always shows the number of
remaining days and the amount of time spent.
11-13
Chapter 11
Review Agile Reports and Charts
A burndown chart includes all of the sprint's issues, those that’ve been completed as well as
those that are still being worked on. Mapping the status for these issues to your board
determines when an issue is considered completed or not completed.
The bottom of the page shows a history, a table of events associated with the issues, including
issues that still haven't been completed.
Kanban Boards
For a Kanban board, the chart displays your active issues. To see issues for an archived
version, click the Issues list and select the desired one.
The burndown chart displays the configured tracking statistic for the active issues. The
horizontal axis tracks time; the vertical axis represents your configured tracking statistic, either
story points, estimation days, or the number of issues. Use burndown charts to see how much
work remains to be done. This will increase your ability to accurately predict the likelihood that
you'll achieve the goal. By tracking the remaining work throughout the iteration, your team can
manage its progress and respond appropriately if things don’t go as planned. If you enable
time tracking for the board, the burndown chart always shows the number of days remaining
and the amount of time spent thus far.
The burndown chart includes all issues, those that have been completed and those that are
still pending. Mapping these statuses to your board determines when an issue is considered
completed or not completed.
The bottom of the page shows a history, a table of events associated with the issues, including
issues that still haven't been completed.
Sprint Reports
Sprint Reports show completed and open (not yet completed) issues in a sprint.
Sprint Reports are available for sprints in Scrum boards only:
1. Open the board.
2. Click Reports.
3. If necessary, click .
4. Click the Sprint Report tab. The Sprint Report chart for your active sprint is displayed.
• To select a different sprint, select it from the Sprint drop-down list.
• To select a different estimate criterion, select Estimated Days, Story Points, or
Number of Issues from the Burndown drop-down list. The Y-axis in the chart reflects
this setting.
A Sprint Report provides a day-by-day progress report, with much of the same information
that’s in the burndown chart, although in a slightly different format. The Sprint Report shows
the list of issues in each sprint. It provides useful information for your Sprint Retrospective
meeting and for mid-sprint progress checks. Mapping the statuses to your board determines
when an issue is considered completed or not Completed. If you enabled time tracking for the
board, the Sprint Report chart shows the number of days remaining in the sprint and the
amount of time spent to date.
At the bottom of the page, the Sprint Report displays tables that show completed, open, and
removed issues.
11-14
Chapter 11
Review Agile Reports and Charts
Issues Reports
Issues Reports show active and archived issues.
The Issues Report is available for issues in Kanban boards only:
1. Open the board.
2. Click Reports.
Epic Reports
Epic Reports show which of the epic's stories have been completed and which are still open
(not completed).
The Epic Report is available in Scrum boards and Kanban boards for epics:
1. Open the board.
2. Click Reports.
3. Click Epic .
4. Click the Epic Report tab.
11-15
Chapter 11
Review Agile Reports and Charts
At the bottom of the page, the Epic Report displays tables of completed, open, and removed
stories.
Velocity Reports
Velocity Reports show velocity charts for completed sprints.
Velocity Reports are available for Scrum boards only:
1. Open the board.
2. Click Reports.
3. Click Velocity .
4. From the Estimation drop-down list, select Estimated Days, Story Points, or Number of
Issues.
5. Depending on the value selected in Estimation, a Velocity Chart is displayed for
committed and completed values.
If you selected Story Points in the Estimation drop-down list, the chart will also display the
Suggested Capacity for each sprint as a dashed horizontal line.
A Velocity Report includes a Velocity chart, showing a graph of the last seven completed
sprints for the selected estimation. It also shows a table that lists completed sprints, the
number of issues in each sprint, estimated values committed, and estimated values completed.
Active sprints aren’t shown or listed.
You can use the Velocity Report to plan the amount of work that can be committed to future
sprints. Managers can see whether the team met the original estimation and can plan the effort
required for new or future sprints.
At the bottom of the page, there is a sprint table, whose columns are determined by the value
you selected in the Estimation drop-down list.
11-16
Chapter 11
Review Agile Reports and Charts
3. If you are using a Scrum board, click Sprint . If you’re using a Kanban board, click
Issues .
4. Click the Cumulative Flow Chart tab.
Scrum Boards
A Cumulative Flow Chart displays the total number of issues in each of the board's progress
states over time for the active sprint. The issues that are listed in the chart are the same issues
that the Sprint Report displays.
These events can change the number of issues in a progress state:
• An issue is added to the sprint
• An issue is removed from the sprint
• An issue’s progress state in the sprint changes because its status or resolution changes
The Configure Board page shows the progress states that correspond to the board's current
list. The chart is a stacked area chart that enables you to see the number of issues in each
progress state and the total number of issues in the sprint at any given point on the timeline.
The color for each progress state is randomly assigned. By clicking the progress state names
in the chart legend, you can show or hide them. The events table has a column for each
progress state and shows the number of issues for each progress state that’s affected by the
event.
Kanban Boards
A Cumulative Flow Chart displays the total number of issues in each of the board's progress
states over time for the Active Issues or an archive. The issues listed in the chart are the same
as those that are displayed in the Issues Report.
These events can change the number of issues in a progress state:
• An issue is added to active issues or an archive
• An issue is removed from active issues or an archive
• An issue’s progress state in active issues or an archive changes because its status or
resolution was changed
The Configure Board page shows the progress states that correspond to the board's current
list. The chart is a stacked area chart that enables you to see the number of issues in each
progress state and the total number of issues in the sprint at any given point on the timeline.
The color for each progress state is randomly assigned. By clicking the progress state names
in the chart legend, you can show or hide them. The events table has a column for each
progress state and shows the number of issues for each progress state that’s affected by the
event.
Control Charts
Control charts show progress state changes to issues on a timeline.
Control charts are available in Scrum boards and Kanban boards for both Sprint reports and
Issues reports. A Control chart is a scatter chart with each point representing an event where a
progress state changed on the timeline. This event occurs when an issue moves from one
progress state to another.
Here's how to create a Control chart
11-17
Chapter 11
Review Agile Reports and Charts
3. If you are using a Scrum board, click Sprint . If you are using a Kanban board, click
Issues .
4. Click the Control Chart tab.
The Y-axis of the chart shows how many days an issue spent in its previous progress state (the
progress state from which the issue was moved). For example, if an issue's status was
changed on Jan 10 from To Do to In Progress, the chart displays a point on Jan 10 and the Y-
axis shows the number of days the issue was in the To Do progress state.
The colors for the progress states are randomly assigned. You can show or hide the progress
state points by clicking on the names of the progress states in the chart legend. Click the chart
legend to display a line on the chart that shows the average number of days spent in a
progress state.
The events table has a column for each progress state in the board, with values representing
the number of days spent in the progress state at the time of each event. The table displays
the average number of days a little differently than the chart does.
11-18
12
Manage Binaries and Dependencies with
Maven
View, upload, and search artifacts in the project's Maven repository. When a project is created,
VB Studio creates a hosted Maven repository in the project. You can use the repository to store
binary files and dependencies. If you’re developing Maven applications, you can use the
Maven repository to store and access build artifacts.
If you see the Connect Your OCI Account message, contact your organization administrator
to connect an OCI account.
Term Description
POM file An XML file that contains configuration about how to build the application.
Usually, the file is saved as pom.xml. For more information, see https://
maven.apache.org/guides/introduction/introduction-to-the-
pom.html.
Browse view Displays and allows you to browse artifacts of the project’s Maven repository.
Upload view Allows you to upload artifacts manually to the project’s Maven repository.
Artifact Search view Enables you to search artifacts in the project’s Maven repository.
To upload and access the files of the repository programmatically, configure the POM file of
your application. You can use the project Maven repository among other projects of the
organization for local builds as well as project builds.
12-1
Chapter 12
Set Up and Populate Your settings.xml File
resolution. You can easily copy that information to the clipboard and paste it into your file. The
only thing you need to modify is the password or encrypted password.
Authentication is configured in Maven using <server> elements in the settings.xml file. Each
<repository> element specified in the settings.xml file must have a corresponding <server>
element with a matching <id> that specifies the username and password.
VB Studio generates a snippet with these elements for you to copy and paste into your local
settings.xml file.
When you're prompted for a master password, enter it and Maven will spit out a long
string, something like this:
{w5+NYEttGTAHV3FanFoel4N5uUmbcvtzRoWZHI5N97jtssbo0O/93W/XLlm0caeM}
12-2
Chapter 12
Set Up and Populate Your settings.xml File
Keep your terminal window open while you do the next step.
b. Store the master password.
Create a file called settings-security.xml in the ~/.m2 directory and copy/paste the
following block into it:
<settingsSecurity>
<master></master>
</settingsSecurity>
Copy/paste the long encrypted string that Maven spit out in the previous steps in
between the <master> tags and save the file.
c. Encrypt your password.
Open another terminal window and type:
$ mvn --encrypt-password
Enter the password you want to encrypt and Maven will return an encrypted string that
looks similar to the one it returned for the master password. Copy it and open your
settings.xml file. Replace the placeholder password between the <password> tags
with the new encrypted version.
d. Save the file.
Encrypted passwords are certainly safer to use than unencrypted ones, but they can still be
decrypted by someone that has the master password and settings security file, so you need to
keep it secure or store it separately if you expect that there's any chance that the
settings.xml file may be retrieved. Given the limitations and inherent risks of using basic
authentication, you may be better off using token-based authentication instead.
Copy and Use the Token-Based Authentication Snippet
To use token-based authentication, copy the snippet provided and paste it into your local
settings.xml file. The new settings.xml entries contain the generated token. Make sure you
copy the contents before dismissing the window, since you won't be able to see the same
token later.
To configure token-based authentication, copy the snippet containing the generated token and
the required authentication entries from VB Studio and paste it into your local settings.xml
file:
1. In the Browse view, in the Repository Configuration section, select the Maven Settings
tab.
12-3
Chapter 12
Set Up and Populate Your settings.xml File
Note:
If you are an org administrator and, after clicking Get settings.xml Entries, see
a warning message that you reached the maximum number of tokens allowed
per user, to create another token to use with Maven, you can either click Dismiss
and then delete the existing tokens by going to the Personal Access Tokens tab
on your Preferences page and using the Delete icon to delete some of your
existing tokens or you can click Open Access Token Settings to go to the
Organization page's Properties tab and change the maximum value for the
entire organization.
If you are not an org administrator and, after clicking Get settings.xml Entries,
see the message about having too many tokens, to create another token to use
with Maven, you can either click Dismiss and then delete the existing tokens by
going to the Personal Access Tokens tab on your Preferences page and using
the Delete icon to delete some of your existing tokens or you can ask one of
the org administrators shown in the dialog to change the maximum number of
tokens allowed per user.
See Set Up Token-Based Authentication for more information about creating
personal access tokens.
The token was retrieved from a previously-defined personal access token for the project.
The token has sufficient permissions to perform Maven read and write access.
12-4
Chapter 12
Set Up and Populate Your settings.xml File
Note:
If a profile is active from settings, its values override any equivalently identified
profiles in the POM file.
You can copy the provided settings to the clipboard and paste them directly into your Maven
settings.xml file, so you don't have to enter them manually:
1. In the Browse view, in the Repository Configuration section, select the Maven Settings
tab.
12-5
Chapter 12
Copy Distribution Management Snippets
3. Click the Copy icon to copy the settings with the repository details the Maven build
process uses to resolve dependencies.
4. Open your Maven settings.xml file in a text editor.
5. Paste the settings you copied directly into the file.
6. Save the file.
Action How To
Copy the Distribution 1. In the Browse view, navigate to the root directory.
Management snippet
2. In the Respository Configuration section, click the Deploy Settings tab
and expand Distribution Management.
12-6
Chapter 12
Upload an Artifact Manually
Action How To
Copy the Dependency 1. Browse the Maven repository and select the artifact.
Declaration snippet
You can also click the Artifact Search tab to search for and locate the
artifact, then click its name to open it in the Browse view.
2. In the Artifact Details section, expand Dependency Declaration.
Tip:
You can copy the Maven repository’s URL from the distribution snippet or you can
copy it from the Project Home page.
On the Project Home page, click the Repositories tab. In the Maven section, from
the project repository's URLs menu, select HTTPS or Webdav, and click Copy to
copy either the HTTPS or the WebDAV URL to the clipboard.
Use the HTTPS URL to connect to the Maven repository using the HTTP protocol.
Use the Webdav URL to connect to the repository using the Webdav protocol.
12-7
Chapter 12
Upload an Artifact Manually
• The auto-suggest list of GroupId, Version, and ArtifactId are based on Maven
indexes. If no index data is available, the auto-suggest list isn’t displayed.
• By default, the Generate POM check box is selected. The upload process deploys the
artifact and generates the default POM file, maven-metadata.xml, and associated
sha1/md5 checksum files. If maven-metadata.xml already exists, it’s updated.
If you deselect the check box, the upload process deploys the artifact to the target
deployment path based on Maven attributes. The POM file and the maven-
metadata.xml file aren’t generated.
6. Click Start Upload.
You can track the transfer status and its progress in the drop area of the Upload Artifacts
section. To cancel the upload process, click Cancel Upload. The upload process will also
be cancelled if the page is refreshed or closed.
Note that the credentials in settings.xml aren’t required to access the project Maven
repository when running a build. The build job has full access to the project Maven repository
for uploads and downloads.
1. Download and install Maven on your local computer.
You can download Maven from http://maven.apache.org/download.cgi.
2. Open MVN_HOME/conf/settings.xml in a text editor and make the following changes.
a. Specify the proxy server, if necessary.
Example:
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>PROXY_URL</host>
<port>80</port>
<nonProxyHosts>www.anything.com|*.somewhere.com</nonProxyHosts>
</proxy>
</proxies>
b. Specify a unique ID and your VB Studio user name and password to access the
project Maven repository.
Example:
<servers>
<server>
<id>remoteRepository</id>
<username>USERNAME</username>
<password>PASSWORD_IN_PLAINTEXT</password>
12-8
Chapter 12
Download an Artifact Manually
</server>
</servers>
c. Specify a unique ID, name, and URL for the project Maven repository. You can copy
the Maven repository URL from the Repositories tab of the Project Home page.
Example:
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<id>remoteRepository</id>
<name>My Remote Repository</name>
<url>dav:https://developer.us2.oraclecloud.com/……/
maven/</url>
<layout>default</layout>
</repository>
</repositories>
</profile>
</profiles>
3. Open the command-line and follow these commands to upload files to the hosted Maven
repository. Ensure that the MVN_HOME/bin path is available in the PATH variable.
a. Navigate to the directory that contains the files that you want to upload.
b. Create the pom.xml file, if it hasn’t been created already.
For more information about pom.xml, see http://maven.apache.org/guides/
introduction/introduction-to-the-pom.html.
c. Run the mvn deploy command to upload files.
Example: mvn deploy:deploy-file -DpomFile=c:\myproject\pom.xml -
Dfile=c:\myproject\myfile.jar -DrepositoryId=remoteRepository -X -
Durl=dav:https://developer.us2.oraclecloud.com/……/maven/
12-9
Chapter 12
Search Artifacts
Search Artifacts
You can go to the Maven page's Artifact Search tab and search for artifacts using the
following criteria: GroupID, ArtifactID, Version, and Classifier. You can also search by size and
date last updated, which you access by clicking Show Advanced Options.
To search for Maven artifacts:
Note:
You should always specify at least one Maven coordinate to ensure precise
search results.
4. Optionally, you can click Show Advanced Options and specify sizes and update dates to
further narrow your search results.
• Under Size, use the up and down arrows to set the minimum and/or maximum file
sizes and units (KB, MB, or GB). Set both the minimum and maximum sizes to specify
a range in which to search.
12-10
Chapter 12
Sort Maven Artifacts and Snapshots
• Under Updated, click Select Date and select the updated Since date and/or the
updated Before date.
5. Click Search.
The search result is grouped by Maven coordinates in the Artifacts tab (default setting) and by
files in the Files tab. Use the Sort Ascending and Sort Descending arrows to sort search
results by Maven coordinate, or by size or last updated date. You can optionally select and
delete searched artifacts from the Artifact Search page.
3. Use the Sort Ascending and Sort Descending arrows to sort the Name, Size, and
Last Updated columns in ascending or descending alphabetic, numeric, or oldest/newest
order.
The sort settings are remembered for the duration of the session, but revert back to the
default setting after you open a new browser window. Being able to sort this way can be
very useful when you want to analyze artifacts for retention, based on their size and how
frequently they have been used, which you can see from the last updated date. The default
setting is Last Updated, in descending order. With this default, the most recently modified
folders/files are shown at the top.
If the list still has too many items to go through, you may want to do a basic or advanced
search for a particular artifact or group of artifacts. See Search Artifacts.
12-11
Chapter 12
Maven Repository Administration
To remove an exception, on the right, click Remove . For a long list of exceptions, you can
use the Filter field and enter a search coordinates criteria to see the exceptions matching the
12-12
Chapter 12
Maven Repository Administration
criteria. If you enter an exception with duplicate coordinates, an error message Unable to
save. Coordinates already exists. Enter unique coordinates appears.
12-13
13
Access External Docker Registries
If you use an external Docker registry, such as DockerHub or Oracle Cloud Infrastructure
Registry (OCIR), you can link the registry to your project and browse its repositories and
images from Oracle Visual Builder Studio (VB Studio) .
A Docker Registry is a server-side application that stores and helps you distribute Docker
images. To find more about Docker images, see https://docs.docker.com/registry/.
13-1
Chapter 13
Browse a Linked Docker Registry
After linking a Docker registry, you can also configure a job to use it while running a build. If
you update the linked Docker registry’s details, the updated information will be passed to any
build jobs that use those details.
Action How To
View images of a Open the Docker registry repository and click the repository name. To view
repository tags of an image, click an image tag.
Download the 1. Open the Docker registry repository.
repository's image
manifest 2. In Image Tags, click the image tag.
3. On the right side, in the Info section of Tag Details, click Download .
4. Save the file to your computer.
Copy pull and push You use the docker pull command to get images of a repository. To upload
commands images to the repository, you use the docker push command. You can use
these commands to configure a build job that connects to the Docker registry.
To copy the push and pull commands:
1. Open the Docker registry repository.
2. In Image Tags, click the image tag.
3. On the right side, in the Docker Command section, pull and push
commands are displayed.
In the Pull tab, click Copy to copy the docker pull commands to
the clipboard.
In the Push tab, click Copy to copy the docker push commands to
the clipboard.
13-2
14
Use the Project's NPM Registry
Whenever a project is created, VB Studio provisions a private Node Package Manager (NPM)
registry for the project.
You can use the built-in private NPM registry in VB Studio to do these things:
• Download, publish, and audit private Javascript packages using Node.js/NPM command
line tools.
• Configure a build job in a Node.js project to download a JS package from and/or publish a
JS package to the project's NPM registry, and audit the JavaScript packages using
Node.js/NPM command line tools.
• Browse and search for the available NPM package in the project's NPM registry.
When you install a package using the npm install command, NPM automatically attempts to
install any dependencies required by the package. Your project's private VB Studio NPM
registry will be checked first and, if a dependency isn't found there, the request is automatically
forwarded to the default remote NPM registry. You just upload your project-specific package(s),
and let NPM take care of resolving any dependencies at build time.
This feature is provided for customers who have developed their own Node.js packages that
they want to use in their projects at their company but they don't want to publish to npmjs.org.
This gives them a way to share those private Node.js packages with the rest of their company.
The project's private NPM registry is a registry of your own internal packages.
Any package, scoped or unscoped, which has been published to the VB Studio NPM registry
can be downloaded. You can configure the NPM client to download these packages or you
could also use the NPM page's browse feature to download the packages. If a required
package isn't found in the VB Studio NPM registry, it'll be downloaded from the external NPM
registry. The package found in the remote registry won't be pulled down to the VB Studio NPM
registry automatically, but nothing prevents you from doing so manually.
You can access the NPM page by clicking NPM on the left navigator or by clicking the
Project Registry link under the NPM category in the Repositories panel on the Project Home
page.
14-1
Chapter 14
Configure Your Connection to the Project's NPM Registry
Your password isn't stored. It's only used to generate a base64-encoded string for the NPM
configuration snippet.
2. Copy the contents from the NPM Configuration snippet and manually paste it into your
local .npmrc file:
• On a Windows system, the .npmrc file is in %USERHOME/.npmrc.
• On a UNIX system, the file location is ~/.npmrc.
Note:
Don't change the always-auth property value to "true" in your local .npmrc file.
The default value for the property is "false" and must not be changed. If you set
the always-auth property to "true", the NPM client sends an Authorization
header to the remote proxied public NPM Registry.
The contents of the Default tab configure your connection to the project's private NPM
registry to push both scoped (any scoped package) and unscoped packages. The contents
of the Scoped tab configure the connection to the project's private NPM registry for a
particular scoped value only.
3. Save your local .npmrc file.
Note:
The npm login command won't generate a token for an NPM client if your username
contains non-URL-safe special characters, such as the @ character. This limitation
means that your username cannot be an email address if you want to use the npm
login command for token generation (and use the generated token to perform NPM
operations such as npm install, npm publish, and npm search).
To configure token-based authentication, you can simply use the Get .npmrc entries
directly token generation option that doesn't have this limitation. VB Studio
generates the necessary snippet to copy and paste into your .npmrc file so you can
use the access token with your current username. The alternative is having your
organization administrator generate an IDCS user (has no non-safe characters in the
username) for you.
14-2
Chapter 14
Configure Your Connection to the Project's NPM Registry
a. Click to copy the generated .npmrc entries in the Default tab (to push both scoped
and unscoped packages) or the Scoped tab (to push a particular scoped package
only).
b. Paste the content you just copied into your local .npmrc file and save it.
c. Click Dismiss to close the dialog.
14-3
Chapter 14
Configure Your Connection to the Project's NPM Registry
Note:
If you are an org administrator and, after clicking Get .npmrc Entries, see a
warning message that you reached the maximum number of tokens allowed per
user, to create another token to use with NPM, you can either click Dismiss and
then delete the existing tokens by going to the Personal Access Tokens tab on
your Preferences page and using the Delete icon to delete some of your
existing tokens or you can click Open Access Token Settings to go to the
Organization page's Properties tab and change the maximum value for the
entire organization.
If you are not an org administrator and, after clicking Get .npmrc Entries, see
the message about having too many tokens, to create another token to use with
NPM, you can either click Dismiss and then delete the existing tokens by going
to the Personal Access Tokens tab on your Preferences page and using the
Delete icon to delete some of your existing tokens or you can ask one of the
org administrators shown in the dialog to change the maximum number of tokens
allowed per user.
See Set Up Token-Based Authentication for more information about creating
personal access tokens.
4. After selecting Use npm login manually, the npm Configuration section in the Browse
tab displays this information.
a. Click to copy the snippet in the Default tab (to push both scoped and unscoped
packages) or the Scoped tab (to push a particular scoped package only).
b. Paste the contents you just copied into your local .npmrc file and save it:
• On a Windows system, the .npmrc file is in %USERHOME/.npmrc.
• On a UNIX system, the file location is ~/.npmrc.
c. Click to copy the provided npm login command (for all scoped and unscoped
packages) or npm login --scope=@scope<scope> command (for scoped packages
only).
d. Paste the command you just copied to the command line and run it. Modify the scope,
as needed and supply your VB Studio login credentials when you're prompted for
them.
14-4
Chapter 14
Create and Manage a Project's Remote NPM Registry Connection
VB Studio generates a personal access token and, once the NPM client receives the
response that contains the generated token, it adds that to your .npmrc file. This
process generates a non-expirable token.
You can examine the details for the token in the Personal Access Tokens tab under
the user Preferences. Select the token and view the information in the Basic Details
and Scopes tabs.
The token remains valid until the you change your password. You can also invalidate a single
token by logging out on a machine where you're logged in with that token.
Action How To
Add a remote NPM
registry connection 1. In the left navigator, click Project Administration .
2. Click Builds.
3. Click the NPM Connection tab.
4. Click Add NPM Connection.
5. In the Create NPM Connection dialog box, in Connection Name, enter a
unique name.
6. In Username and Password, enter the credentials of a user who has
access to the remote NPM registry.
7. In Registry URL, enter the Registry URL for the default remote NPM
registry, for example https://registry.npmjs.org.
8. Click Create.
14-5
Chapter 14
Configure a Job to Connect to the NPM Registry
Action How To
Delete the connection
1. In the left navigator, click Project Administration .
2. Click Builds.
3. Click the NPM Connection tab.
Use the NPM Command Line with the Project's NPM Registry
You can use the following NPM commands either on the NPM command line or as a command
or series of commands in a UNIX shell build step:
14-6
Chapter 14
Use the NPM Command Line with the Project's NPM Registry
Command Description
npm install Installs a package, and any packages that it
depends on, in the project's NPM registry.
There are several ways to use the npm install
command, so refer to npm-install to learn about the
different variations. When this command is used
with the project's NPM registry, packages are
always searched for in the project's NPM registry
first.
npm publish Publishes a package to the project's NPM registry,
so it can be installed by name. By default, the
standard npm publish command publishes
packages to the public registry. The default
behavior can be overridden by specifying a different
default registry or using a scoped package name.
See npm-publish.
npm unpublish Removes a package version from the project's
NPM registry, deleting its entry and removing the
tarball. If you want to encourage users to upgrade,
consider using the npm deprecate command
instead.
See npm-unpublish.
npm audit Generates an audit report that summarizes all
known security vulnerabilities in your NPM
packages and dependencies, provides the
necessary NPM commands and recommendations
that will fix these vulnerabilities once they are
applied, and, when used with the npm audit fix
command, will try to apply these recommendations
automatically, wherever possible.
See npm-audit and Check for Security
Vulnerabilities in your Project's NPM Packages and
Dependencies.
npm deprecate Updates the project's NPM registry entry for a
specific version or a range of versions of a package
and provides a deprecation warning to everyone
who attempts to install the deprecated package.
You must be the package owner to use this
command.
The format of the command is:
See npm-deprecate.
npm dist-tag Adds, removes, and enumerates distribution tags
on a package.
See npm-dist-tag.
14-7
Chapter 14
Publish JS Packages to VB Studio's NPM Registry
Command Description
npm search Searches the project's NPM registry for packages
that match the search terms. The command
searches through package metadata for all files in
the project's NPM registry. Note that the search API
performs local searches only (searches the private
VB Studio NPM registry only). It doesn't search and
return results from the remote proxied public NPM
registry.
See npm-search.
npm login Allows you to log in to NPM, creating/modifying
entries in the ~/.npmrc file for authentication.
Note that at least one of the two ways to log in
must be configured, that is, you must either provide
the required fields (username, password and email)
using environment variables or pass them as
command line arguments, or both.
See npm-cli-login.
npm logout Logs out of the registry.
If you're logged into a registry that supports token-
based authentication, this command directs the
server to end this token's session, invalidating the
token everywhere you're using it, not just for the
current environment.
If you're logged into a registry that uses basic
authentication (username and password), this
command clears the credentials in your user
configuration. In this case, it only affects the current
environment.
If --scope is provided, the command finds the
credentials for the registry that's connected to that
scope, if one was set.
See npm-logout.
14-8
Chapter 14
Publish JS Packages to VB Studio's NPM Registry
1. After you click Publish to NPM, the tarball files are scanned for viruses.
If any tarball files are determined to be unsafe, the Antivirus scanning of attachment
failed error message is displayed.
2. If the tarball files are determined to be safe, the tarball content is examined, looking for the
package.json file, which is parsed if found.
If the package.json file isn't found in the tarball file, or if the internal package.json file
cannot be parsed, if the option to Use Selected Tarball(s)'s internal package file was
14-9
Chapter 14
Publish JS Packages to VB Studio's NPM Registry
selected for the package layout option, the Unable to find or parse correctly the
package archive (package.json) within the tarball content error message will be
displayed.
3. The project's NPM registry is checked to see whether it already has same version of
package.
If it does, the Package already exists and cannot be overwritten error message will be
displayed.
4. If the Generate or update metadata files option was selected, the NPM registry is
checked for an existing package metadata file (or files).
If package metadata is already available, that metadata is retrieved and the package
metadata is updated with the new version. Otherwise, a new package metadata is created.
Creating and updating this metadata is based on the tarball file’s internal package file and
the user-specifed value for the custom layout option.
The new version of the metadata file is created, based on the tarball file’s internal package
file and the user-specifed value for the custom layout option.
5. The tarball is put into the project’s NPM registry.
6. The aggregated package metadata is put into the project’s NPM registry and the
aggregated package metadata is uploaded.
7. The version metadata is added to the project’s NPM registry.
The status(es) of successful, partial, and failed upload(s) are displayed.
2. In the Configure view, select the Git tab, and configure Git. Select the repository and
the branch or tag.
3. In the Before Build tab, click Add Before Build Action and select NPM Registry
Connection. Select Use project's NPM registry. Notice that the Registry URL is
displayed, but is grayed out.
4. In the Steps tab, add a Unix Shell step with a script, similar to this:
14-10
Chapter 14
Check for Security Vulnerabilities in your Project's NPM Packages and Dependencies
Tip:
You may want to configure an additional Unix Shell build step that audits the
package's dependencies, sets a minimum audit threshold level for failure, and
fixes vulnerabilities that were discovered as a result of the audit. See Check for
Security Vulnerabilities in your Project's NPM Packages and Dependencies for
more information about implementing these options.
14-11
Chapter 14
Check for Security Vulnerabilities in your Project's NPM Packages and Dependencies
It's also worthwhile to note that by default npm audit automatically runs whenever you install a
package with npm install but, if you prefer, you can turn off npm audit on package
installation:
• To turn off npm audit when installing a single package, use the --no-audit flag:
• To turn off npm audit when installing all packages, set the audit setting to false in your
user and global npmrc config files:
Examples
Scan your project for vulnerabilities and just show the details, without fixing anything:
$ npm audit
Do a dry run to get an idea of what audit fix will do, and also output install information in JSON
format:
The dry-run option indicates that you don't want NPM to make any changes and that it should
only report what it would have done. This can be passed into any of the commands that modify
your local installation, such as install, update, uninstall, pack, and publish. The json option
indicates whether or not to output JSON data, rather than the normal output.
14-12
Chapter 14
Browse and Search Packages in Your Project's NPM Registry
Scan your project for vulnerabilities and automatically install any compatible updates to
vulnerable dependencies:
Fail an audit only if the results include a vulnerability with a level of moderate or higher:
The audit-level option indicates the minimum level of vulnerability ("info", "low", "moderate",
"high", "critical", or "none") for npm audit to exit with a non-zero exit code.
The sort settings will be remembered for the duration of the session, but will revert back to the
default setting after a new browser window is opened. Being able to sort this way can be very
useful when you want to analyze artifacts for retention, based on their size and how frequently
they have been used, which you can see from the last updated date.
You can select a file and see details in the panel on the right. The panel can display up to three
categories of details, including Info at the top and Dependencies at the bottom, with tabs for
Default, Optional, Dev, and Peer views. If there are too many dependencies to list in the
display, click the Download , then open and examine the file.
If you uploaded the package by executing a build job or a pipeline, a third category, Build
Details, will be displayed between the other two.
Here's an example showing build details for a package that was uploaded by a user-initiated
job:
14-13
Chapter 14
Browse and Search Packages in Your Project's NPM Registry
Note:
You can only view and examine build details for published Node.js packages in the
NPM page if you select a build executor template that contains one of the following
Node.js versions from the software catalog:
• Node.js 20 (Version 20.8.0)
• Node.js 18 (Version 18.18.1)
• Node.js 17 (Version 17.9.1)
• Node.js 16 (Version 16.17.0)
• Node.js 14 (Version 14.20.0)
Here's an example showing build details for a package that was uploaded by a pipeline:
14-14
Chapter 14
Browse and Search Packages in Your Project's NPM Registry
If the selected package has been deprecated, its details will be displayed under Deprecation
Details, in the Package Details panel. These details could include a message provided by the
author when the package is being deprecated, such as "Version no longer supported because
it used outdated code".
You can use the page's basic search capability by entering a search string, then using All or
Files to filter the results.
You can use Package Search to use the Name, Keywords, Version, or Author fields to
search for a package in the registry. The asterisk (*) can be used as a wildcard character. To
improve performance, specify your search criteria as precisely as possible.
To narrow your search results, select Show Advanced Options, then click Search. These are
the options you can specify:
• Size: Specify the Min and/or Max package sizes to search. The sizes could range from KB
to GB.
• Updated: Use Since and/or Before by entering the date in mm/dd/yy format or by
selecting it using the calendar.
Search results can be returned under two views, packages or files. Use the Sort Ascending
and Sort Descending arrows to sort search results by NPM identifier, or by size or last
updated date.
To delete a file or package that was returned by the search, select the checkbox next to the
package or file you want to delete, then click Delete. When you're asked to confirm, press Yes,
Delete All.
14-15
15
Send Notifications to External Software Using
Webhooks
A project owner can create and configure a webhook to send notifications to remote services
and applications about Oracle Visual Builder Studio (VB Studio) events such as a Git push, an
issue update, a merge request update, or a build completion.
When you create a webhook, you specify a webhook provider. When an event occurs and the
webhook triggers, the webhook provider processes the event, sets the properties used to
generate the HTTP request, and dispatches the HTTP request to the target service.
Slack
Slack is cloud-based team collaboration software. Using a Slack Webhook, you can configure
VB Studio to send events and activities notifications to a Slack channel. To find more about
Slack, see https://slack.com/.
To send notification to a Slack channel, get its incoming webhook URL. Then, create a VB
Studio webhook and add the incoming webhook URL to the webhook.
15-1
Chapter 15
Slack
15-2
Chapter 15
Slack
5. In Integration Settings, from the Post to Channel drop-down list, select the channel. In
Webhook URL, click Copy URL.
6. Scroll down to the bottom of the page and click Save Settings.
15-3
Chapter 15
Slack
Note:
The Glob Pattern is only available for Repository/Branch filtering with Git Push
and Merge Request event types. The filter for Build event types doesn't currently
support using the Glob pattern.
Let's say you want to add event notifications from a build job that is triggered by an SCM
commit to a selected repository (configured in the job configuration page's Git tab). To do
this, you'd select Build then, under Build Job Filter at the bottom of the page, click + Add
15-4
Chapter 15
PagerDuty
Filter and select the job whose event messages will be streamed to the channel you
specified in step 6.
Since the build job was triggered by an SCM commit, the Slack message will include
information such as commit message(s), the author's name, the duration, and other
details. This information helps identify what was being processed and who was responsible
for it.
If you select Git Push or Merge Request, click + Add Filter in Repository/Branch Filter,
and use the menu to select the repository and branch to track.
8. Click Create.
9. To test the webhook, click Test.
10. Click Done when you're satisfied that it works.
When VB Studio events happen, notifications are sent to the Slack channel.
PagerDuty
PagerDuty is an incident management platform that enables you to send notifications via
email, push, SMS, and phone. Using the PagerDuty webhook, you can send notifications to
your PagerDuty service about events in VB Studio. When the PagerDuty service receives
notifications from VB Studio, it can redirect those notifications via email, push, SMS, and
phone. To find more about PagerDuty, see https://www.pagerduty.com/.
To send notifications to PagerDuty, set up your PagerDuty account to receive notifications and
create a VB Studio webhook.
15-5
Chapter 15
PagerDuty
5. From the New API Key dialog box, copy the API Key value and keep it safe.
You can't view or copy the key after closing the dialog box.
15-6
Chapter 15
PagerDuty
6. Click Close.
7. If not configured, set up services (such as applications or components) you wish to open
incidents against. From the Configuration menu, select Services.
8. Click New Service.
9. Fill in the details and click Add Service.
10. If not configured, add users who'd receive notifications. From the Configuration menu,
select Users.
11. Click Add Users.
12. In the Invite your team dialog box, add the details of users you want to invite, and click
Add.
15-7
Chapter 15
Jenkins
Jenkins
Jenkins is an open-source continuous integration software used to build and test your software
applications. Using the various Jenkins webhooks, you can integrate your Jenkins with VB
Studio to run builds. Jenkins must be available on the public Internet to accept webhook
notifications.
You can use these webhooks to integrate Jenkins with VB Studio:
15-8
Chapter 15
Jenkins
15-9
Chapter 15
Jenkins
Configure the Jenkins Job to Use the VB Studio Git Repository and Enable SCM
Polling
Configure the job to use the VB Studio Git repository and enable SCM polling.
1. Log on to Jenkins.
2. Create or open a job.
3. From the links on the left side of the page, click Configure.
4. Click the Source Code Management tab.
5. Select Git.
6. In Repository URL, enter the VB Studio project's Git repository URL.
Remember the URL’s protocol as you’d need to specify it when you create the webhook.
15-10
Chapter 15
Jenkins
You can copy the URL from the Clone menu of the VB Studio Git page.
After entering the URL, you might see a Failed to connect to repository … error
message. It appears because you haven't provided the VB Studio access credentials to
Jenkins.
a. Next to the Credentials list, click Add and then select Jenkins.
15-11
Chapter 15
Jenkins
b. In the Jenkins Credentials Provider dialog box, enter the VB Studio username and
password in Username and Password. Leave other fields with their default values.
c. Click Add.
The error message should disappear. If you still see the error message, configure the
proxy settings of Jenkins. See the Jenkins documentation to see how to do that..
7. Click the Build Triggers tab.
8. Select the Poll SCM check box.
15-12
Chapter 15
Jenkins
15-13
Chapter 15
Jenkins
If ... Do this:
Jenkins allows anonymous user to trigger a build 1. Create an authentication token in the Jenkins
job.
2. Configure the webhook to connect to the
Jenkins job using the authentication token.
Jenkins allows only authenticated users to trigger a 1. Get an authenticated user's API Access token.
build
2. Create an authentication token in the Jenkins
job.
3. Configure the webhook to connect to the
Jenkins job using the API Access and the
authentication token.
You want to trigger the job without an authenticated 1. Install the Build Authorization Token Root
user's credentials but anonymous access on Plugin on Jenkins if it has not already been
Jenkins is disabled or lacks read permissions installed.
or
2. Create an authentication token in the Jenkins
Jenkins uses a build token root to trigger builds
job.
3. Configure the webhook to connect to Jenkins
job using the authentication token.
Security is completely disabled on Jenkins. Configure the webhook to connect to the Jenkins
job. No Jenkins configuration is required.
15-14
Chapter 15
Jenkins
15-15
Chapter 15
Jenkins
3. In the API Token section, add a new token or use the legacy token.
To view the legacy token, click Show Legacy API Token and then copy the token. Keep
the legacy token value someplace safe, because you'll need to enter it in the VB Studio
webhook.
To create a token, click Add new token and immediately copy the token value. You won't
be able to see the token value later and you'll need to generate another token. Keep the
new token value someplace safe because you'll need to enter it in the VB Studio webhook.
4. Click Save.
6. In Authentication Token, enter a unique string as a token. You can enter any string value.
Example: my_auth_token
Make sure that the authentication token isn't used in any other job.
7. Continue to configure the job.
8. When you're finished, click Save.
15-16
Chapter 15
Jenkins
15-17
Chapter 15
Jenkins
15-18
Chapter 15
Jenkins
No Security NA
15-19
Chapter 15
Jenkins
If Parametrized Build is enabled, you can add build parameters using Add
Parameter. For each parameter, set the name that must match the parameter name
defined on the build server side.
f. Verify the URL displayed in Target URL.
Use cURL with HTTPS GET and the Target URL to check your configuration:
curl -X GET '<Target_URL>’
11. Click Done.
If ... Do this:
Jenkins allows an anonymous user to trigger a 1. Create an authentication token in the Jenkins
build on Jenkins job.
2. Use the authentication token to configure the
webhook to connect to the Jenkins job.
Jenkins allows only authenticated users to trigger a 1. Get an authenticated user's API Access token.
build
2. Create an authentication token in the Jenkins
job.
3. Use the API Access and the authentication
token to configure the webhook to connect to
the Jenkins job.
Anonymous access on Jenkins is disabled or lacks 1. Install the Build Authorization Token Root
read permissions and you want to trigger the job Plugin on Jenkins if it has not already been
without an authenticated user's credentials installed.
or
2. Create an authentication token in the Jenkins
Jenkins uses a build token root to trigger builds
job.
3. Configure the webhook to connect to Jenkins
job using the authentication token.
Security is completely disabled on Jenkins Configure the webhook to connect to Jenkins job.
No Jenkins configuration is required.
15-20
Chapter 15
Jenkins
15-21
Chapter 15
Jenkins
15-22
Chapter 15
Jenkins
3. In the API Token section, add a new token or use the legacy token.
To view the legacy token, click Show Legacy API Token and then copy the token. Keep
the legacy token value someplace safe, because you'll need to enter it in the VB Studio
webhook.
To create a token, click Add new token and immediately copy the token value. You won't
be able to see the token value later and you'll need to generate another token. Keep the
new token value someplace safe because you'll need to enter it in the VB Studio webhook.
4. Click Save.
Configure the Jenkins Job to Set an Authentication Token and Accept Build
Parameters
To trigger the Jenkins job when it receives a notification from VB Studio, configure it to accept
the Git repository’s branch name as a parameter and set an authentication token.
1. Log on to Jenkins.
2. Create or open the job.
3. On the left side of the page, click Configure.
4. Click the Job Notifications tab.
5. Select the This project is parameterized check box.
6. From Add Parameter, select String Parameter.
7. In Name, enter GIT_REPO_BRANCH.
8. In Default Value, enter the review branch name. Example: patchset_1
15-23
Chapter 15
Jenkins
11. Enter a unique string as a token. You can enter any string value. Example: my_auth_token
Make sure that the authentication token isn't used in any other job.
12. Continue to configure the job.
15-24
Chapter 15
Jenkins
5. Click Save .
When a commit is pushed to the merge request's review branch, the webhook triggers a build
of the specified job on the remote Jenkins server and a notification is posted to the project's
Recent Activity Feed. If the build succeeds, it'll be added to the Approve section of the Review
Status list in the Merge Request page. If the build fails, it'll be added to the Reject section of
the Review Status list.
15-25
Chapter 15
Jenkins
15-26
Chapter 15
Jenkins
15-27
Chapter 15
Hudson
6. In the URL field, paste the URL that you copied from the VB Studio webhook. Leave the
default values in the other fields.
7. Click Save.
Hudson
Hudson is an open-source extensible continuous integration software used to build and test
your software applications. Using webhooks, you can integrate your Hudson server with VB
15-28
Chapter 15
Hudson
Studio to run builds. Hudson must be available on the public Internet to accept webhook
notifications.
You can use these webhooks to integrate Hudson with VB Studio:
15-29
Chapter 15
Hudson
15-30
Chapter 15
Hudson
Configure the Hudson Job to Use VB Studio Git Repository and Enable SCM Polling
Configure the job to access the VB Studio Git repository and enable SCM polling.
1. Log in to Hudson.
2. Create or open a job.
3. From the links on the left side of the page, click Configure.
4. In Source Code Management, select Git.
5. In URL of repository, enter the VB Studio project's Git repository URL.
Remember the URL’s protocol as you’d need to specify it when you create the webhook.
You can copy the URL from the Clone menu of the VB Studio Git page.
15-31
Chapter 15
Hudson
Configure a Webhook in VB Studio to Trigger a Hudson Job When the Git Repository
Gets Updated
After configuring the Hudson job, create the VB Studio webhook to trigger the job when the Git
repository is updated.
15-32
Chapter 15
Hudson
In Repository, select All Repositories to trigger all Hudson jobs that uses a Git repository
of the project.
10. Click Done.
If ... Do this:
Hudson allows anonymous user to trigger a build 1. Create an authentication token in the Hudson
job.
2. Configure the webhook to connect to the
Hudson job using the authentication token.
Hudson allows only authenticated users to trigger a 1. Get an authenticated user's credentials.
build
2. Create an authentication token in the Hudson
job.
3. Configure the webhook to connect to the
Hudson job using the credentials and the
authentication token.
Security is completely disabled on Hudson Configure the webhook to connect to Hudson job.
No Hudson configuration required.
5. In Authentication Token, enter a unique string as a token. You can enter any string value.
Example: my_auth_token
15-33
Chapter 15
Hudson
Make sure that the authentication token name is not used in any other job.
6. Click Save.
15-34
Chapter 15
GitHub Apps
API Token Access Under Authentication, enter the authenticated user's details.
• In User ID, enter the username of the Jenkins user.
• In API Token, enter the password of the user.
• In Remote Build Token, enter the Hudson authentication token.
No Security NA
10. In Trigger Event: Git Push, specify the Git repository and the branch or tag.
Select the Parameterized Build check box if the build job on target server accepts
parameters. The target URL differs for parameterized and non-parameterized builds.
If the Parameterized Build is enabled, you can add build parameters using Add
Parameter. For each parameter, set the name that must match the parameter name
defined on build server side.
11. Verify the URL displayed in Target URL.
You can use the URL to check your configuration (for example using curl -X GET
'<Target_URL>’).
12. Click Done.
GitHub Apps
If you're using apps that accept incoming webhook connections from GitHub, you can use the
GitHub-compatible webhook to send VB Studio event notifications to those apps. The payload
15-35
Chapter 15
Send Event Notifications to Any Application
will be sent in a format similar to that used by GitHub, so you don't need to make any changes
to your GitHub apps.
See https://developer.github.com/webhooks/ to learn more about GitHub webhooks.
If you selected the Select specific events option, in Events, select the check boxes of
events that trigger the webhook.
11. Click Done.
When you're finished, use the left navigator to switch to another page.
15-36
Chapter 15
Send Event Notifications to Any Application
Field Description
apiVersion Version of the API that changes when the payload format of the request
changes
messageId Unique identifier of the message
timestamp Timestamp of the message when it was generated
testEvent Set to true if this event is generated by the Test button
projectId Unique identifier of the project
events List of events delivered by the message
Each event delivered by the message follows a common structure. These are its fields:
Field Description
eventId Type of the event (ISSUE/PUSH/BUILD/REVIEW/ACTIVITY)
projectId Unique identifier of the project
timestamp Timestamp of the event
data Data specific to the type of the event
The structure of data of each event type is described in the following sections.
ISSUE Event
The ISSUE event contains these fields:
Field Description
type Type of the activity (CREATED - issue is created, COMMENTED - comment
added, UPDATED - fields changed)
date Timestamp of the activity
description Description of the change
task Description of the issue after the change
id Issue ID
15-37
Chapter 15
Send Event Notifications to Any Application
Field Description
version Change version
url URL of the issue
title Title of the issue
type Type of the issue (Defect, Feature, or Task)
resolution Resolution of the issue. The value is null if the issue isn’t resolved,
otherwise, it’s set to one of the issue resolution values such as FIXED,
DUPLICATE, and WORKSFORME.
reporter User who reported the issue
asignee User to whom the issue is assigned
comment Content of the added comment, available if the activity type is COMMENTED
fieldUpdates List of changed fields, available if the activity type is UPDATED
name Field name
oldValue Value before the change
newValue Value after the change
{
"apiVersion": "1.0",
"messageId": "04abc282-a44e-4c23-ba53-15b519d30066",
"projectId": "qa-dev_example-project",
"testEvent": false,
"timestamp": 1417810876408,
"events": [
{
"eventId": "ISSUE",
"projectId": "example-project",
"timestamp": 1417810876,
"data": {
"activities": [
{
"type": "CREATED",
"date": 1417810875820,
"description": "",
"author": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
},
"issue": {
"id": 2,
"resolution": null,
"title": "Test Issue",
"type": "Feature",
"url": "http://test-server/#projects/example-
project/task/2",
"version": "1417810875834",
15-38
Chapter 15
Send Event Notifications to Any Application
"reporter": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
}
}
}
]
}
}
]
}
{
"apiVersion": "1.0",
"messageId": "ccce183e-097d-4668-a07b-cf762108716e",
"projectId": "qa-dev_example-project",
"testEvent": false,
"timestamp": 1417811058243,
"events": [
{
"eventId": "ISSUE",
"projectId": "example-project",
"timestamp": 1417811058
"data": {
"activities": [
{
"type": "UPDATED"
"date": 1417811057698,
"description": "Assign to alex.admin\nset Resolution
to FIXED\nset Status to RESOLVED\n",
"author": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
},
"issue": {
"id": 2,
"resolution": "FIXED",
"title": "Test Issue",
"type": "Feature",
"url": "http://test-server/#projects/example-
project/task/2",
"version": "1417811057698",
"asignee": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
},
"reporter": {
15-39
Chapter 15
Send Event Notifications to Any Application
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
}
},
"fieldUpdates": [
{
"name": "assigned_to",
"newValue": "alex.admin",
"oldValue": ""
},
{
"name": "resolution",
"newValue": "FIXED",
"oldValue": ""
},
{
"name": "bug_status",
"newValue": "RESOLVED",
"oldValue": "UNCONFIRMED"
}
]
},
{
"type": "COMMENTED"
"date": 1417811057929,
"description": "Feature is implemented",
"author": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
},
"comment": {
"author": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
},
"date": 1417811057929,
"text": "Feature is implemented",
"type": "UNKNOWN"
},
"task": {
"id": 2,
"resolution": "FIXED",
"title": "Test Issue",
"type": "Feature",
"url": "http://test-server/#projects/qa-
dev_example-project/task/2",
"version": "1417811057698",
"asignee": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
15-40
Chapter 15
Send Event Notifications to Any Application
"loginName": "alex.admin",
"realName": "Alex Alex Admin"
},
"reporter": {
"gravatarHash":
"8940829abebbc5d8d84e37af7161fd31",
"loginName": "alex.admin",
"realName": "Alex Admin"
}
}
}
]
}
}
]
}
PUSH Event
The PUSH event contains these fields:
Field Description
refName Updated references
commits Commits of the Push event
sha Commit identifier
comment Comment in the commit
author Author of the commit
date Timestamp of the commit
parents List of commit parent identifiers
repository Name of the repository to which the commit was pushed
{
"apiVersion": "1.0",
"messageId": "c3378be6-6be5-4191-9b20-1fb5d429bfce",
"projectId": "example-project",
"testEvent": false,
"timestamp": 1417810424512,
"events": [
{
"eventId": "GIT_PUSH",
"projectId": "example-project",
"timestamp": 1417810424,
"data": {
"refName": "refs/heads/main",
"commits": [
{
"sha": "32e03bc46a3a42eeab5dd25144a90c5b4f0b2e11",
"repository": "example-project.git",
"date": 1417810387000,
"comment": "file1.txt deleted, file3.txt created\n",
15-41
Chapter 15
Send Event Notifications to Any Application
"author": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Admin",
"username": "alex.admin"
},
"parents": [
"1106e8c81cb49e71024e9017235f89dc3983d4ee"
]
},
{
"sha": "1106e8c81cb49e71024e9017235f89dc3983d4ee",
"repository": "example-project.git",
"date": 1417810290000,
"comment": "file2.txt updated\n",
"author": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Admin",
"username": "alex.admin"
},
"parents": [
"8dab56fb6ba6dd0fc0d0aa8c7ce4f01d77fa0835"
]
}
]
}
}
]
}
BUILD Event
The BUILD event contains these fields:
Field Description
jobName Name of the job
timestamp Build timestamp
number Build number
url Build URL
result Build result (SUCCESS/UNSTABLE/FAILURE/NOT_BUILT/ABORTED)
duration Build duration
fileName Name of the artifact
relativePath Path relative to the job workspace
url URL of the artifact
{
"apiVersion":"1.0",
"messageId":"4a253425-4598-4838-a4b5-aac30d0b9710",
15-42
Chapter 15
Send Event Notifications to Any Application
"timestamp":1417795613257,
"testEvent":true,
"projectId":"test-project",
"events":[
{
"eventId":"BUILD",
"projectId":"test-project",
"timestamp":1417795613256,
"data":{
"jobName":"example-job",
"details":{
"timestamp":1417795590256,
"number":16,
"url":"http://server/test-dev/s2/test-project/hudson/job/test-
project.example-job/16/",
"result":"SUCCESS",
"duration":36905,
"artifacts":[
{
"fileName":"sample-1.0-SNAPSHOT.jar",
"relativePath":"sample-project/target/sample-1.0-
SNAPSHOT.jar",
"url":"http://server/test-dev/s2/test-project/hudson/job/
test-project.example-job/16/artifact/sample-project/target/sample-1.0-
SNAPSHOT.jar"
}
]
}
}
}
]
}
REVIEW Event
The REVIEW event represents changes in merge requests and contains these fields:
Field Description
review Description of the merge request
id Unique ID of the merge request
title Title of the merge request
created Timestamp of the merge request creation
modified Timestamp of the merge request last modification
reporter Profile of the user who created the merge request
repository Name of the Git repository
reviewBranch Name of the review branch
targetBranch Name of the target branch
user Profile of the user who performed the action
15-43
Chapter 15
Send Event Notifications to Any Application
Field Description
action Merge request action
These are the merge request actions:
• CREATED: Merge request is created
• COMMIT: New commits are pushed to the review branch
• MERGED: Review branch is merged into the target branch
The MERGED action is created if the review branch is merged via the
Merge button in the web user interface. If the review branch is merged
from a Git client (such as the Git command line interface), no action is
generated.
• REVIEWED: Reviewer approves or rejects a merge request
• COMMENTED: A comment is added to the merge request
• CLOSED: Merge request is closed
commits List of commits added to the merge request
The commits field is generated for the COMMIT action. These fields are also
generated for the commits action:
• author: Author of the commit
• message: Commit message
• sha: SHA-1 checksum hash of the commit
text Text of the comment
The text field is generated for the COMMENTED action.
comment Comment of the rejected or approved review action
The comment field is generated for the REVIEWED action.
result Result of the merge (FAST_FORWARD, FAST_FORWARD_SQUASHED,
ALREADY_UP_TO_DATE, FAILED, MERGED, MERGED_SQUASHED,
MERGED_SQUASHED_NOT_COMMITTED, CONFLICTING, ABORTED,
MERGED_NOT_COMMITTED, NOT_SUPPORTED, CHECKOUT_CONFLICT)
The result field is generated for the MERGED action.
status Status of the merge request (APPROVED, REJECTED, COMPLETED, CANCELLED)
The status field is generated for the REVIEWED and the CLOSED action.
{
"apiVersion": "1.0",
"events": [
{
"data": {
"action": "CREATED",
"review": {
"created": 1431944319181,
"id": 6,
"modified": 1431944319635,
"reporter": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
},
"repository": "example-project.git",
15-44
Chapter 15
Send Event Notifications to Any Application
"reviewBranch": "bug_branch",
"targetBranch": "main",
"title": "Bug Fix"
},
"user": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
}
},
"eventId": "REVIEW",
"projectId": "example-project",
"timestamp": 1431944327
}
],
"messageId": "08758261-e4e7-4c8f-b9fe-7b74f715803f",
"projectId": "example-project",
"testEvent": false,
"timestamp": 1431944329923
}
{
"apiVersion": "1.0",
"events": [
{
"data": {
"action": "COMMIT",
"commits": [
{
"author": "alex.admin",
"message": "fix version #3\n",
"sha": "8fd1d2a53a181aa7015e7535b6f64295c432eca7"
},
{
"author": "alex.admin",
"message": "fix version #2\n",
"sha": "ff2bdf91d0fb6fb664315879ec38acc0931beeb6"
}
],
"review": {
"created": 1431944319181,
"id": 6,
"modified": 1431944340209,
"reporter": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
},
"repository": "example-project.git",
"reviewBranch": "bug_branch",
"targetBranch": "main",
"title": "Bug Fix"
},
15-45
Chapter 15
Send Event Notifications to Any Application
"user": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
}
},
"eventId": "REVIEW",
"projectId": "example-project",
"timestamp": 1431944353
}
],
"messageId": "5de98d08-49cd-4a19-86b5-d89757f75a1d",
"projectId": "example-project",
"testEvent": false,
"timestamp": 1431944355646
}
{
"apiVersion": "1.0",
"events": [
{
"data": {
"user": {
"email": "[email protected]",
"firstName": "Clara",
"lastName": "Coder",
"username": "clara"
},
"review": {
"created": 1436521285722,
"id": 23,
"modified": 1438246154916,
"reporter": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Admin",
"username": "alex"
},
"repository": "example-project.git",
"reviewBranch": "bug_branch",
"targetBranch": "main",
"title": "Some Review"
},
"action": "REVIEWED",
"status": "REJECTED",
"comment": "rejected the request because ...",
},
"eventId": "REVIEW",
"projectId": "example-project",
"timestamp": 1438246163
}
],
"messageId": "f0a75815-3470-4dc4-be82-975935152ed3",
"projectId": "example-project",
"testEvent": false,
15-46
Chapter 15
Send Event Notifications to Any Application
"timestamp": 1438246165924
}
{
"apiVersion": "1.0",
"events": [
{
"data": {
"action": "COMMENTED",
"review": {
"created": 1431944319181,
"id": 6,
"modified": 1431944478701,
"reporter": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
},
"repository": "example-project.git",
"reviewBranch": "bug_branch",
"targetBranch": "main",
"title": "Bug Fix"
},
"text": "General comment",
"user": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
}
},
"eventId": "REVIEW",
"projectId": "example-project",
"timestamp": 1431945965
}
],
"messageId": "d2a36692-dae6-44d4-a112-7a615b524cc3",
"projectId": "example-project",
"testEvent": false,
"timestamp": 1431945967166
}
{
"apiVersion": "1.0",
"events": [
{
"data": {
"action": "MERGED",
"result": "FAST_FORWARD",
"review": {
"created": 1431944319181,
"id": 6,
"modified": 1431944478701,
"reporter": {
"email": "[email protected]",
15-47
Chapter 15
Send Event Notifications to Any Application
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
},
"repository": "example-project.git",
"reviewBranch": "bug_branch",
"targetBranch": "main",
"title": "Bug Fix"
},
"user": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
}
},
"eventId": "REVIEW",
"projectId": "example-project",
"timestamp": 1431945438
}
],
"messageId": "b06d5581-d38a-4972-9c80-dc1455547776",
"projectId": "example-project",
"testEvent": false,
"timestamp": 1431945440287
}
{
"apiVersion": "1.0",
"events": [
{
"data": {
"action": "CLOSED",
"review": {
"created": 1431944319181,
"id": 6,
"modified": 1431945453967,
"reporter": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
},
"repository": "example-project.git",
"reviewBranch": "bug_branch",
"targetBranch": "main",
"title": "Bug Fix"
},
"status": "COMPLETED",
"user": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
}
},
15-48
Chapter 15
Send Event Notifications to Any Application
"eventId": "REVIEW",
"projectId": "example-project",
"timestamp": 1431945459
}
],
"messageId": "b434f6d2-b5c7-4c0a-bab2-3e6614025865",
"projectId": "example-project",
"testEvent": false,
"timestamp": 1431945453967
}
ACTIVITY Event
The ACTIVITY event contains these fields:
Field Description
author Profile of the user whose action produced the activity
The value is null for system activities.
name Name of the activity
properties Description of the activity, or the object whose fields depends on the name
field.
These activities are supported:
• BUILD: Triggered when a build in the integrated Hudson server ends.
• DEPLOYMENT: Triggered when the application is deployed, undeployed,
started, or stopped using Deploy page in the web user interface.
• MEMBER: Triggered when a user is added, removed, or role is updated.
• REVIEW: Triggered when a merge request is created, closed, or updated.
• RSS: Triggered when a new article is acquired from a registered feed.
• SCM_COMMIT: Triggered when a commit is pushed to a project repository.
• SCM_REPO: Triggered when a project repository is added or removed.
• TASK: Triggered when an issue is created or updated.
• WIKI: Triggered when a wiki page is created or updated.
{
"apiVersion": "1.0",
"events": [
{
"data": {
"author": {
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Alex Admin",
"username": "alex.admin"
},
"name": "WIKI",
"properties": {
"page": "New Page Title",
"type": "CREATED"
}
},
15-49
Chapter 15
Send Event Notifications to Any Application
"eventId": "ACTIVITY",
"projectId": "example-project",
"timestamp": 1432035029
}
],
"messageId": "45066d85-5a5c-4647-9a6c-43fc8e99481a",
"projectId": "qa-dev_test-rss",
"testEvent": false,
"timestamp": 1432035031418
}
15-50
16
Share and Use Code Snippets
Snippets host reusable code in files that can be used in the project and shared with other
project members. A snippet could include a small block of reusable source code or text that
could be incorporated into larger modules.
Content in snippet files doesn't have to be code, but it must be useful. This content could be
notes that you want to share with project members, or something you want to keep private,
such as a reminder to yourself. If a snippet is shared, project members can copy or download
the snippet files and then use them in their own applications.
A snippet can contain several files. When you create a snippet, you can add only one file but,
after creating the snippet, you can add additional files.
VB Studio sets these defaults for the maximum size limits for snippets:
• Maximum object size: 1MB
• Maximum repository size: 1GB
Action How To
Create a snippet
1. In the left navigator, click Snippets .
2. Click + Create Snippet.
3. On the Snippet Details page of the New Snippet wizard, enter the snippet
name and description.
4. In Visibility, select Private if you don’t want to share the snippet’s files
and keep them for personal use. Select Shared to share the snippet’s
files with project members.
5. To edit the snippet and add more files immediately after creating the
snippet, select Edit snippet when finished.
6. Click Next.
7. In the Snippet Content page of the New Snippet wizard, enter content for
the default file of the snippet.
If you don’t enter content, an empty file snippet1.txt will be added to
the snippet.
8. Click Finish.
16-1
Chapter 16
Add and Manage Files in a Snippet
Action How To
Create a snippet from a You can create a snippet from a file that’s open in the code editor.
selection
1. In the open file, select the text.
2. Right-click and select New Snippet from Selection.
3. On the Snippet Details page of the New Snippet wizard, enter the snippet
name and description.
4. In Visibility, select Private if you don’t want to share it and keep for
personal use. Select Shared to share the snippet with project members.
5. To edit the snippet and add more files immediately after creating the
snippet, select Edit snippet when finished.
6. In the Snippet Content page of the New Snippet wizard, enter content for
the default file of the snippet.
If you don’t enter content, an empty file is added to the snippet.
7. Click Finish.
Share or stop sharing a After you create a snippet, you may want to share it with your team members,
snippet or you may want to stop sharing it if it is already shared. You can set the share
status for any snippet that you own.
To share a snippet, in the My Snippets view of the Snippets page, click
Share . The icon changes to Shared . To stop sharing a snippet, click
Shared . The icon changes to Private .
Edit a snippet’s title You can edit the title of a snippet that you own. On the Snippets page, click
the snippet name, and then click Edit .
Delete a snippet You can delete a snippet that you own. On the Snippets page, click the
snippet name, and then click Delete. In the Delete Snippet dialog box, click
Yes to confirm.
Action How To
Add a file 1. Open the snippet.
2. Scroll down and after the snippet’s files, click Add File.
3. In the header, enter the file name with extension. In the editor, enter the
file’s content.
The editor supports various code editing features such as autocomplete,
indentation, syntax highlighting, code folding, and bracket matching.
4. After adding the content, scroll up and at the top of the page, click Save.
To save the updates and stay on the Edit Snippet page, select Save To
save the updates and exit, select Save and Exit.
16-2
Chapter 16
Copy a Snippet File's Contents
Action How To
Edit a file 1. Open the snippet.
2. If necessary, rename the file and configure its properties.
3. In the editor, update the file contents.
4. At the top of the page, click Save.
To save the updates and stay on the Edit Snippet page, select Save To
save the updates and exit, select Save and Exit.
16-3
Chapter 16
Add a Comment to a Snippet
Action How To
Copy from the Snippets 1. Open the snippet.
page
2. For the file whose contents you want to copy, click Copy
.
In some browsers, you must press Ctrl+C to copy the content to the
Insert from the context 1. In the code editor, right-click, and select Insert from Snippet.
menu
2. In the Select Snippet page of the Insert From Snippet wizard, select the
snippet, and click Next.
3. In the Select File page, click the file name whose contents you want to
insert.
4. Click Finish.
16-4
Chapter 16
Use Git with Snippets
2. On the Snippet Details page, at the top, click Clone, and then click Copy to copy the
HTTP or the SSH URL of the snippet repository.
3. Use Git commands to clone the repository, update files, and push the commits to the
project.
If the directory into which you want to clone the repository isn't empty, you'll need to create
a new subdirectory and clone the repository into it. You can only perform a cloning
operation into an empty directory.
16-5
17
Co-Author Wikis
You can use Wikis to collaborate on your projects’ documentation.
VB Studio supports these Wiki markup languages:
• Confluence
See http://www.atlassian.com/software/confluence/.
• Textile
See http://textilewiki.com.
• Markdown
See http://daringfireball.net/projects/markdown/.
Project users can use the project's Wiki markup language to format content in wiki pages and
in issue and merge request comments.
• An Edit button is available on the SCM README.md page to facilitate quick direct edits.
17-1
Chapter 17
Working with Markup Languages in VB Studio
• A markup toolbar provides common formatting actions so that you don't have to remember
or search for the markup language syntax you need. The toolbar is available in the Wiki,
SCM, and MR pages.
• After making an edit, you can go to the Preview tab to look at it. Your edit is displayed
immediately. You don't have to scroll down through the page you were editing to find your
change. In the Preview tab, it should auto scroll to the line or section being edited.
• The header bar is sticky, so when you go from the Edit tab to the Preview tab to look at
your changes, the header bar stays at the top of the page as well.
• Headers have link accessors, which are shown when you hover over the header.
When you click the header, the browser page's URL is updated. You can copy the URL
and embed it in your pages, to provide a direct link to the header.
• Code in markup is shown with syntax coloring when the code language is specified in code
blocks.
17-2
Chapter 17
Working with Markup Languages in VB Studio
```java
public class Main {
public static void main(String[] args) {
if (20 > 18) {
System.out.println("20 is greater than 18"); // obviously
}
}
}
```
{code:language=java}
public class Main {
public static void main(String[] args) {
if (20 > 18) {
System.out.println("20 is greater than 18"); // obviously
}
}
}
{code}
bc[java].
public class Main {
public static void main(String[] args) {
if (20 > 18) {
System.out.println("20 is greater than 18"); // obviously
}
}
}
Markup Output
*strong* strong
17-3
Chapter 17
Working with Markup Languages in VB Studio
Markup Output
__italic__ italic
**bold** bold
??citation?? citation
-deleted text-
+inserted text+
^superscript^ superscript
~subscript~ subscript
%span% span
@code@ code
Block Modifiers
Markup Output
hn. Heading
bq. Block quote
fnn. Footnote
p. Paragraph (optional)
bc. Block code
pre. Pre-formatted
# Numeric list
* Bulleted list
Links
"title":http://www.example.com
!images/logo.png!:http://www.example.com
Images
!images/logo.png!
Punctuation
Markup Output
"quotes" “quotes”
'quotes' ‘quotes’
it's it’s
em -- dash — symbol (emdash)
en - dash – symbol (endash)
2x4 2×4
17-4
Chapter 17
Working with Markup Languages in VB Studio
Markup Output
foo(tm) foo™
foo(r) foo®
Lists
• Bulleted Lists
* one
** one.one
** one.two
* two
• Numeric Lists
# one
## one.one
## one.two
# two
Tables
17-5
Chapter 17
Working with Markup Languages in VB Studio
Attributes
Markup Example
(class) h1(foo).
(#id) h1(foo).
{style} h1{color:red}.
[language] h1[en].
For example:
Footnotes
reference[1]
fn1. footnote text
Extended Blocks
bc..
bq..
pre..
Acronyms
CSS (Cascading Style Sheets) generates CSS.
Generated Content
Markup Output
_emphasis_ emphasis
*strong* strong
??citation?? citation
-deleted text-
17-6
Chapter 17
Working with Markup Languages in VB Studio
Markup Output
+inserted text+
^superscript^ superscript
~subscript~ subscript
{{monospace}} monospace
Block Modifiers
Markup Description
hn. Heading (where n is some digit, for example h1)
bq. Block quote (single paragraph)
{quote} Block quote (multiple paragraphs)
{code} Block code
{note:title=Note} A simple note
{warning:title=Caution} A warning note
{info:title=Useful Information} Informational note
{tip:title=Tip} A help tip
{noformat} Pre-formatted block
# Numeric list
* Bulleted list
Links
[Title|http://www.example.com]
[Title|http://www.example.com|tip]
Anchors
Markup Description
{anchor:anchorname} Creates anchor 'anchorname'
[Title|#anchorname] Links to anchor 'anchorname'
Tables
Text Breaks
Markup Description
(empty line) Produces a new paragraph
---- horizontal rule
--- — symbol (emdash)
17-7
Chapter 17
Working with Markup Languages in VB Studio
Markup Description
-- – symbol (endash)
Markup Output
*italic* or _italic_ italic (em element)
**bold** or __bold__ bold (strong element)
~~deleted text~~
`code` code
Tables
Markup Output
#, ##, ###, and so on Heading (levels 1 through 6)
=== (equals signs) under title Level 1 heading
--- (hyphens) under title Level 2 heading
> Block quote (before the quoted line or lines; long
lines will wrap)
``` before and after code block, or indented 4 Block code
spaces or a tab
Lists
Markup Output
1. (any digit) Numeric list
17-8
Chapter 17
Working with Markup Languages in VB Studio
Markup Output
*, -, + Bulleted list
Blank lines between list items cause the list item text to be surrounded with paragraph
elements.
To nest list items, indent the nested items two spaces.
To place paragraphs within list items, put a blank line above, and indent the text 4 spaces or
one tab.
Links
Inline links consist of bracketed link text immediately followed by text in parenthesis. For
example:
[Link text](http://www.example.com)
[Link text with title](http://www.example.com "Example.com's home page")
Reference links consist of bracketed link text followed by a reference (a number or other text in
brackets). The reference is defined elsewhere in the document. For example:
[Link text][1]
[Link text][any text]
...
[1]: http://www.example.com
[any text]: http://www.example.com "Example.com's home page"
Images
Like links, images can be inline or reference. Inline images look like this (titles are allowed):


![link text][id]
...
[id]: images/logo.png "My logo"
17-9
Chapter 17
Create and Manage Wiki Pages
• Add phrase or block modifiers when quoting text or adding code snippets
• Customize the editor to improve efficiency during content creation. You can:
– Toggle line numbers on and off
– Change line wrapping
– Show (or hide) the content editor's minimap
When using the toolbar to add phrase or block modifiers, note that the and actions
behave differently depending on what's selected.
For example:
• If a single line or text phrase is selected when clicking the action, a phrase modifier is
wrapped around the selected text. In Confluence markup, for example, you'd see:
{{something selected}}
• If multiple lines are selected, a block modifier is wrapped around the selected text. The
Confluence markup would be:
{code}
multiline selected
text
{code}
{code:language=java}
{code}
In the left navigator, click Wiki to display the top-level Wiki page.
17-10
Chapter 17
Create and Manage Wiki Pages
From there, you can create a Wiki Home page, as well as create and manage your project's
wiki pages and drafts. Any project user can create a wiki page. For a page that you didn't
create, depending on the edit and delete access set by the creator of the wiki page, you may or
may not be able to edit or delete it. However, if you’re a project owner, you can always do that.
If a collection of wiki pages already exists, but has no Wiki Home page, you can click + Home
Page to create one. Before creating a new Wiki Home page for the collection, notice that the
Refresh, Edit, and Delete buttons are not available.
17-11
Chapter 17
Create and Manage Wiki Pages
There is no button for creating a child page, since all pages under the Wiki Home page are
child pages. That's why you just see the + Page button, to the right.
Here's what you need to know about creating and editing wiki pages:
Action How To
Create a wiki home page 1. On the Wiki page, click + Home Page.
2. The path field, where you see /, denotes the path to the Wiki Home page
you want to create.
The default path cannot be modified.
3. In the Page Text tab, enter the content.
Use the project’s wiki markup language to format the contents. To open
the markup language’s cheat sheet, click the reference link above the text
area.
You can also use the markup toolbar for quick formatting. The toolbar
provides frequently used actions so you can quickly and easily format
text, or add elements like links, images, lists, tables, and more.
The toolbar also provides editor options so you can turn off line numbers,
change line wrapping, and show (or hide) the wiki editor's minimap.
4. Click Publish to publish the new Wiki Home page.
If you click Close, you are prompted to retain a draft of the page you
were working on or to delete the draft and discard your work.
If you click Discard Draft, the draft you were working on won't be saved.
17-12
Chapter 17
Create and Manage Wiki Pages
Action How To
Create a wiki page 1. On the Wiki page, click + Create Page.
2. In the field where you see the Enter path text, enter the full path to the
page you want to create.
The path should consist of URL-safe characters, without any spaces or
periods. Don't add a trailing slash at the end. There's no need to create
folders. Just enter the full path you want to create and folders will be
created automatically.
3. In the Page Text tab, enter the content.
Use the project’s wiki markup language or the markup toolbar to format
the contents. To open the markup language’s cheat sheet, click the
reference link above the text area.
4. Click Save to publish the new page.
Click Close and you'll be allowed to retain a draft of the page you were
working on or delete the draft and discard your work.
Open a wiki page To open a wiki page, click the wiki page title on the Wiki Home page or in the
tree view.
Tip:
If a wiki page has child wiki pages, you can expand the parent (and any child
pages that have child wiki pages) in the Wiki Home page or in the tree view by
clicking the icon to the left of the wiki page title and select the child wiki
page name to open it.
Tip:
Click the Pages link in the wiki tree to navigate
back to the Wiki Home page.
You can collapse any expanded wiki page by clicking the icon to the left of
its page title, in the page or tree view.
17-13
Chapter 17
Create and Manage Wiki Pages
Action How To
Edit a wiki page To edit a page, click Edit. If a saved draft for the page exists, select Resume
Editing to display the draft with the last saved changes or select New Edit to
start editing the published page. Use the wiki’s markup language or the
markup toolbar to format the contents.
Tip:
To open the markup language’s cheat sheet,
click the reference link above the text area.
You can also click the separator to the right of the wiki tree view
icon in the page's breadcrumbs.
Select Wiki Draft and the Wiki Draft page will open.
2. Locate the draft of the wiki page you want to edit and click Edit under
Actions.
17-14
Chapter 17
Add Comments to a Wiki Page
Action How To
Publish a draft of a wiki 1. On the Wiki Drafts page, locate the draft of the wiki page you want to
page publish.
To delete a draft of a wiki page, from the Wiki Drafts page, click Delete
under Actions . In the Delete Wiki Page dialog box, select I understand
that my wiki draft will be permanently deleted, and click Delete draft.
Restore a wiki page 1. Click the deleted wiki name in the recent activity feed or any other wiki
page where it was referenced.
2. Click Restore.
The wiki page, along with all comments and attachments, will be restored to
its original path.
To restore a parent wiki page, open it and click Restore.
Action How To
Add a generic comment 1. Open the wiki page.
2. Scroll down to the Comments section. In the Write tab, enter your
comment, and click Comment.
You can use the project’s wiki markup language to format your comment.
17-15
Chapter 17
Watch a Wiki Page
Action How To
Add a block comment A block comment is a comment that you add to a content block, such as a
paragraph or a table.
1. Open the wiki page.
2. Move the mouse pointer to the right edge of the block, and click Add
Comment .
If you see a number on the right edge of the block, it indicates the
number of existing comments of the block. Click the number to view the
comments and then click Leave a comment.
3. In the popup, add your comment, and click Post.
When you add a block comment, a watch is set on the wiki page and you
automatically get email notifications of future comments and updates.
To hide the comment, click the comment number or Hide . To edit or delete
the comment, click the number and then click Edit or Delete.
If you edit, format, or move a content block, its comments move automatically.
If you remove a content block, its comments are deleted too and can’t be
restored. If you merge a block with another, the comments of the source block
will be hidden, but the comments of the target block remain visible. When you
the split the source block from the target block and move it back its original
position, the hidden comments reappear.
Action How To
Watch a wiki page 1. Open the wiki page.
2. Click Watch Wiki.
3. In the menu, select the Watch Page check box.
The button’s label changes to Watching. To stop watching the page, click
Watching, and deselect the Watch Page check box.
Watch all pages of the On the Wiki page, click Watch Wiki.
project The button label changes to Watching. To stop watching all pages, click
Watching.
17-16
Chapter 17
Wiki Administration
Action How To
View the history of a wiki 1. Open the wiki page.
page, including all of its
versions 2. Click the Page History tab.
View the contents of a In the Page History tab, in the version number row, click View.
previous version
Compare two versions In the Page History tab, select the check boxes of versions, and click
Compare selected versions.
Restore the wiki to a In the Page History tab, in the version number row, click Restore this
version version. In the Revert Wiki Page dialog box, select the I understand that my
wiki page will be updated to this revisions' content check box and click
Yes.
Restoring a page creates a new version of the page with the contents from
the version you want to restore. You can’t restore a wiki page if you don’t have
its edit access.
Wiki Administration
Project owners and wiki page creators can make some administrative updates for wikis. These
updates include changing edit and delete access rights for a wiki page and changing a
project’s wiki markup language.
Note:
Only an organization administrator can change an organization’s default wiki markup
language (see Set the Organization’s Default Wiki Markup Language).
17-17
Chapter 17
Wiki Administration
5. Click Save.
17-18
Part IV
Troubleshooting
The information in this part should help you troubleshoot problems you encounter when using
Oracle Visual Builder Studio,
Topics:
• Troubleshooting VB Studio Issues
Note:
If you're looking for troubleshooting topics for building extensions in the Designer, see
Troubleshooting and FAQs; when building responsive apps in the Designer, see
Troubleshooting.
18
Troubleshooting VB Studio Issues
Look up how to troubleshoot and resolve issues you may encounter as you use Visual Builder
Studio.
18-1