From 54277fee084cf016d1a789ceecca89486d6deac8 Mon Sep 17 00:00:00 2001 From: Shelley Benhoff Date: Mon, 7 Oct 2024 14:18:48 -0400 Subject: [PATCH] Added Testcontainers Learning Path Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- .../testcontainers-cloud-learning-path.png | Bin 0 -> 53900 bytes content/guides/testcontainers-cloud/_index.md | 50 ++++++++++++++++++ .../testcontainers-cloud/common-questions.md | 43 +++++++++++++++ .../guides/testcontainers-cloud/demo-ci.md | 23 ++++++++ .../guides/testcontainers-cloud/demo-local.md | 19 +++++++ content/guides/testcontainers-cloud/why.md | 18 +++++++ 6 files changed, 153 insertions(+) create mode 100644 assets/images/learning-paths/testcontainers-cloud-learning-path.png create mode 100644 content/guides/testcontainers-cloud/_index.md create mode 100644 content/guides/testcontainers-cloud/common-questions.md create mode 100644 content/guides/testcontainers-cloud/demo-ci.md create mode 100644 content/guides/testcontainers-cloud/demo-local.md create mode 100644 content/guides/testcontainers-cloud/why.md diff --git a/assets/images/learning-paths/testcontainers-cloud-learning-path.png b/assets/images/learning-paths/testcontainers-cloud-learning-path.png new file mode 100644 index 0000000000000000000000000000000000000000..80322e3284550b44a59948eb05241265161c6ae6 GIT binary patch literal 53900 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 FV1iKm_Wu9? literal 0 HcmV?d00001 diff --git a/content/guides/testcontainers-cloud/_index.md b/content/guides/testcontainers-cloud/_index.md new file mode 100644 index 00000000000..e1771ed3742 --- /dev/null +++ b/content/guides/testcontainers-cloud/_index.md @@ -0,0 +1,50 @@ +--- +title: | + Mastering Testcontainers Cloud by Docker: streamlining integration testing with containers +linkTitle: Testcontainers Cloud by Docker +summary: | + Automate, scale, and optimize testing workflows with Testcontainers Cloud +description: | + Testcontainers Cloud by Docker streamlines integration testing by offloading container management to the cloud. It enables faster, consistent tests for containerized services like databases, improving performance and scalability in CI/CD pipelines without straining local or CI resources. Ideal for developers needing efficient, reliable testing environments. +levels: [Beginner] +products: [testcontainers] +params: + featured: true + image: images/learning-paths/testcontainers-cloud-learning-path.png + time: 12 minutes + resource_links: + - title: Testcontainers Guides + url: https://testcontainers.com/guides + - title: Testcontainers Best Practices + url: https://www.docker.com/blog/testcontainers-best-practices/ + - title: Simple local development with Testcontainers Desktop + url: https://testcontainers.com/guides/simple-local-development-with-testcontainers-desktop/ + - title: Streamlining Local Development with Dev Containers and Testcontainers Cloud + url: https://www.docker.com/blog/streamlining-local-development-with-dev-containers-and-testcontainers-cloud/ + - title: Running Testcontainers Tests Using GitHub Actions and Testcontainers Cloud + url: https://www.docker.com/blog/running-testcontainers-tests-using-github-actions/ + - title: Testcontainers Cloud on the Docker Blog + url: https://www.docker.com/search/?_sf_s=testcontainers%20cloud +--- + +Testcontainers Cloud is a cloud-based solution designed to streamline and enhance the process of running integration tests using Testcontainers. Testcontainers is the open source framework, which allows developers to easily spin up containerized dependencies such as databases, message brokers, and other services required for testing. By shifting the management of Testcontainers-based services to the cloud, Testcontainers Cloud optimizes performance, reduces resource constraints on local machines or CI servers, and ensures consistent test environments. This solution is particularly beneficial for teams working on complex, distributed systems, as it allows for scalable, isolated, and reliable testing without the typical overhead of managing containers locally. + +## What you'll learn + +- Understand the fundamentals of Docker Testcontainers Cloud and its role in integration testing. +- Learn how to set up and configure Docker Testcontainers Cloud for automated testing in various environments. +- Explore how Testcontainers Cloud integrates with CI/CD pipelines to streamline testing workflows. + + +## Tools integration + +Works well with Docker Desktop, GitHub Actions, Jenkins, Kubernetes, and other CI solutions + +Docker Pro, Team, and Business subscriptions come with Testcontainers Cloud runtime minutes, and additional minutes are available via consumption pricing. + +## Who’s this for? + +- Teams that build cloud-native applications and are already using Testcontainers open source. +- DevOps Teams that integrate automated container-based testing into CI/CD pipelines for continuous testing. +- QA Teams that seek scalable and consistent test environments for comprehensive integration and end-to-end testing. +- Developers who need reliable, containerized test environments for testing microservices and databases. diff --git a/content/guides/testcontainers-cloud/common-questions.md b/content/guides/testcontainers-cloud/common-questions.md new file mode 100644 index 00000000000..4a0cbab4f59 --- /dev/null +++ b/content/guides/testcontainers-cloud/common-questions.md @@ -0,0 +1,43 @@ +--- +title: Common challenges and questions +description: Explore common challenges and questions related to Testcontainers Cloud by Docker. +weight: 40 +--- + + + +### How is Testcontainers Cloud different from the open-source Testcontainers framework? + +While the open-source Testcontainers is a library that provides a lightweight APIs for bootstrapping local development and test dependencies with real services wrapped in Docker containers, Testcontainers Cloud provides a cloud runtime for these containers. This reduces the resource strain on local environments and provides more scalability, especially in CI/CD workflows, that enables consistent Testcontainers experience across the organization. + +### What types of containers can I run with Testcontainers Cloud? + +Testcontainers Cloud supports any containers you would typically use with the Testcontainers framework, including databases (PostgreSQL, MySQL, MongoDB), message brokers (Kafka, RabbitMQ), and other services required for integration testing. + +### Do I need to change my existing test code to use Testcontainers Cloud? + +No, you don't need to change your existing test code. Testcontainers Cloud integrates seamlessly with the open-source Testcontainers framework. Once the cloud configuration is set up, it automatically manages the containers in the cloud without requiring code changes. + +### How do I integrate Testcontainers Cloud into my project? + +To integrate Testcontainers Cloud, you need to install the Testcontainers Desktop app and select run with Testcontainers Cloud option in the menu. In CI you’ll need to add a workflow step that downloads Testcontainers Cloud agent. No code changes are required beyond enabling Cloud runtime via the Testcontainers Desktop app locally or installing Testcontainers Cloud agent in CI. + +### Can I use Testcontainers Cloud in a CI/CD pipeline? + +Yes, Testcontainers Cloud is designed to work efficiently in CI/CD pipelines. It helps reduce build times and resource bottlenecks by offloading containers that you spin up with Testcontainers library to the cloud, making it a perfect fit for continuous testing environments. + +### What are the benefits of using Testcontainers Cloud? + +The key benefits include reduced resource usage on local machines and CI servers, scalability (run more containers without performance degradation), consistent testing environments, centralized monitoring, ease of CI configuration with removed security concerns of running Docker-in-Docker or a privileged daemon. + +### Does Testcontainers Cloud support all programming languages? + +Testcontainers Cloud supports any language that works with the open-source Testcontainers libraries, including Java, Python, Node.js, Go, and others. As long as your project uses Testcontainers, it can be offloaded to Testcontainers Cloud. + +### How is container cleanup handled in Testcontainers Cloud? + +While Testcontainers library automatically handles container lifecycle management, Testcontainers Cloud manages the allocated cloud worker lifetime. This means that containers are spun up, monitored, and cleaned up after tests are completed by Testcontainers library, and the worker where these containers have being running will be removed automatically after the ~35 min idle period by Testcontainers Cloud. This approach frees developers from manually managing containers and assosiated cloud resources. + +### Is there a free tier or pricing model for Testcontainers Cloud? + +Pricing details for Testcontainers Cloud can be found on the [pricing page](https://testcontainers.com/cloud/pricing/). diff --git a/content/guides/testcontainers-cloud/demo-ci.md b/content/guides/testcontainers-cloud/demo-ci.md new file mode 100644 index 00000000000..5aaa10adc7b --- /dev/null +++ b/content/guides/testcontainers-cloud/demo-ci.md @@ -0,0 +1,23 @@ +--- +title: Configuring Testcontainers Cloud in the CI Pipeline +description: Use Testcontainers Cloud with GitHub Workflows to automate testing in a CI pipeline. +weight: 30 +--- + +{{< youtube-embed "https://youtu.be/NlZY9aumKJU" >}} + +This demo shows how Testcontainers Cloud can be seamlessly integrated into a +Continuous Integration (CI) pipeline using GitHub Workflows, providing a +powerful solution for running containerized integration tests without +overloading local or CI runner resources. By leveraging GitHub Actions, +developers can automate the process of spinning up and managing containers for +testing in the cloud, ensuring faster and more reliable test execution. With +just a few configuration steps, including setting up Testcontainers Cloud +authentication and adding it to your workflow, you can offload container +orchestration to the cloud. This approach improves the scalability of your +pipeline, ensures consistency across tests, and simplifies resource management, +making it an ideal solution for modern, containerized development workflows. + +- Understand how to set up a GitHub Actions workflow to automate the build and testing of a project. +- Learn how to configure Testcontainers Cloud within GitHub Actions to offload containerized testing to the cloud, improving efficiency and resource management. +- Explore how Testcontainers Cloud integrates with GitHub workflows to run integration tests that require containerized services, such as databases and message brokers. diff --git a/content/guides/testcontainers-cloud/demo-local.md b/content/guides/testcontainers-cloud/demo-local.md new file mode 100644 index 00000000000..fd6190fd002 --- /dev/null +++ b/content/guides/testcontainers-cloud/demo-local.md @@ -0,0 +1,19 @@ +--- +title: Setting up Testcontainers Cloud by Docker +description: Set up Testcontainers Cloud by Docker in a local development environment. +weight: 20 +--- + +{{< youtube-embed "https://youtu.be/7c3xLAG560U" >}} + +This demo shows the process of setting up Testcontainers Cloud by Docker to +work in your local development environment using the Testcontainers Desktop +application. By the end of this walkthrough, you'll have Testcontainers Cloud +by Docker up and running, ready to offload container management from your local +machine to the cloud for more efficient testing. + +- Install and configure Testcontainers Cloud and the CLI to seamlessly integrate with your local development environment. +- Set up and configure the Testcontainers Desktop application to monitor and manage cloud-based containers during local tests. +- Create and run integration tests using Testcontainers that leverage cloud-based container resources. +- Monitor and manage containers efficiently, understanding how Testcontainers Cloud automates cleanup and ensures consistent testing environments. +- Review options for monitoring and troubleshooting in the Testcontainers Cloud Dashboard. diff --git a/content/guides/testcontainers-cloud/why.md b/content/guides/testcontainers-cloud/why.md new file mode 100644 index 00000000000..8277a6980cb --- /dev/null +++ b/content/guides/testcontainers-cloud/why.md @@ -0,0 +1,18 @@ +--- +title: Why Testcontainers Cloud? +description: Learn how Testcontainers Cloud by Docker can help you optimize integration testing. +weight: 10 +--- + +{{< youtube-embed "https://youtu.be/6dRRlk5Vd0E" >}} + +Testcontainers Cloud is a powerful cloud-based solution designed to optimize integration testing with Testcontainers by offloading container management to the cloud. It helps developers and teams overcome the limitations of traditional local and CI-based testing, ensuring consistent environments, faster test execution, and scalable workflows. Whether you're new to Testcontainers or looking to enhance your existing setup, Testcontainers Cloud offers a seamless way to manage containerized tests, improving efficiency and reliability in your development pipeline. + +Testcontainers Cloud provides several benefits: + +- **Offloading to the Cloud:** Frees up local resources by shifting container management to the cloud, keeping your laptop responsive. +- **Consistent Testing Environments:** Ensures that tests run in isolated, reliable environments, reducing inconsistencies across platforms from Dev to CI. +- **Scalability:** Allows running large numbers of containers simultaneously without being limited by local or CI resources. +- **Faster CI/CD Pipelines:** Reduces configuration bottlenecks and speeds up build times by offloading containers to multiple on-demand cloud workers with the Turbo-mode feature. + +Testcontainers Cloud streamlines integration testing by offloading container management to the cloud, ensuring consistent environments and faster test execution resulting in reduced resource strain, making it an essential tool for improving the stability of your Testcontainers-based workflows.