SlideShare a Scribd company logo
1 of 54
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 OpenStackdevkulkarni
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleJulien Pivotto
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for DocumentationAnne 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-CodeBrian 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 codeDamien 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 KubernetesAmbassador 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 RetailersCloudBees
 
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 2014Jean-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 AnalyticsCloudBees
 
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é MochtarXebia 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 DowdneyWeaveworks
 
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 DistributionDocker, 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 CoultonDocker, 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 RancherShannon 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 belgiumChris Adkin
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014CloudBees
 
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 WorkflowUdaypal 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 2016Patrick 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.pdfJavier 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 ProductionPatrick Chanezon
 
Devoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and BoltsDevoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and BoltsPatrick 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 2017Patrick 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 overviewpdalian
 
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 and with SignalFx
Docker at and with SignalFxDocker at and with SignalFx
Docker at and with SignalFxSignalFx
 
Docker Registry V2
Docker Registry V2Docker Registry V2
Docker Registry V2Docker, 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_devstackSł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 & DistributionStefan Schmidt
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to KubernetesPaul Czarkowski
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer DayKimihiko 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.pdfLuciano 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

UNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptx
UNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptxUNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptx
UNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptxDineshKumar4165
 
Call Girls in Karachi | +923081633338 | Karachi Call Girls
Call Girls in Karachi  | +923081633338 | Karachi Call GirlsCall Girls in Karachi  | +923081633338 | Karachi Call Girls
Call Girls in Karachi | +923081633338 | Karachi Call GirlsAyesha Khan
 
UNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGER
UNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGERUNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGER
UNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGERDineshKumar4165
 
Digamma - CertiCon Team Skills and Qualifications
Digamma - CertiCon Team Skills and QualificationsDigamma - CertiCon Team Skills and Qualifications
Digamma - CertiCon Team Skills and QualificationsMihajloManjak
 
如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一
如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一
如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一ga6c6bdl
 
call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
What Causes DPF Failure In VW Golf Cars & How Can They Be Prevented
What Causes DPF Failure In VW Golf Cars & How Can They Be PreventedWhat Causes DPF Failure In VW Golf Cars & How Can They Be Prevented
What Causes DPF Failure In VW Golf Cars & How Can They Be PreventedAutobahn Automotive Service
 
Innovating Manufacturing with CNC Technology
Innovating Manufacturing with CNC TechnologyInnovating Manufacturing with CNC Technology
Innovating Manufacturing with CNC Technologyquickpartslimitlessm
 
call girls in G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in  G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in  G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...
Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...
Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...kexey39068
 
( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607
( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607
( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607dollysharma2066
 
VDA 6.3 Process Approach in Automotive Industries
VDA 6.3 Process Approach in Automotive IndustriesVDA 6.3 Process Approach in Automotive Industries
VDA 6.3 Process Approach in Automotive IndustriesKannanDN
 
UNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHER
UNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHERUNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHER
UNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHERunosafeads
 
UNIT-III-TRANSMISSION SYSTEMS REAR AXLES
UNIT-III-TRANSMISSION SYSTEMS REAR AXLESUNIT-III-TRANSMISSION SYSTEMS REAR AXLES
UNIT-III-TRANSMISSION SYSTEMS REAR AXLESDineshKumar4165
 
2024 TOP 10 most fuel-efficient vehicles according to the US agency
2024 TOP 10 most fuel-efficient vehicles according to the US agency2024 TOP 10 most fuel-efficient vehicles according to the US agency
2024 TOP 10 most fuel-efficient vehicles according to the US agencyHyundai Motor Group
 
原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证
原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证
原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证jjrehjwj11gg
 
Digamma / CertiCon Company Presentation
Digamma / CertiCon Company  PresentationDigamma / CertiCon Company  Presentation
Digamma / CertiCon Company PresentationMihajloManjak
 
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂Hot Call Girls In Sector 58 (Noida)
 
定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一
定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一
定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一fjjhfuubb
 

Recently uploaded (20)

UNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptx
UNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptxUNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptx
UNIT-IV-STEERING, BRAKES AND SUSPENSION SYSTEMS.pptx
 
Call Girls in Karachi | +923081633338 | Karachi Call Girls
Call Girls in Karachi  | +923081633338 | Karachi Call GirlsCall Girls in Karachi  | +923081633338 | Karachi Call Girls
Call Girls in Karachi | +923081633338 | Karachi Call Girls
 
UNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGER
UNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGERUNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGER
UNIT-II-ENGINE AUXILIARY SYSTEMS &TURBOCHARGER
 
Digamma - CertiCon Team Skills and Qualifications
Digamma - CertiCon Team Skills and QualificationsDigamma - CertiCon Team Skills and Qualifications
Digamma - CertiCon Team Skills and Qualifications
 
如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一
如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一
如何办理迈阿密大学毕业证(UM毕业证)成绩单留信学历认证原版一比一
 
call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Jama Masjid (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
What Causes DPF Failure In VW Golf Cars & How Can They Be Prevented
What Causes DPF Failure In VW Golf Cars & How Can They Be PreventedWhat Causes DPF Failure In VW Golf Cars & How Can They Be Prevented
What Causes DPF Failure In VW Golf Cars & How Can They Be Prevented
 
Innovating Manufacturing with CNC Technology
Innovating Manufacturing with CNC TechnologyInnovating Manufacturing with CNC Technology
Innovating Manufacturing with CNC Technology
 
call girls in G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in  G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in  G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in G.T.B. Nagar (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...
Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...
Call Girl Service Global Village Dubai +971509430017 Independent Call Girls G...
 
( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607
( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607
( Best ) Genuine Call Girls In Mandi House =DELHI-| 8377087607
 
VDA 6.3 Process Approach in Automotive Industries
VDA 6.3 Process Approach in Automotive IndustriesVDA 6.3 Process Approach in Automotive Industries
VDA 6.3 Process Approach in Automotive Industries
 
UNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHER
UNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHERUNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHER
UNOSAFE ELEVATOR PRIVATE LTD BANGALORE BROUCHER
 
UNIT-III-TRANSMISSION SYSTEMS REAR AXLES
UNIT-III-TRANSMISSION SYSTEMS REAR AXLESUNIT-III-TRANSMISSION SYSTEMS REAR AXLES
UNIT-III-TRANSMISSION SYSTEMS REAR AXLES
 
2024 TOP 10 most fuel-efficient vehicles according to the US agency
2024 TOP 10 most fuel-efficient vehicles according to the US agency2024 TOP 10 most fuel-efficient vehicles according to the US agency
2024 TOP 10 most fuel-efficient vehicles according to the US agency
 
原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证
原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证
原版工艺美国普林斯顿大学毕业证Princeton毕业证成绩单修改留信学历认证
 
Digamma / CertiCon Company Presentation
Digamma / CertiCon Company  PresentationDigamma / CertiCon Company  Presentation
Digamma / CertiCon Company Presentation
 
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
 
定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一
定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一
定制昆士兰大学毕业证(本硕)UQ学位证书原版一比一
 
sauth delhi call girls in Connaught Place🔝 9953056974 🔝 escort Service
sauth delhi call girls in  Connaught Place🔝 9953056974 🔝 escort Servicesauth delhi call girls in  Connaught Place🔝 9953056974 🔝 escort Service
sauth delhi call girls in Connaught Place🔝 9953056974 🔝 escort Service
 

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)