SlideShare a Scribd company logo
1
SCALA BOT IN THE
WORLD OF NUGET
PACKAGES
ABOUT THE AUTHOR
SERGEY DZYUBAN, TECH LEAD
• 10 years .NET development background
• 4 year Cloud development experience (AWS)
• 1 year of DevOps Tech Lead experience
@SergeyDz
SergeyDz
PART 1: IN THE WORLD OF
NUGET PACKAGES
IN THE WORLD OF NUGET PACKAGES
SBTech CICD infrastructure was born to produce NUGET
packages
• over 500 repositories
• 70 Gb / 23 000 Nuget packages in artifactory
• 100 package deployments per day
• 2000 package deployments per month
• Fully automated build and package process
IN THE WORLD OF NUGET PACKAGES
commit
hook
IN THE WORLD OF NUGET PACKAGES
commit
hook
build
IN THE WORLD OF NUGET PACKAGES
commit
hook
build
IN THE WORLD OF NUGET PACKAGES
commit
hook
build
upload
IN THE WORLD OF NUGET PACKAGES
But sometimes (few time a day usually) something goes
wrong
• Need to create package without commit
• Jenkins is broken
• Package was removed and need to be redeployed
• Need to deploy some 3d party component
• etc.
... and urgent-asap-need-your-help
IN THE WORLD OF NUGET PACKAGES
commit
hook
build
IN THE WORLD OF NUGET PACKAGES
When regular Flow is broken, some additional work from
PAAS is required to serve each upload request:
PAAS
Artifactory
IN THE WORLD OF NUGET PACKAGES
The main issues to provide direct access for end users:
• No NTLM support for Artifactory in Cloud
• Artifactory doesn’t build package folders structure
automatically
• Artifactory audit is poor
• Release and features packages should be put to
different feeds
IN THE WORLD OF NUGET PACKAGES
Package deployment logic was automated (forked from
Jenkins CI scripts) and delegated to standalone Slack Bot
Artifactory
Slack
BOT
IN THE WORLD OF NUGET PACKAGES
Responsibility Segregation
Slack Bot PAAS
• UI/UX
• Security/access
• Audit
• SLA
• Backup storage
• Information
Slack Bot took responsibility to serve nuget package
requests without DevOps to be involved.
IN THE WORLD OF NUGET PACKAGES
Responsibility Segregation
Slack Bot PAAS
• UI/UX
• Security/access
• Audit
• SLA
• Backup storage
• Information
• Verify nuget
• Upload to Artifactory
• Package folder
structure
• Package Feed
structure
• Conflict resolving
Slack Bot took responsibility to serve nuget package
requests without DevOps to be involved.
IN THE WORLD OF NUGET PACKAGES
Responsibility Segregation
Slack Bot PAAS
• UI/UX
• Security/access
• Audit
• SLA
• Backup storage
• Information
• Verify nuget
• Upload to Artifactory
• Package folder
structure
• Package Feed
structure
• Conflict resolving
• Drink tequila
Slack Bot took responsibility to serve nuget package
requests without DevOps to be involved.
PART 2: CREATING SLACK
BOT
CREATING SLACK BOT
Prerequisites
• Slack account (company or personal)
• Artifactory account (with edit permissions to the feed)
• Scala installation (v2.11.12)
• Scala IDE (IntelliJ IDEA)
CREATING SLACK BOT
Step 1: Creating Slack Bot API Key
1. Bot create page to generate API Key
2. setx slackkey xoxb-… to save key locally
3. Add newly created bot to target Slack
channel
CREATING SLACK BOT
Step 2: Creating Child Scala Bot
1. Create SBT Scala project
2. Import slack-scala-client
3. Add sample bot behavior
DEMO (v1.0)
CREATING SLACK BOT
Design for nuget upload Flow
analysis Business Process Model
User
Attach
Nuget
Bot
On
Message
Send
is file?
NUGET
Download Is exists in AF Upload
Artifactory
Report
Success/Failure
CREATING SLACK BOT
General Project Overview
Affected Components
• Slack File API
• Artifactory API
• Slack Message API
Authorization
• Slack = API Key
• Artifactory
Task List
1. Detect file attached to Slack
2. Download File
3. Ensure File is Nuget
4. Detect version
5. Check if file not exists in AF
6. Calculate proper feed and path in
Artifactrory
7. Upload file to Artifactory
8. Report user in Slack about success or
failure
CREATING SLACK BOT
See https://doc.akka.io/docs/akka/current/guide/introduction.html
Welcome to Akka, a set of open-source libraries for designing scalable, resilient
systems that span processor cores and networks. Akka allows you to focus on
meeting business needs instead of writing low-level code to provide reliable
behavior, fault tolerance, and high performance.
CREATING SLACK BOT
See https://doc.akka.io/docs/akka/current/guide/introduction.html
Actors interact each other by
sending a messages
A1
A2
A3 A4
CREATING SLACK BOT
See https://doc.akka.io/docs/akka/current/guide/introduction.html
Actors interact each other by
sending a messages
A1
A2
A3 A4
??
CREATING SLACK BOT
See https://doc.akka.io/docs/akka/current/guide/introduction.html
Actors interact each other by
sending a messages
A1
A2
A3 A4
??
But having access to actor system ….
CREATING SLACK BOT
See https://doc.akka.io/docs/akka/current/guide/introduction.html
Actors interact each other by
sending a messages
A1
A2
A3 A4
Always at most one message
being processed per actor
CREATING SLACK BOT
See https://doc.akka.io/docs/akka/current/guide/introduction.html
Inside the Akka magic
CREATING SLACK BOT
Don’t forget to commit your code
GitHub is good enough for public repositories
https://github.com/SergeyDz/slack-to-artifactory-bot
Very easy is to add CI as a Service, like travis-ci and build each
commit and pull request
PART 3: IT’S ALL ABOUT
ACTORS
IT’S ALL ABOUT ACTORS
Let’s design a simple Akka system, that will
react on adding a file to the Slack.
DEMO (v2.0)
Task for the version :
1. Detect file attached to Slack
2. Create SlackFileActor for each file
3. Determine File Name and Path
4. Send Done message to Slack channel
5. Send Poison Pill to SlackFileActor
sd Actor Model v2.0
SlackChannelActor
SlackRTMClient
SlackFileActor
send(file, self)
:attachment
send(PoisonPill)
send(UploadCompleted, self)
new(api-key)
send('Done')
new(channel)
IT’S ALL ABOUT ACTORS
The Final Sprint
After making Slack to Bot integration, Actor system will proceed with the
process of pushing attached nuget package to the Artifactrory.
Tasks list:
- file need to be downloaded
- file need to be unzipped to get nuget version and package
- check if this package exists in Artifactory
- upload package
- delete slack attachment
- notify end user
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
download
channel
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel,
file
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel,
file
Nuget
Actor
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel,
file
Nuget
Actor
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel,
file
Nuget
Actor
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel,
file,
nuget
Nuget
Actor
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
file
Slack
File
Actor
channel,
file,
nuget
Nuget
Actor
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
channel,
file,
nuget
Nuget
Actor
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
isExists?
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
file
upload
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
file
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
file
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
file
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
file
Done
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Slack
File
Actor
Nuget
Actor
Artifactory
Actor
channel,
file,
nuget
Artifactory
file
Done
IT’S ALL ABOUT ACTORS
Slack
Channel
Actor
Slack
Artifactory
file
Done
IT’S ALL ABOUT ACTORS
1. SlackChannelActor
• listen Slack
• create SlackFileActor
2. SlackFileActor
• download file
• delete file
3. NugetActor
• recognize nuget package
• unzip nuget
• get nuget id and version
4. ArtifactoryActor
• check if package exists
• do upload
DEMO (v3.0)

More Related Content

What's hot

JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
CloudBees
 
Contributing to OpenStack
Contributing to OpenStackContributing to OpenStack
Contributing to OpenStack
devkulkarni
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
Julien Pivotto
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
Anne Gentle
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
Brian Dawson
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
Tracy Kennedy
 
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as codeVoxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Damien Duportal
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
Ambassador Labs
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
CloudBees
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
Jean-Charles JOREL
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
CloudBees
 
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé MochtarTestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
Xebia Nederland BV
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Weaveworks
 
DockerCon SF 2015: A New Model for Image Distribution
DockerCon SF 2015: A New Model for Image DistributionDockerCon SF 2015: A New Model for Image Distribution
DockerCon SF 2015: A New Model for Image Distribution
Docker, Inc.
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott Coulton
Docker, Inc.
 
Building a Scalable CI Platform using Docker, Drone and Rancher
Building a Scalable CI  Platform using Docker, Drone and RancherBuilding a Scalable CI  Platform using Docker, Drone and Rancher
Building a Scalable CI Platform using Docker, Drone and Rancher
Shannon Williams
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgium
Chris Adkin
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
CloudBees
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
Docker, Inc.
 
Continuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins Workflow
Udaypal Aarkoti
 

What's hot (20)

JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
 
Contributing to OpenStack
Contributing to OpenStackContributing to OpenStack
Contributing to OpenStack
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
 
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as codeVoxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé MochtarTestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
 
DockerCon SF 2015: A New Model for Image Distribution
DockerCon SF 2015: A New Model for Image DistributionDockerCon SF 2015: A New Model for Image Distribution
DockerCon SF 2015: A New Model for Image Distribution
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott Coulton
 
Building a Scalable CI Platform using Docker, Drone and Rancher
Building a Scalable CI  Platform using Docker, Drone and RancherBuilding a Scalable CI  Platform using Docker, Drone and Rancher
Building a Scalable CI Platform using Docker, Drone and Rancher
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgium
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Continuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins Workflow
 

Similar to Slack Bot: upload NUGET package to Artifactory

What's new in Docker - InfraKit - Docker Meetup Berlin 2016
What's new in Docker - InfraKit - Docker Meetup Berlin 2016What's new in Docker - InfraKit - Docker Meetup Berlin 2016
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
Patrick Chanezon
 
OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!
Matt Tesauro
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdf
Javier Turégano Molina
 
Oscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to ProductionOscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to Production
Patrick Chanezon
 
Devoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and BoltsDevoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and Bolts
Patrick Chanezon
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
Patrick Chanezon
 
CICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overviewCICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overview
pdalian
 
Osrs
OsrsOsrs
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Martin Bergljung
 
Docker {at,with} SignalFx
Docker {at,with} SignalFxDocker {at,with} SignalFx
Docker {at,with} SignalFx
Maxime Petazzoni
 
Docker at and with SignalFx
Docker at and with SignalFxDocker at and with SignalFx
Docker at and with SignalFx
SignalFx
 
Docker Registry V2
Docker Registry V2Docker Registry V2
Docker Registry V2
Docker, Inc.
 
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
Daniel Krook
 
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
Animesh Singh
 
How to integrate_custom_openstack_services_with_devstack
How to integrate_custom_openstack_services_with_devstackHow to integrate_custom_openstack_services_with_devstack
How to integrate_custom_openstack_services_with_devstack
Sławomir Kapłoński
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & Distribution
Stefan Schmidt
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
Paul Czarkowski
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day
Kimihiko Kitase
 
A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdf
Luciano Resende
 
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
 Openstack - An introduction/Installation - Presented at Dr Dobb's conference... Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
Rahul Krishna Upadhyaya
 

Similar to Slack Bot: upload NUGET package to Artifactory (20)

What's new in Docker - InfraKit - Docker Meetup Berlin 2016
What's new in Docker - InfraKit - Docker Meetup Berlin 2016What's new in Docker - InfraKit - Docker Meetup Berlin 2016
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
 
OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdf
 
Oscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to ProductionOscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to Production
 
Devoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and BoltsDevoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and Bolts
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
CICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overviewCICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overview
 
Osrs
OsrsOsrs
Osrs
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
 
Docker {at,with} SignalFx
Docker {at,with} SignalFxDocker {at,with} SignalFx
Docker {at,with} SignalFx
 
Docker at and with SignalFx
Docker at and with SignalFxDocker at and with SignalFx
Docker at and with SignalFx
 
Docker Registry V2
Docker Registry V2Docker Registry V2
Docker Registry V2
 
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
 
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
 
How to integrate_custom_openstack_services_with_devstack
How to integrate_custom_openstack_services_with_devstackHow to integrate_custom_openstack_services_with_devstack
How to integrate_custom_openstack_services_with_devstack
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & Distribution
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day
 
A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdf
 
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
 Openstack - An introduction/Installation - Presented at Dr Dobb's conference... Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
 

Recently uploaded

原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样
原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样
原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样
utuvvas
 
Catalytic Converter theft prevention - NYC.pptx
Catalytic Converter theft prevention - NYC.pptxCatalytic Converter theft prevention - NYC.pptx
Catalytic Converter theft prevention - NYC.pptx
Blue Star Brothers
 
一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理
一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理
一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理
afkxen
 
一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理
一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理
一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理
afkxen
 
Charging and Fueling Infrastructure Grant: Round 2 by Brandt Hertenstein
Charging and Fueling Infrastructure Grant: Round 2 by Brandt HertensteinCharging and Fueling Infrastructure Grant: Round 2 by Brandt Hertenstein
Charging and Fueling Infrastructure Grant: Round 2 by Brandt Hertenstein
Forth
 
快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样
快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样
快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样
78tq3hi2
 
Here's Why Every Semi-Truck Should Have ELDs
Here's Why Every Semi-Truck Should Have ELDsHere's Why Every Semi-Truck Should Have ELDs
Here's Why Every Semi-Truck Should Have ELDs
jennifermiller8137
 
EV Charging at Multifamily Properties by Kevin Donnelly
EV Charging at Multifamily Properties by Kevin DonnellyEV Charging at Multifamily Properties by Kevin Donnelly
EV Charging at Multifamily Properties by Kevin Donnelly
Forth
 
EV Charging at MFH Properties by Whitaker Jamieson
EV Charging at MFH Properties by Whitaker JamiesonEV Charging at MFH Properties by Whitaker Jamieson
EV Charging at MFH Properties by Whitaker Jamieson
Forth
 
Charging Fueling & Infrastructure (CFI) Program by Kevin Miller
Charging Fueling & Infrastructure (CFI) Program  by Kevin MillerCharging Fueling & Infrastructure (CFI) Program  by Kevin Miller
Charging Fueling & Infrastructure (CFI) Program by Kevin Miller
Forth
 
原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样
原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样
原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样
g1inbfro
 
Charging Fueling & Infrastructure (CFI) Program Resources by Cat Plein
Charging Fueling & Infrastructure (CFI) Program Resources by Cat PleinCharging Fueling & Infrastructure (CFI) Program Resources by Cat Plein
Charging Fueling & Infrastructure (CFI) Program Resources by Cat Plein
Forth
 
Dahua Security Camera System Guide esetia
Dahua Security Camera System Guide esetiaDahua Security Camera System Guide esetia
Dahua Security Camera System Guide esetia
Esentia Systems
 
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理
u2cz10zq
 
按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理
按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理
按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理
ggany
 
原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样
原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样
原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样
78tq3hi2
 
53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...
53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...
53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...
MarynaYurchenko2
 
Expanding Access to Affordable At-Home EV Charging by Vanessa Warheit
Expanding Access to Affordable At-Home EV Charging by Vanessa WarheitExpanding Access to Affordable At-Home EV Charging by Vanessa Warheit
Expanding Access to Affordable At-Home EV Charging by Vanessa Warheit
Forth
 

Recently uploaded (18)

原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样
原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样
原版定做(mmu学位证书)英国曼彻斯特城市大学毕业证本科文凭原版一模一样
 
Catalytic Converter theft prevention - NYC.pptx
Catalytic Converter theft prevention - NYC.pptxCatalytic Converter theft prevention - NYC.pptx
Catalytic Converter theft prevention - NYC.pptx
 
一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理
一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理
一比一原版(Columbia文凭证书)哥伦比亚大学毕业证如何办理
 
一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理
一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理
一比一原版(WashU文凭证书)圣路易斯华盛顿大学毕业证如何办理
 
Charging and Fueling Infrastructure Grant: Round 2 by Brandt Hertenstein
Charging and Fueling Infrastructure Grant: Round 2 by Brandt HertensteinCharging and Fueling Infrastructure Grant: Round 2 by Brandt Hertenstein
Charging and Fueling Infrastructure Grant: Round 2 by Brandt Hertenstein
 
快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样
快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样
快速办理(napier毕业证书)英国龙比亚大学毕业证在读证明一模一样
 
Here's Why Every Semi-Truck Should Have ELDs
Here's Why Every Semi-Truck Should Have ELDsHere's Why Every Semi-Truck Should Have ELDs
Here's Why Every Semi-Truck Should Have ELDs
 
EV Charging at Multifamily Properties by Kevin Donnelly
EV Charging at Multifamily Properties by Kevin DonnellyEV Charging at Multifamily Properties by Kevin Donnelly
EV Charging at Multifamily Properties by Kevin Donnelly
 
EV Charging at MFH Properties by Whitaker Jamieson
EV Charging at MFH Properties by Whitaker JamiesonEV Charging at MFH Properties by Whitaker Jamieson
EV Charging at MFH Properties by Whitaker Jamieson
 
Charging Fueling & Infrastructure (CFI) Program by Kevin Miller
Charging Fueling & Infrastructure (CFI) Program  by Kevin MillerCharging Fueling & Infrastructure (CFI) Program  by Kevin Miller
Charging Fueling & Infrastructure (CFI) Program by Kevin Miller
 
原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样
原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样
原版制作(澳洲WSU毕业证书)西悉尼大学毕业证文凭证书一模一样
 
Charging Fueling & Infrastructure (CFI) Program Resources by Cat Plein
Charging Fueling & Infrastructure (CFI) Program Resources by Cat PleinCharging Fueling & Infrastructure (CFI) Program Resources by Cat Plein
Charging Fueling & Infrastructure (CFI) Program Resources by Cat Plein
 
Dahua Security Camera System Guide esetia
Dahua Security Camera System Guide esetiaDahua Security Camera System Guide esetia
Dahua Security Camera System Guide esetia
 
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证如何办理
 
按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理
按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理
按照学校原版(UniSA文凭证书)南澳大学毕业证快速办理
 
原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样
原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样
原版制作(Exeter毕业证书)埃克塞特大学毕业证完成信一模一样
 
53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...
53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...
53286592-Global-Entrepreneurship-and-the-Successful-Growth-Strategies-of-Earl...
 
Expanding Access to Affordable At-Home EV Charging by Vanessa Warheit
Expanding Access to Affordable At-Home EV Charging by Vanessa WarheitExpanding Access to Affordable At-Home EV Charging by Vanessa Warheit
Expanding Access to Affordable At-Home EV Charging by Vanessa Warheit
 

Slack Bot: upload NUGET package to Artifactory

  • 1. 1 SCALA BOT IN THE WORLD OF NUGET PACKAGES
  • 2. ABOUT THE AUTHOR SERGEY DZYUBAN, TECH LEAD • 10 years .NET development background • 4 year Cloud development experience (AWS) • 1 year of DevOps Tech Lead experience @SergeyDz SergeyDz
  • 3. PART 1: IN THE WORLD OF NUGET PACKAGES
  • 4. IN THE WORLD OF NUGET PACKAGES SBTech CICD infrastructure was born to produce NUGET packages • over 500 repositories • 70 Gb / 23 000 Nuget packages in artifactory • 100 package deployments per day • 2000 package deployments per month • Fully automated build and package process
  • 5. IN THE WORLD OF NUGET PACKAGES commit hook
  • 6. IN THE WORLD OF NUGET PACKAGES commit hook build
  • 7. IN THE WORLD OF NUGET PACKAGES commit hook build
  • 8. IN THE WORLD OF NUGET PACKAGES commit hook build upload
  • 9. IN THE WORLD OF NUGET PACKAGES But sometimes (few time a day usually) something goes wrong • Need to create package without commit • Jenkins is broken • Package was removed and need to be redeployed • Need to deploy some 3d party component • etc. ... and urgent-asap-need-your-help
  • 10. IN THE WORLD OF NUGET PACKAGES commit hook build
  • 11. IN THE WORLD OF NUGET PACKAGES When regular Flow is broken, some additional work from PAAS is required to serve each upload request: PAAS Artifactory
  • 12. IN THE WORLD OF NUGET PACKAGES The main issues to provide direct access for end users: • No NTLM support for Artifactory in Cloud • Artifactory doesn’t build package folders structure automatically • Artifactory audit is poor • Release and features packages should be put to different feeds
  • 13. IN THE WORLD OF NUGET PACKAGES Package deployment logic was automated (forked from Jenkins CI scripts) and delegated to standalone Slack Bot Artifactory Slack BOT
  • 14. IN THE WORLD OF NUGET PACKAGES Responsibility Segregation Slack Bot PAAS • UI/UX • Security/access • Audit • SLA • Backup storage • Information Slack Bot took responsibility to serve nuget package requests without DevOps to be involved.
  • 15. IN THE WORLD OF NUGET PACKAGES Responsibility Segregation Slack Bot PAAS • UI/UX • Security/access • Audit • SLA • Backup storage • Information • Verify nuget • Upload to Artifactory • Package folder structure • Package Feed structure • Conflict resolving Slack Bot took responsibility to serve nuget package requests without DevOps to be involved.
  • 16. IN THE WORLD OF NUGET PACKAGES Responsibility Segregation Slack Bot PAAS • UI/UX • Security/access • Audit • SLA • Backup storage • Information • Verify nuget • Upload to Artifactory • Package folder structure • Package Feed structure • Conflict resolving • Drink tequila Slack Bot took responsibility to serve nuget package requests without DevOps to be involved.
  • 17. PART 2: CREATING SLACK BOT
  • 18. CREATING SLACK BOT Prerequisites • Slack account (company or personal) • Artifactory account (with edit permissions to the feed) • Scala installation (v2.11.12) • Scala IDE (IntelliJ IDEA)
  • 19. CREATING SLACK BOT Step 1: Creating Slack Bot API Key 1. Bot create page to generate API Key 2. setx slackkey xoxb-… to save key locally 3. Add newly created bot to target Slack channel
  • 20. CREATING SLACK BOT Step 2: Creating Child Scala Bot 1. Create SBT Scala project 2. Import slack-scala-client 3. Add sample bot behavior DEMO (v1.0)
  • 21. CREATING SLACK BOT Design for nuget upload Flow analysis Business Process Model User Attach Nuget Bot On Message Send is file? NUGET Download Is exists in AF Upload Artifactory Report Success/Failure
  • 22. CREATING SLACK BOT General Project Overview Affected Components • Slack File API • Artifactory API • Slack Message API Authorization • Slack = API Key • Artifactory Task List 1. Detect file attached to Slack 2. Download File 3. Ensure File is Nuget 4. Detect version 5. Check if file not exists in AF 6. Calculate proper feed and path in Artifactrory 7. Upload file to Artifactory 8. Report user in Slack about success or failure
  • 23. CREATING SLACK BOT See https://doc.akka.io/docs/akka/current/guide/introduction.html Welcome to Akka, a set of open-source libraries for designing scalable, resilient systems that span processor cores and networks. Akka allows you to focus on meeting business needs instead of writing low-level code to provide reliable behavior, fault tolerance, and high performance.
  • 24. CREATING SLACK BOT See https://doc.akka.io/docs/akka/current/guide/introduction.html Actors interact each other by sending a messages A1 A2 A3 A4
  • 25. CREATING SLACK BOT See https://doc.akka.io/docs/akka/current/guide/introduction.html Actors interact each other by sending a messages A1 A2 A3 A4 ??
  • 26. CREATING SLACK BOT See https://doc.akka.io/docs/akka/current/guide/introduction.html Actors interact each other by sending a messages A1 A2 A3 A4 ?? But having access to actor system ….
  • 27. CREATING SLACK BOT See https://doc.akka.io/docs/akka/current/guide/introduction.html Actors interact each other by sending a messages A1 A2 A3 A4 Always at most one message being processed per actor
  • 28. CREATING SLACK BOT See https://doc.akka.io/docs/akka/current/guide/introduction.html Inside the Akka magic
  • 29. CREATING SLACK BOT Don’t forget to commit your code GitHub is good enough for public repositories https://github.com/SergeyDz/slack-to-artifactory-bot Very easy is to add CI as a Service, like travis-ci and build each commit and pull request
  • 30. PART 3: IT’S ALL ABOUT ACTORS
  • 31. IT’S ALL ABOUT ACTORS Let’s design a simple Akka system, that will react on adding a file to the Slack. DEMO (v2.0) Task for the version : 1. Detect file attached to Slack 2. Create SlackFileActor for each file 3. Determine File Name and Path 4. Send Done message to Slack channel 5. Send Poison Pill to SlackFileActor sd Actor Model v2.0 SlackChannelActor SlackRTMClient SlackFileActor send(file, self) :attachment send(PoisonPill) send(UploadCompleted, self) new(api-key) send('Done') new(channel)
  • 32. IT’S ALL ABOUT ACTORS The Final Sprint After making Slack to Bot integration, Actor system will proceed with the process of pushing attached nuget package to the Artifactrory. Tasks list: - file need to be downloaded - file need to be unzipped to get nuget version and package - check if this package exists in Artifactory - upload package - delete slack attachment - notify end user
  • 33. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file
  • 34. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel
  • 35. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel
  • 36. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor download channel
  • 37. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel, file
  • 38. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel, file Nuget Actor
  • 39. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel, file Nuget Actor
  • 40. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel, file Nuget Actor
  • 41. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel, file, nuget Nuget Actor
  • 42. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack file Slack File Actor channel, file, nuget Nuget Actor
  • 43. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor channel, file, nuget Nuget Actor
  • 44. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget
  • 45. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget
  • 46. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory isExists?
  • 47. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory file upload
  • 48. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory file
  • 49. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory file
  • 50. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory file
  • 51. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory file Done
  • 52. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Slack File Actor Nuget Actor Artifactory Actor channel, file, nuget Artifactory file Done
  • 53. IT’S ALL ABOUT ACTORS Slack Channel Actor Slack Artifactory file Done
  • 54. IT’S ALL ABOUT ACTORS 1. SlackChannelActor • listen Slack • create SlackFileActor 2. SlackFileActor • download file • delete file 3. NugetActor • recognize nuget package • unzip nuget • get nuget id and version 4. ArtifactoryActor • check if package exists • do upload DEMO (v3.0)