SlideShare une entreprise Scribd logo
1  sur  76
Télécharger pour lire hors ligne
柴田 博志
SHIBATA Hiroshi
paperboy&co.
asakusa.rb
paperboy&co., Inc.
How to develop Jenkins plugin using to ruby and
Jenkins.rb
発表場所 Jenkins User Conference 2012-07-29(Sun)
jenkins.rb で始める
Ruby で Jenkins
プラグイン作成
Jenkins User
Conference Tokyo
開催おめでとうございます。
スポンサーのご紹介
自己紹介
SHIBATA Hiroshi
http://twitter.com/hsbt/
http://www.hsbt.org/
http://github.com/hsbt/
会社紹介```
仕事内容
技術基盤
整備
エンジニア
会社紹介
終わり
豊富なプラグイン
自分でもプ
ラグインな
ら作れそう
な気がする
Java...
jenkins.rb
1. java-runtime
4. ruby-tools/jpi
3. ruby-tools/cli
2. ruby-runtime
java-runtime
ruby-runtime
Jenkins に JRuby を
組み込む
Jenkins の Java クラス
を JRuby でラッパーする
ruby-tools/cli
ruby-tools/jpi
jenkins を操作する奴
今日はなすこと
jpi.rb
rbenv install jruby-1.6.7.2
rbenv shell jruby-1.6.7.2
gem install jpi
Commands:
jpi help [COMMAND]
jpi new NAME
jpi generate [options] [arguments]
jpi build
jpi server
jpi release
jpi version
jpi
help
jpi
version
省略
jpi
new
% jpi new rbenv
create rbenv/Gemfile
create rbenv/jenkins-
rbenv.pluginspec
source :rubygems
gem "jenkins-plugin-runtime", " >
0.2.0"
Gemfile
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
Jenkins::Plugin::Specification.new do ¦plugin¦
plugin.name = "jenkins-rbenv"
plugin.display_name = "Jenkins Rbenv Plugin"
plugin.version = '0.0.1'
plugin.description = 'TODO: enter description
here'
plugin.url = 'https://wiki.jenkins-ci.org/
display/JENKINS/Jenkins+Rbenv+Plugin'
plugin.developed_by "shibata.hiroshi",
"SHIBATA Hiroshi <shibata.hiroshi@gmail.com>"
plugin.uses_repository :github => "jenkins-
rbenv-plugin"
plugin.depends_on 'ruby-runtime', '0.10'
end
jenkins-rbenv.pluginspec
jpi
generate
Available Generators:
publisher
builder
wrapper
node_property
run_listener
computer_listener
1. publisher
3. wrapper
2. builder
ビルド後に何かやる
ビルドとして何かやる
ビルド前後に処理を挟む
4. node_property
6. computer_listener
5. run_listener
jenkins の node 設定
ビルドの完了を受け取っ
て何かやる
ステータスが変わった時
に何かやる
wrapper
を作ってみよう
% cd rbenv
% jpi generate wrapper
rbenv
create models/
rbenv_wrapper.rb
class RbenvWrapper <
Jenkins::Tasks::BuildWrapper
display_name "Rbenv build wrapper"
def initialize(attrs = {})
end
def setup(build, launcher, listener)
end
def teardown(build, listener)
end
end
rbenv_wrapper.rb
class RbenvWrapper <
Jenkins::Tasks::BuildWrapper
display_name "Rbenv build wrapper"
def initialize(attrs = {})
end
def setup(build, launcher, listener)
end
def teardown(build, listener)
end
end
rbenv_wrapper.rb
class RbenvWrapper <
Jenkins::Tasks::BuildWrapper
display_name "Rbenv build wrapper"
def initialize(attrs = {})
end
def setup(build, launcher, listener)
end
def teardown(build, listener)
end
end
rbenv_wrapper.rb
class RbenvWrapper <
Jenkins::Tasks::BuildWrapper
display_name "Rbenv build wrapper"
def initialize(attrs = {})
end
def setup(build, launcher, listener)
end
def teardown(build, listener)
end
end
rbenv_wrapper.rb
設定画面を
使いたい
mkdir -p views/rbenv_wrapper
touch views/rbenv_wrapper/
config.erb
<%
f = taglib("/lib/form")
f.entry(:title => 'Version', :field =>
'version', :description => "RUBY, such as '1.9.3-
p194'") do
f.textbox
end
f.entry(:title => 'Preinstall gem list', :field =>
'gem_list', :description => "ex. bundler,rake") do
f.textbox(:value => 'bundler,rake')
end
%>
config.erb
jelly taglib
class RbenvWrapper <
Jenkins::Tasks::BuildWrapper
display_name "Rbenv build wrapper"
def initialize(attrs = {})
end
def setup(build, launcher, listener)
end
def teardown(build, listener)
end
end
rbenv_wrapper.rb
attr_accessor :version
def initialize(attrs = {})
@version =
attrs['version']
end
rbenv_wrapper.rb
class RbenvWrapper <
Jenkins::Tasks::BuildWrapper
display_name "Rbenv build wrapper"
def initialize(attrs = {})
end
def setup(build, launcher, listener)
end
def teardown(build, listener)
end
end
rbenv_wrapper.rb
install_path = " /.rbenv/versions/#{@version}"
begin
unless FileTest.directory?
File.expand_path(" /.rbenv")
listener << "Install rbenvn"
launcher.execute("bash", "-c", "git clone
#{RBENV_PATH} /.rbenv", {out: listener})
end
rescue
build.abort
end
rbenv_wrapper.rb
install_path = " /.rbenv/versions/#{@version}"
begin
unless FileTest.directory?
File.expand_path(" /.rbenv")
listener << "Install rbenvn"
launcher.execute("bash", "-c", "git clone
#{RBENV_PATH} /.rbenv", {out: listener})
end
rescue
build.abort
end
rbenv_wrapper.rb
install_path = " /.rbenv/versions/#{@version}"
begin
unless FileTest.directory?
File.expand_path(" /.rbenv")
listener << "Install rbenvn"
launcher.execute("bash", "-c", "git clone
#{RBENV_PATH} /.rbenv", {out: listener})
end
rescue
build.abort
end
rbenv_wrapper.rb
install_path = " /.rbenv/versions/#{@version}"
begin
unless FileTest.directory?
File.expand_path(" /.rbenv")
listener << "Install rbenvn"
launcher.execute("bash", "-c", "git clone
#{RBENV_PATH} /.rbenv", {out: listener})
end
rescue
build.abort
end
rbenv_wrapper.rb
jpi
build
1. pluginspec から
pom.xml を生成
2. hpi ファイルを生
成
jpi
server
plugin を
読み込んだ
Jenkins
を起動する
手動テスト
jpi
release
1. jenkins-ci.org にアッ
プロードする
3. 引数無しは snapshot,
--release を付けると
production
2. /.jenkins-ci.org の
アカウント情報を使用
その他
test-unit
or
rspec
テスト
使えないので
Java ライブラリ
で頑張る
rubygems
etc
https://github.com/jenkinsci/rvm-plugin
https://github.com/hsbt/jenkins-rbenv-plugin
https://github.com/takai/jenkins-hipchat-publisher-plugin
Write your plugin

Contenu connexe

Tendances

20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04
Hiroshi SHIBATA
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
Hiroshi SHIBATA
 
The Architecture of PicCollage Server
The Architecture of PicCollage ServerThe Architecture of PicCollage Server
The Architecture of PicCollage Server
Lin Jen-Shin
 

Tendances (20)

Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 Minutes
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mruby
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled Bundler
 
20140918 ruby kaigi2014
20140918 ruby kaigi201420140918 ruby kaigi2014
20140918 ruby kaigi2014
 
The Future of Dependency Management for Ruby
The Future of Dependency Management for RubyThe Future of Dependency Management for Ruby
The Future of Dependency Management for Ruby
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
 
An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage library
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
 
mruby で mackerel のプラグインを作るはなし
mruby で mackerel のプラグインを作るはなしmruby で mackerel のプラグインを作るはなし
mruby で mackerel のプラグインを作るはなし
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of Ruby
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard Way
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
Ractor's speed is not light-speed
Ractor's speed is not light-speedRactor's speed is not light-speed
Ractor's speed is not light-speed
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPAN
 
The Architecture of PicCollage Server
The Architecture of PicCollage ServerThe Architecture of PicCollage Server
The Architecture of PicCollage Server
 

Similaire à How to develop Jenkins plugin using to ruby and Jenkins.rb

Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
True-Vision
 
Using Chef and Vagrant at Gengo
Using Chef and Vagrant at GengoUsing Chef and Vagrant at Gengo
Using Chef and Vagrant at Gengo
Gengo
 

Similaire à How to develop Jenkins plugin using to ruby and Jenkins.rb (20)

Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
 
OpenShift State of the Union, brought to you by JBoss
OpenShift State of the Union, brought to you by JBossOpenShift State of the Union, brought to you by JBoss
OpenShift State of the Union, brought to you by JBoss
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Development
 
What's New in JHipsterLand - Devoxx US 2017
What's New in JHipsterLand - Devoxx US 2017What's New in JHipsterLand - Devoxx US 2017
What's New in JHipsterLand - Devoxx US 2017
 
Top 8 Ruby on Rails Gems
Top 8 Ruby on Rails GemsTop 8 Ruby on Rails Gems
Top 8 Ruby on Rails Gems
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017
 
Lightning branches at RedMart (Js conf Asia 2014 Talk)
Lightning branches at RedMart (Js conf Asia 2014  Talk)Lightning branches at RedMart (Js conf Asia 2014  Talk)
Lightning branches at RedMart (Js conf Asia 2014 Talk)
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
 
Frontend Workflow
Frontend WorkflowFrontend Workflow
Frontend Workflow
 
What's New in JHipsterLand - Devoxx Poland 2017
What's New in JHipsterLand - Devoxx Poland 2017What's New in JHipsterLand - Devoxx Poland 2017
What's New in JHipsterLand - Devoxx Poland 2017
 
Using Chef and Vagrant at Gengo
Using Chef and Vagrant at GengoUsing Chef and Vagrant at Gengo
Using Chef and Vagrant at Gengo
 
Jenkins Best Practices Meetup Slides
Jenkins Best Practices Meetup SlidesJenkins Best Practices Meetup Slides
Jenkins Best Practices Meetup Slides
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budget
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
How to Create the API Document from Real API and Localization
How to Create the API Document from Real API and Localization How to Create the API Document from Real API and Localization
How to Create the API Document from Real API and Localization
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 

Plus de Hiroshi SHIBATA

Plus de Hiroshi SHIBATA (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Deep dive into Ruby's require - RubyConf Taiwan 2023
Deep dive into Ruby's require - RubyConf Taiwan 2023Deep dive into Ruby's require - RubyConf Taiwan 2023
Deep dive into Ruby's require - RubyConf Taiwan 2023
 
How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?
 
How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?How resolve Gem dependencies in your code?
How resolve Gem dependencies in your code?
 
Ruby コミッターと歩む Ruby を用いたプロダクト開発
Ruby コミッターと歩む Ruby を用いたプロダクト開発Ruby コミッターと歩む Ruby を用いたプロダクト開発
Ruby コミッターと歩む Ruby を用いたプロダクト開発
 
Why ANDPAD commit Ruby and RubyKaigi?
Why ANDPAD commit Ruby and RubyKaigi?Why ANDPAD commit Ruby and RubyKaigi?
Why ANDPAD commit Ruby and RubyKaigi?
 
RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩
 
Dependency Resolution with Standard Libraries
Dependency Resolution with Standard LibrariesDependency Resolution with Standard Libraries
Dependency Resolution with Standard Libraries
 
Roadmap for RubyGems 4 and Bundler 3
Roadmap for RubyGems 4 and Bundler 3Roadmap for RubyGems 4 and Bundler 3
Roadmap for RubyGems 4 and Bundler 3
 
The Future of library dependency management of Ruby
 The Future of library dependency management of Ruby The Future of library dependency management of Ruby
The Future of library dependency management of Ruby
 
OSS Security the hard way
OSS Security the hard wayOSS Security the hard way
OSS Security the hard way
 
What's new in RubyGems3
What's new in RubyGems3What's new in RubyGems3
What's new in RubyGems3
 
Productive Organization with Ruby
Productive Organization with RubyProductive Organization with Ruby
Productive Organization with Ruby
 
Gems on Ruby
Gems on RubyGems on Ruby
Gems on Ruby
 
Gems on Ruby
Gems on RubyGems on Ruby
Gems on Ruby
 
RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and future
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

How to develop Jenkins plugin using to ruby and Jenkins.rb