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, 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 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
 
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. ...
Animesh Singh
 
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
 
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

gtyccccccccccccccccccccccccccccccccccccccccccccccccccccccc
gtycccccccccccccccccccccccccccccccccccccccccccccccccccccccgtyccccccccccccccccccccccccccccccccccccccccccccccccccccccc
gtyccccccccccccccccccccccccccccccccccccccccccccccccccccccc
4thzenzstar
 
Why Is Your BMW X3 Hood Not Responding To Release Commands
Why Is Your BMW X3 Hood Not Responding To Release CommandsWhy Is Your BMW X3 Hood Not Responding To Release Commands
Why Is Your BMW X3 Hood Not Responding To Release Commands
Dart Auto
 
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.docBài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
daothibichhang1
 
5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention
5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention
5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention
Bertini's German Motors
 
Ec460b lc Excavator Volvo Service Repair.pdf
Ec460b lc Excavator Volvo Service Repair.pdfEc460b lc Excavator Volvo Service Repair.pdf
Ec460b lc Excavator Volvo Service Repair.pdf
Excavator
 
What do the symbols on vehicle dashboard mean?
What do the symbols on vehicle dashboard mean?What do the symbols on vehicle dashboard mean?
What do the symbols on vehicle dashboard mean?
Hyundai Motor Group
 
Statistics5,c.xz,c.;c.;d.c;d;ssssss.pptx
Statistics5,c.xz,c.;c.;d.c;d;ssssss.pptxStatistics5,c.xz,c.;c.;d.c;d;ssssss.pptx
Statistics5,c.xz,c.;c.;d.c;d;ssssss.pptx
coc7987515756
 
欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】
欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】
欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】
ahmedendrise81
 
Empowering Limpopo Entrepreneurs Consulting SMEs.pptx
Empowering Limpopo Entrepreneurs  Consulting SMEs.pptxEmpowering Limpopo Entrepreneurs  Consulting SMEs.pptx
Empowering Limpopo Entrepreneurs Consulting SMEs.pptx
Precious Mvulane CA (SA),RA
 
Why Isn't Your BMW X5's Comfort Access Functioning Properly Find Out Here
Why Isn't Your BMW X5's Comfort Access Functioning Properly Find Out HereWhy Isn't Your BMW X5's Comfort Access Functioning Properly Find Out Here
Why Isn't Your BMW X5's Comfort Access Functioning Properly Find Out Here
Masters European & Gapanese Auto Repair
 
Wondering if Your Mercedes EIS is at Fault Here’s How to Tell
Wondering if Your Mercedes EIS is at Fault Here’s How to TellWondering if Your Mercedes EIS is at Fault Here’s How to Tell
Wondering if Your Mercedes EIS is at Fault Here’s How to Tell
Vic Auto Collision & Repair
 
Ec330B Lc Excavator Volvo Service Repair.pdf
Ec330B Lc Excavator Volvo Service Repair.pdfEc330B Lc Excavator Volvo Service Repair.pdf
Ec330B Lc Excavator Volvo Service Repair.pdf
Excavator
 
Things to remember while upgrading the brakes of your car
Things to remember while upgrading the brakes of your carThings to remember while upgrading the brakes of your car
Things to remember while upgrading the brakes of your car
jennifermiller8137
 
Antique Plastic Traders Company Profile
Antique Plastic Traders Company ProfileAntique Plastic Traders Company Profile
Antique Plastic Traders Company Profile
Antique Plastic Traders
 
一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理
一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理
一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理
mymwpc
 
What Causes 'Trans Failsafe Prog' to Trigger in BMW X5
What Causes 'Trans Failsafe Prog' to Trigger in BMW X5What Causes 'Trans Failsafe Prog' to Trigger in BMW X5
What Causes 'Trans Failsafe Prog' to Trigger in BMW X5
European Service Center
 
What Exactly Is The Common Rail Direct Injection System & How Does It Work
What Exactly Is The Common Rail Direct Injection System & How Does It WorkWhat Exactly Is The Common Rail Direct Injection System & How Does It Work
What Exactly Is The Common Rail Direct Injection System & How Does It Work
Motor Cars International
 
What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...
What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...
What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...
Autohaus Service and Sales
 
Digital Fleet Management - Why Your Business Need It?
Digital Fleet Management - Why Your Business Need It?Digital Fleet Management - Why Your Business Need It?
Digital Fleet Management - Why Your Business Need It?
jennifermiller8137
 
一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理
一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理
一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理
eygkup
 

Recently uploaded (20)

gtyccccccccccccccccccccccccccccccccccccccccccccccccccccccc
gtycccccccccccccccccccccccccccccccccccccccccccccccccccccccgtyccccccccccccccccccccccccccccccccccccccccccccccccccccccc
gtyccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 
Why Is Your BMW X3 Hood Not Responding To Release Commands
Why Is Your BMW X3 Hood Not Responding To Release CommandsWhy Is Your BMW X3 Hood Not Responding To Release Commands
Why Is Your BMW X3 Hood Not Responding To Release Commands
 
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.docBài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
 
5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention
5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention
5 Warning Signs Your BMW's Intelligent Battery Sensor Needs Attention
 
Ec460b lc Excavator Volvo Service Repair.pdf
Ec460b lc Excavator Volvo Service Repair.pdfEc460b lc Excavator Volvo Service Repair.pdf
Ec460b lc Excavator Volvo Service Repair.pdf
 
What do the symbols on vehicle dashboard mean?
What do the symbols on vehicle dashboard mean?What do the symbols on vehicle dashboard mean?
What do the symbols on vehicle dashboard mean?
 
Statistics5,c.xz,c.;c.;d.c;d;ssssss.pptx
Statistics5,c.xz,c.;c.;d.c;d;ssssss.pptxStatistics5,c.xz,c.;c.;d.c;d;ssssss.pptx
Statistics5,c.xz,c.;c.;d.c;d;ssssss.pptx
 
欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】
欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】
欧洲杯比赛投注官网-欧洲杯比赛投注官网网站-欧洲杯比赛投注官网|【​网址​🎉ac123.net🎉​】
 
Empowering Limpopo Entrepreneurs Consulting SMEs.pptx
Empowering Limpopo Entrepreneurs  Consulting SMEs.pptxEmpowering Limpopo Entrepreneurs  Consulting SMEs.pptx
Empowering Limpopo Entrepreneurs Consulting SMEs.pptx
 
Why Isn't Your BMW X5's Comfort Access Functioning Properly Find Out Here
Why Isn't Your BMW X5's Comfort Access Functioning Properly Find Out HereWhy Isn't Your BMW X5's Comfort Access Functioning Properly Find Out Here
Why Isn't Your BMW X5's Comfort Access Functioning Properly Find Out Here
 
Wondering if Your Mercedes EIS is at Fault Here’s How to Tell
Wondering if Your Mercedes EIS is at Fault Here’s How to TellWondering if Your Mercedes EIS is at Fault Here’s How to Tell
Wondering if Your Mercedes EIS is at Fault Here’s How to Tell
 
Ec330B Lc Excavator Volvo Service Repair.pdf
Ec330B Lc Excavator Volvo Service Repair.pdfEc330B Lc Excavator Volvo Service Repair.pdf
Ec330B Lc Excavator Volvo Service Repair.pdf
 
Things to remember while upgrading the brakes of your car
Things to remember while upgrading the brakes of your carThings to remember while upgrading the brakes of your car
Things to remember while upgrading the brakes of your car
 
Antique Plastic Traders Company Profile
Antique Plastic Traders Company ProfileAntique Plastic Traders Company Profile
Antique Plastic Traders Company Profile
 
一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理
一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理
一比一原版(AUT毕业证)奥克兰理工大学毕业证成绩单如何办理
 
What Causes 'Trans Failsafe Prog' to Trigger in BMW X5
What Causes 'Trans Failsafe Prog' to Trigger in BMW X5What Causes 'Trans Failsafe Prog' to Trigger in BMW X5
What Causes 'Trans Failsafe Prog' to Trigger in BMW X5
 
What Exactly Is The Common Rail Direct Injection System & How Does It Work
What Exactly Is The Common Rail Direct Injection System & How Does It WorkWhat Exactly Is The Common Rail Direct Injection System & How Does It Work
What Exactly Is The Common Rail Direct Injection System & How Does It Work
 
What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...
What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...
What Does the PARKTRONIC Inoperative, See Owner's Manual Message Mean for You...
 
Digital Fleet Management - Why Your Business Need It?
Digital Fleet Management - Why Your Business Need It?Digital Fleet Management - Why Your Business Need It?
Digital Fleet Management - Why Your Business Need It?
 
一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理
一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理
一比一原版(AIS毕业证)奥克兰商学院毕业证成绩单如何办理
 

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)