Bynet Expo Workshop Workshop Guide
Module 1

Onboarding

Set up your Script.it account and GitLab environment before we start.

S
Script.it Onboarding
AI orchestrator, the agent that connects everything
1
Sign up to Script.it
Go to script.it, create a free account with Google or email. No card required.
↗ Open script.it
Script.it signup
2
Apply your workshop coupon, get 350 credits
After signing in, apply the workshop coupon code to receive 350 credits for the session.
Tip: Keep this tab open, you'll use Script.it throughout all modules.
GitLab Onboarding
Redeem your access code and open your workshop group
1
Sign up or log in to GitLab.com
Create a free account if you don't have one. Use your work email for best results.
↗ Open GitLab.com
2
Go to the GitLab Learn Labs Portal and click Redeem Access Code
↗ cloud.gitlabdap.com
GitLab Learn Labs Portal
3
Enter the workshop access code
Type the code and click Continue.
P9Z4P7R6K
Enter access code
4
Sign in with GitLab
Click Sign In with GitLab to authenticate and activate your environment.
Sign in with GitLab
5
Redemption Successful, open your workspace
Your account is now enabled with GitLab Duo AI. Click Open GitLab Workspace.
Redemption successful
6
Copy your GitLab group URL and paste it below
You're inside your private workshop group. Copy the full URL from the address bar, it looks like the example. Paste it here to auto-fill all workshop prompts.
Example https://gitlab.com/gitlab-learn-labs/events/session-p9z4p7r6k/group-r4l6y8w
↓ Paste your group URL above, all prompts will update automatically
Suffixnot set
Artifactory repobynet-docker-local
App / imagejuice-shop-???
GitLab group workspace

Module 2

Integrations

Connect Script.it to GitLab, JFrog, and Cloud Foundry. Three integrations, five minutes.

GitLab Integration
Connect via OAuth through Pipedream
1
Open Settings → Integrations in Script.it
Click the ⚙️ gear icon (bottom-left). Go to the Integrations tab. Under Add Integration, search for gitlab and click +.
Script.it Integrations tab
2
Click Connect in the GitLab dialog
A dialog appears. Click Connect to proceed through Pipedream.
Connect GitLab dialog
3
Continue through Pipedream
Script.it uses Pipedream to handle OAuth securely. Click Continue.
Pipedream screen
4
Set Base API URL
Enter gitlab.com and click Continue.
Base API URL
5
Authorize Pipedream on GitLab
Review the permissions then click Authorize Pipedream App. GitLab status will change to Active, you're connected.
GitLab OAuth authorize
🐸
JFrog Artifactory Integration
Pre-provisioned environment · Bearer token auth
ⓘ Environment Info
Platform URLbynetexpo.jfrog.io
Auth methodReference Token (Bearer)
1
Run this prompt in Script.it
Script.it figures out how to create the integration, it checks the catalog, creates a custom JFrog integration with Bearer auth, and then asks you to connect your token.
Script.it Prompt
Configure JFrog integration using reference access token as auth method. Artifactory URL: https://bynetexpo.jfrog.io Token will be provided by the user. Verify the connection is working.
2
Paste the token when Script.it asks
Script.it creates the integration and shows a JFrog Artifactory connection card. Click + to add your token, paste it into the Bearer field, then click Connect.
Script.it JFrog token prompt
Access Token, copy & paste into Script.it
eyJ2ZXIiOiIyIiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYiLCJraWQiOiJDQTVWU294bmIybU1OY3pXSU9DYWxQWmtMcVBfdzQ3MUhSRmo3Q1dXal9NIn0.eyJzdWIiOiJqZmFjQDAxa3JoazV6cndkMnQzMGt0M3dmbmIwNnJhL3VzZXJzL2J5bmV0Iiwic2NwIjoiYXBwbGllZC1wZXJtaXNzaW9ucy9hZG1pbiIsImF1ZCI6IipAKiIsImlzcyI6ImpmZmVAMDFrcmhrNXpyd2QydDMwa3Qzd2ZuYjA2cmEiLCJleHAiOjE3ODIyMTY0MzcsImlhdCI6MTc4MTYxMTYzNywianRpIjoiOGIxMTJmNDItMWVlMC00ZjE0LTg2MWItMzE2YmRhZGI2YWM2IiwidGlkIjoiYTB2emVxeDJuZWFuOSJ9.eEjd4phECiqNie4u0gNP0gucJzEjDMjfw7m8KmQNFkqOZ-cTOpnvy-PuLSzw9UCzz7Ku_7Qkt1K1Ti9fT9waJZTLIK3KKy0TBEfchyJO_VIW85W2TTih9GpryDfBHvJpQB8c_8gkLLjQU834kkmt51Okc8HgZ4ALQbarDR-7_SbXfIf-PiRD_YQ_XFv69VsRBhDeFfMiMpB9YHqaslWYEnQk9GblNTcGIgWdcgc_dEzqCmefgi9ioip3Ellj0An8qm7ihbW9e1mxo2FcsvWyS4fX8Xgxf5WO2wY6LVDISKZH1-5CsjEV9oQ9a8y1sZtigK2A_EtS91KO9-j1w9wVfg
☁️
Cloud Foundry Integration
Pre-provisioned Tanzu environment · Script.it uses CF CLI
ⓘ Environment Info
API URLapi.sys.tas-ndc.kuhn-labs.com
Usernamebynet
Passwordexpo
MethodCF CLI (installed by Script.it)
1
Run this prompt in Script.it
Script.it figures out how to use the CF CLI, it downloads it, authenticates to Tanzu, and confirms your org and space. No manual installation needed.
Script.it Prompt
Configure Cloud Foundry integration using the CF CLI. Download and install CF CLI v8.18.3 from: https://packages.cloudfoundry.org/stable?release=linux64-binary&version=8.18.3&source=github-rel Then login using: - API URL: https://api.sys.tas-ndc.kuhn-labs.com - Username: bynet - Password: expo Run cf login and confirm successful authentication. Report the org and space.

Module 3

Project Creation

Script.it will fork the OWASP Juice Shop from GitHub and push it into your GitLab group, no manual steps needed.

About OWASP Juice Shop
The intentionally vulnerable app we'll secure
OWASP Juice Shop is an open-source web application that is intentionally insecure, built for security training and demos. It includes vulnerabilities from the OWASP Top 10: SQL injection, XSS, broken auth, and more. We'll run it through a full DevSecOps pipeline: SAST scanning, container build, Xray SCA, and deployment to Cloud Foundry, then use GitLab Duo AI to fix the findings.
Node.js / Angular Docker OWASP Top 10 github.com/juice-shop/juice-shop
1
Run this prompt in Script.it
Script.it clones Juice Shop from GitHub, creates a project in your GitLab group, and pushes the master branch, excluding .gitlab-ci.yml so no pipeline runs yet.
Script.it Prompt
Fork the OWASP Juice Shop project from GitHub and push it to my GitLab group. Source: https://github.com/juice-shop/juice-shop Destination: ⚠️ Paste your GitLab group URL in Module 1 above Steps to perform: 1. Clone the Juice Shop repository from GitHub 2. Create a new project called "juice-shop" inside my GitLab group 3. Push the master branch to the new GitLab project , exclude .gitlab-ci.yml from root (remove before push, no CI should trigger) 4. Confirm the project is accessible at the GitLab URL

Module 4

Build the CI/CD Pipeline

Script.it generates the full CI/CD pipeline file connecting all your tools. Click any stage below to learn what it does.

🔍
SAST
GitLab
🐳
BUILD
Kaniko
📦
PUBLISH
Artifactory
🛡️
XRAY
JFrog
🚀
DEPLOY
Cloud Foundry
ⓘ Your unique values (auto-filled from Module 1)
Image tag$CI_PIPELINE_IID
Artifactory repobynet-docker-local
App namejuice-shop-???
Not set? Scroll up to Module 1 and paste your GitLab group URL.
1
Copy the prompt and run it in Script.it
Script.it generates the complete CI/CD pipeline file, creates the Artifactory Docker repo, commits everything to your project, and returns the Cloud Foundry route when deployment is complete.
Script.it Prompt
Build a GitLab CI/CD pipeline for the Juice Shop project. GitLab project URL: ⚠️ Paste your GitLab group URL in Module 1 above Pipeline stages (in this exact order): stages: [sast, build, publish, xray_scan, deploy] ◆ sast Include GitLab SAST template (Security/SAST.gitlab-ci.yml). The template defaults all jobs to stage: test - override explicitly: sast: stage: sast semgrep-sast: stage: sast nodejs-scan-sast: stage: sast allow_failure: false # expected to fail - do NOT suggest or apply any fixes to the findings ◆ build Build Docker image using Kaniko (rootless, no Docker daemon). Use image: gcr.io/kaniko-project/executor:debug Write Artifactory registry credentials as base64-encoded auth entry in /kaniko/.docker/config.json ◆ publish Verify image exists in Artifactory (HTTP 200 on manifest.json path). Set artifact properties via the Artifactory storage API. ◆ xray_scan image: ubuntu:22.04 # Do NOT use releases-docker.jfrog.io/jfrog/jfrog-cli-v2:latest # That image ships the `jfrog` binary, not `jf` - the scan will fail before_script: apt-get update -qq && apt-get install -qq -y curl git unzip nodejs npm # nodejs + npm are required - jf audit builds the npm dependency tree # git and unzip are required for project detection and package extraction curl -fL https://install-cli.jfrog.io | sh script: jf config add artifactory --url=https://bynetexpo.jfrog.io --access-token=$ARTIFACTORY_TOKEN --interactive=false jf audit --sca --format=json --output-dir=. artifacts: when: always paths: - xray-audit.json allow_failure: true # Juice Shop is intentionally vulnerable needs: [publish] ◆ deploy Deploy to Tanzu Cloud Foundry using cf push Use alpine:3.19 as the runner image. Install CF CLI v8 from exact URL: https://github.com/cloudfoundry/cli/releases/download/v8.18.3/cf8-cli_8.18.3_linux_x86-64.tgz (note: v8 assets use cf8-cli prefix - extract to /tmp/, chmod +x cf and cf8, move both to /usr/local/bin/) Pass Artifactory token as CF_DOCKER_PASSWORD for private registry pull. allow_failure: false # deployment must succeed JFrog Artifactory: URL: https://bynetexpo.jfrog.io Docker repo: bynet-docker-local # main shared repo, do not create a new one Push image to: bynetexpo.jfrog.io/bynet-docker-local/juice-shop-??? (set URL in Module 1):$CI_PIPELINE_IID Auth: use pre-configured jfrog-artifactory integration (Bearer token) Naming: APP_NAME = *juice-shop-??? (set URL in Module 1)* IMAGE_NAME = *juice-shop-??? (set URL in Module 1)* IMAGE_TAG = $CI_PIPELINE_IID CF deployment: API: https://api.sys.tas-ndc.kuhn-labs.com # api.sys not apps.sys Org: solution-architects Space: bynet-expo-workshop Creds: bynet / expo CF manifest: --- applications: - name: juice-shop-??? (set URL in Module 1) memory: 256M instances: 1 docker: image: bynetexpo.jfrog.io/bynet-docker-local/juice-shop-???:$CI_PIPELINE_IID username: ((CF_DOCKER_USERNAME)) env: APP_ENV: workshop CI/CD variables to set on the project: ARTIFACTORY_USER = bynet ARTIFACTORY_TOKEN = <reference access token> # masked CF_USERNAME = bynet CF_PASSWORD = expo # cannot be masked - too short for GitLab 8-char minimum After successful run, report the full Cloud Foundry route URL.
2
Monitor the pipeline
Track progress in GitLab while Script.it monitors the pipeline automatically. If any job fails it reads the log, figures out why, and pushes a fix automatically.
②  Open your GitLab pipeline
Use the link below to go to your project's CI/CD → Pipelines page. Click the Running badge to open the pipeline detail view and watch the five stages progress.
Pipeline detail — five stages lighting up one by one
GitLab pipeline detail stages
Switch back to Script.it while you wait — it tracks every job. If a stage fails, Script.it reads the error log and automatically commits a fix, then watches the retry.
3
All stages passed — open the live app
When Script.it finishes it prints a summary with all stages green and the Cloud Foundry route URL. Click that URL to open your Juice Shop running live on Tanzu.
③  Check Script.it and open the app
Script.it — all stages passed and deployed app URL
Script.it all stages passed
OWASP Juice Shop — live on Tanzu Cloud Foundry
OWASP Juice Shop running live

Module 5

Remediate with GitLab Duo

Use GitLab Duo AI to identify and fix the critical SAST vulnerability that the pipeline found in Juice Shop.

1
Set GitLab Learn Labs as your default Duo namespace
Before using GitLab Duo, you need to point it at the right namespace so it has access to the group's AI features.
1  ·  Open GitLab User Preferences
Open the link below, then scroll down to the Behavior section until you find Default GitLab Duo namespace.
2  ·  Select GitLab Learn Labs
In the Default GitLab Duo namespace dropdown, select GitLab Learn Labs.
Default GitLab Duo namespace setting
3  ·  Save the changes
Scroll to the bottom of the Preferences page and click Save changes.
Save changes button in GitLab Preferences
2
Open the Security Vulnerability Dashboard
Navigate to your project's security dashboard to see what SAST found in the pipeline. You'll see 33 critical vulnerabilities — click the number to drill in.
1  ·  Open the Security Dashboard
Use the link below to go directly to your project's Security Dashboard.
2  ·  Click the Critical count
Click the bold number under Critical to filter the vulnerability list to critical findings only.
Security dashboard critical count
3  ·  Select the Deserialization vulnerability
In the filtered list, find the 4th row: Deserialization of Untrusted Data (rsn/rsnUtil.ts:135). Click it to open the vulnerability detail page.
Vulnerability list - Deserialization of Untrusted Data
3
Explain the vulnerability with GitLab Duo
Use GitLab Duo AI to understand what the SAST scanner found and why it is dangerous.
1  ·  AI vulnerability management → Explain with AI
On the vulnerability page, hover the blue AI vulnerability management button and click Explain with AI. GitLab Duo opens a chat panel and explains the vulnerability with insights about potential solutions.
AI vulnerability management - Explain with AI
2  ·  Read the explanation
Duo explains that yaml.load() can execute arbitrary code from untrusted YAML (CWE-502 / OWASP A8:2017). Read the analysis before moving to the fix.
GitLab Duo Chat vulnerability explanation
4
Ask Duo to remediate the vulnerability
Send the prompt below in the Duo Chat panel. Duo will prepare a fix and ask you to approve the commit before pushing to master.
Duo Chat Prompt
Apply the suggested remediation for this vulnerability and push the fix to the master branch.
5
Review and approve the fix
Duo prepares the commit and asks for your approval before pushing. Review the change and confirm.
1  ·  Review the commit
Duo shows a pending commit to the master branch with 1 file change. Click > Read commit message and > Expand file changes to review what Duo will push.
2  ·  Click Approve
Click the Approve button to confirm the commit. Duo will push the fix to master and the vulnerability will be resolved.
Duo commit approval - click Approve
Workshop Complete

You built a full software delivery lifecycle

You used Script.it AI agent to generate and deploy the complete CI/CD pipeline across GitLab, JFrog Artifactory and Xray, and Tanzu Cloud Foundry, going from source code to a live secured application in minutes. Then you used GitLab Duo AI agent to explain a critical SAST vulnerability and remediate it with a single prompt, pushing the fix directly to the branch.

BYNET
Bynet Data Communications
Bynet Data Communications
Professional Services & Innovation
Certificate of Completion

Full Software Lifecycle &
Vulnerability Management
with AI Agents

AI-Assisted DevSecOps Workshop

This certificate confirms the completion of the AI-Assisted DevSecOps Workshop by Bynet Data Communications. The holder used Script.it AI agent to autonomously build and deploy a complete CI/CD pipeline, and GitLab Duo AI agent to identify, explain, and remediate a critical security vulnerability with a single prompt.

✓ Script.it AI Agent ✓ GitLab CI/CD + SAST ✓ JFrog Artifactory + Xray ✓ Tanzu Cloud Foundry ✓ GitLab Duo Remediation
Script.it
AI Orchestration
GitLab
CI/CD + SAST
JFrog
Artifact + Scan
Tanzu CF
Production Deploy
GitLab Duo
AI Remediation
Date Issued
June 2026
BYNET
VERIFIED
Bynet Professional Services
AI-Assisted DevSecOps Program