DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Because the DevOps movement has redefined engineering responsibilities, SREs now have to become stewards of observability strategy.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Related

  • Java CI/CD: From Local Build to Jenkins Continuous Integration
  • Why Incorporate CI/CD Pipeline in Your SDLC?
  • Recipe To Implement the Jenkins Pipeline For MuleSoft Application [Videos]
  • DevOps Pipeline and Its Essential Tools

Trending

  • SaaS in an Enterprise - An Implementation Roadmap
  • Go 1.24+ Native FIPS Support for Easier Compliance
  • Creating a Web Project: Caching for Performance Optimization
  • Intro to RAG: Foundations of Retrieval Augmented Generation, Part 2
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. Continuous Delivery Using JFrog Artifactory With Shippable

Continuous Delivery Using JFrog Artifactory With Shippable

You can push your versioned package to Artifactory after CI with Shippable's recently added native integration with JFrog's Artifactory.

By 
Pavan Belagatti user avatar
Pavan Belagatti
DZone Core CORE ·
Updated Oct. 29, 19 · Tutorial
Likes (5)
Comment
Save
Tweet
Share
10.0K Views

Join the DZone community and get the full member experience.

Join For Free

Shippable recently added a native integration with JFrog's Artifactory. You can push your versioned package to Artifactory after CI as explained in this blog. From Artifactory, you can deploy the package to a test environment and then promote the package through various environments and finally to production. You can also pull dependencies from Artifactory as part of your CI and CD workflows on Shippable.

JFrog's Artifactory is one of the most advanced repository managers available today. It is open-source and especially popular with Java app developers and enterprises who want to self-host a repository manager for their projects. You can learn more about Artifactory here.

This blog continues from where the earlier blog, Pushing to JFrog Artifactory After CI, left off. It assumes that you have forked the sample project, set up CI, and pushed HelloWorld.war to your Artifactory account. This blog will deploy the WAR file to a beta environment running on a node cluster on Digital Ocean.

1. Enable Sample Project and Push WAR to Artifactory

Complete all steps in the Pushing to JFrog Artifactory After CI blog.

2. Create Virtual Machine(s)

Next, you should create one or more nodes on Amazon EC2, Digital Ocean, or wherever you prefer. You will deploy your application to this node(s). We chose Digital Ocean's droplets while creating this sample, but you can choose any IaaS. Our node had the following config:

  • Distribution: Ubuntu 16.04.1.

  • Size: $20/mo 2CPUs, 2GB RAM, 30GB SSD.

  • Block storage: None.

  • Datacenter region: Our servers are on the east coast, so we recommend you choose one close to that.

  • Additional Options: None.

  • SSH key: Add your machine's SSH key if you do not want to sign into the node with a password each time.

  • Choose number of droplets you want to deploy the application to and give names to each.

3. Install Tomcat 8 on Your Node(s)

Follow these instructions to install Tomcat 8 on all your nodes in the cluster. Please note that as of the time this blog was published, the latest version of Tomcat is 8.5.9, so you will need to use the right version in the curl statement of the instructions. 

4. Add a Node Cluster Integration to Shippable

You now need to add an integration for your nodes to your Shippable account so that your account has permissions to deploy to your nodes. To do this, follow instructions from the Add an account integration section of the node clusters integration page. Write down the integration name because it will be needed in the next step.

5. Edit the Pipeline Configuration

Your pipeline configuration is in the pipelines branch of your forked sample repository. You will need to make the following changes to the configuration.

Update shippable.resources.yml 

Update the cluster resource demo-war-test-cls with the integration name from the previous step.

  • Name: demo-war-test-cls.

  • Type: Cluster.

  • Integration: Your node cluster integration.

Update the demo-war resource that points to your WAR file on Artifactory. Also update the repository name if you pushed HelloWorld.war to a different repository from builds.

Name: demo-war .

Type: File.

Integration: Your node cluster integration.

Source name: Builds/HelloWorld.war (update the repository name if needed).

Version name: Initial.

Take a look at shippable.jobs.yml.  demo-war-manifest is a manifest job that creates a new manifest every time the WAR file on Artifactory is changed. demo-war-test-deploy is the deploy job that is triggered every time a new manifest is available. This job deploys the application to all nodes in your cluster.

7. Seed Your Pipeline

Next, you will need to add your pipeline config to your Shippable subscription. To do this, follow steps described in the Adding a seed repository section in our docs. Please make sure you select the pipelines branch while setting up your sync repository.

Connect Your CI to the Newly Created Pipeline

Now that you have seeded your pipeline, you should connect it to your CI. On completing this step, every code change to your sample application will trigger a deployment to the node cluster we set up in previous steps.

8. Create an API Token for Your Account

To do this, go to your account settings by clicking on the gear icon in the top navbar. Then, click on API tokens in the left sidebar menu and create a token. Copy the token because you won't be able to see it again.

9. Create an Event Trigger Integration

Go to Integrations in the left sidebar menu of Account Settings and then click on Add Integration. Select Event Trigger from the list and complete the settings as shown below. Please make sure you update the Authorization text box in the format apiToken <token-value>. The resource name should be set to the file resource demo-war. Save the integration.

Image title

10. Update  shippable.yml in the Master Branch of Your Forked Repository

Uncomment the notifications section and include the event trigger name you created in the earlier step.

Integration name: Your event trigger integration name.

Type: Webhook.

Payload: versionName=$BUILD_NUMBER .

 on_success: Always.

Commit and push to the master branch of your forked repository.

11. Run Your End-to-End Pipeline

This will automatically run a CI build for the forked repository. This will push a new version of HelloWorld.war to your Artifactory account. Your pipeline will now detect tha new WAR file version and trigger the manifest job demo-war-manifest. This will in turn trigger the deploy job demo-war-test-deploy.

Image title

12. Verify Your Deployed Application

Your application should be deployed to http://<your-node-url>:8080/HelloWorld if your pipeline deploy job finishes successfully.

Image title

Continuous Integration/Deployment Integration cluster Repository (version control) Pipeline (software) application

Published at DZone with permission of Pavan Belagatti, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Java CI/CD: From Local Build to Jenkins Continuous Integration
  • Why Incorporate CI/CD Pipeline in Your SDLC?
  • Recipe To Implement the Jenkins Pipeline For MuleSoft Application [Videos]
  • DevOps Pipeline and Its Essential Tools

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!