DEV Community

DeployHQ
DeployHQ

Posted on

Introduction to DeployHQ

DeployHQ is a powerful deployment service designed to streamline the process of deploying code from repositories to servers. It automates the traditionally manual and error-prone process of transferring files to a server, enabling developers to deploy their code efficiently and reliably. DeployHQ supports a variety of source control management (SCM) systems including Git, SVN, and Mercurial, allowing for seamless integration with popular platforms such as GitHub, Bitbucket, and GitLab.

By focusing on only the changed files, DeployHQ minimizes deployment times and reduces the risk of inconsistencies and errors. The service also offers a wide range of advanced features, such as build pipelines, SSH commands, and multiple integrations, to enhance the deployment workflow and ensure that deployments are smooth and hassle-free.

This article aims to provide an in-depth understanding of DeployHQ, guiding users through its features, setup processes, and advanced functionalities. Whether you are a beginner looking to streamline your deployment process or an experienced developer seeking to optimize your workflow, this article will cover everything you need to know about DeployHQ.

We will explore the core features of DeployHQ, including project and server management, deployment processes, advanced configurations, and integrations. Additionally, we will discuss security measures, account management, and the various tools available for developers. By the end of this article, you will have a comprehensive understanding of how to leverage DeployHQ to improve your deployment processes and overall development workflow.

Getting Started with DeployHQ

Signing Up

Getting started with DeployHQ is simple and straightforward. To begin, navigate to the DeployHQ pricing page and choose a package that fits your needs. Whether you opt for the free plan, which allows you to deploy one project, or one of the paid plans with a 10-day free trial, you can start without any immediate financial commitment.

Here's a step-by-step guide to signing up:

  1. Visit the Pricing Page: Select the package that best suits your requirements. All paid packages offer a 10-day free trial. A free tier for pet projects is also offered.

  2. Enter Your Email: Provide your email address to initiate the signup process.

  3. Create Your Account: Choose a password, enter your name, and provide your company or organization name. Click "Create your account" to complete the signup process.

Once your account is created, you can proceed to set up your first project and start exploring the features of DeployHQ.

Creating and Managing Your Profile

After signing up, the next step is to configure your profile settings. This can be done through the Settings tab located at the top of the DeployHQ interface. Here's how you can manage your profile:

  1. Navigate to Profile Settings: Go to the Settings tab and select Profile from the left-hand side menu.

  2. Update Personal Details: Here, you can update your first name, last name, and email address. If you need to change your email address, you will be directed to the single sign-on service, DeployHQ Identity.

  3. Configure Timezone: If you are working from a different location than where your account was set up, you can adjust the timezone settings to reflect your current location. This ensures that deployment logs and timestamps are accurate according to your local time.

DeployHQ Profile

By setting up your profile correctly, you ensure that all activities and logs within DeployHQ are personalized and correctly timestamped, making project management and deployment tracking more intuitive and organized.

Understanding DeployHQ Core Features

Key Benefits

DeployHQ offers several key benefits that make it an essential tool for developers looking to streamline their deployment processes:

  1. Automated Deployments: DeployHQ automates the deployment process, saving time and reducing the likelihood of errors associated with manual deployments. This ensures that your code changes are deployed efficiently and consistently.

  2. Zero Downtime Deployments: With DeployHQ, you can perform zero downtime deployments (also known as atomic deployments). This means that all changes are prepared on the server and made live simultaneously, eliminating inconsistencies and ensuring a seamless update experience.

  3. Build Pipelines: DeployHQ allows you to define custom build commands that run before, during, and after deployments. This feature supports various programming languages and tools, enabling you to automate complex build processes and ensure your code is production-ready.

  4. Multiple Integrations: DeployHQ integrates with numerous tools and platforms such as Slack, GitHub, Bitbucket, and more. These integrations help streamline your workflow by automating notifications, invalidating caches, and reporting to monitoring services.

  5. Robust Security: DeployHQ provides robust security features, including two-factor authentication (2FA) and IP restrictions. These measures help protect your account and ensure that only authorized users can access your deployment settings.

  6. Ease of Use: The intuitive interface and comprehensive documentation make DeployHQ easy to set up and use, even for developers who are new to deployment automation.

  7. Flexibility: DeployHQ supports a wide range of server types, including FTP, SFTP, AWS S3, and more. This flexibility allows you to deploy to almost any environment, regardless of the hosting platform or server protocol.

By leveraging these features, DeployHQ helps development teams achieve faster release cycles, improve software quality, and enhance collaboration, ultimately leading to more efficient and reliable software delivery.

Projects in DeployHQ

Creating a Project

Creating a project in DeployHQ is a straightforward process that involves linking your code repository and configuring your deployment settings. Here are the steps to create a new project:

  1. Navigate to the Projects Tab: Go to the Projects tab at the top of the DeployHQ interface and click on "New Project" on the right-hand side of the page.

  2. Enter Project Details: Provide a name for your project and choose from one of the supported SCMs (such as GitHub, Bitbucket, GitLab, or manually entering repository details). If you choose a supported SCM, you can also add an automatic deployment hook directly to the repository.

  3. Select Deployment Zone: Choose from a series of geographic zones where your project will be hosted. This determines the server location from which your deployments will originate.

DeployHQ Project

  1. Configure Advanced Options: Under the advanced options, select the type of SSH key generated for your project upon creation. The default is ED25519, but you can choose RSA if needed.

DeployHQ Advanced Options

  1. Finish Setup: Once all details are entered, finalize the setup to create your project.

DeployHQ offers detailed guides for adding repositories from different hosting services, ensuring you can connect your project regardless of where your code is stored.

Managing and Updating Projects

Managing and updating projects in DeployHQ ensures that your deployments are efficient and up-to-date. Here’s how you can manage your existing projects:

  1. Access Project Settings: Navigate to the Configuration link under Repository on the left-hand side of your project’s page. This section displays the current repository settings.

DeployHQ Repository Settings

  1. Update Repository Details: To change the repository linked to your project, click "Change Repository." You’ll be presented with similar options to those during the initial project setup, allowing you to connect via OAuth or manually edit your repository details.

DeployHQ Project Settings

  1. Manual Repository Update: If updating manually, check the box to "Add your repository details manually." Enter the new repository URL and ensure the project’s public key is uploaded to the new repository. This is necessary for SSH connections.

DeployHQ New Repository

  1. Reconfigure SSH Keys: Upload a custom SSH key pair if needed. Generate an SSH key locally and upload it through the project’s configuration page.

DeployHQ Upload SSH Key

  1. Recache Repository: After updating the repository details, recache the repository to reflect the changes and ensure smooth deployments.

DeployHQ Recache Repository

  1. Deploy from Updated Repository: Ensure you deploy from the correct revisions by selecting the appropriate commit range or opting to deploy the entire repository from scratch if necessary.

DeployHQ provides a robust set of tools for managing your projects, including detailed documentation on handling common issues, configuring variables, and optimizing deployment settings. By keeping your projects well-managed and updated, you ensure that your deployments are efficient, secure, and reliable.

Servers in DeployHQ

Adding and Configuring Servers

One of the core components of DeployHQ is the server, where your code is deployed. You can add and configure as many servers as needed for a project. Here’s how to add and configure a server in DeployHQ:

  1. Navigate to the Servers & Groups Page: Within your project, go to the Servers & Groups page and click on the "New Server" button on the right-hand side.

  2. Enter Server Details: Provide a name for your server to identify it easily. Optionally, choose a server group if you are organizing servers into groups.

  3. Select Connection Protocol: Choose the protocol to connect to your server, and add your server details, matching the protocol you’ve chosen. DeployHQ supports several protocols, including:

  • SSH/SFTP: For secure file transfers.

  • FTP/FTPS: For standard and secure file transfers.

  • Amazon S3: For deploying to AWS S3 buckets.

  • Rackspace Cloud Files: For deploying to Rackspace Cloud.

  • Shopify: For deploying to Shopify stores.

DeployHQ New Server

  1. Configure Deployment Path: Enter the deployment path, which is the directory on the server where your code will be uploaded (e.g., public_html/).

DeployHQ SSH Settings

  1. Finalize Server Setup: Once all details are entered, click "Create Server." DeployHQ will verify the connection and add the server to your project.

For advanced configurations, you can set additional parameters such as environment variables, custom SSH keys, and specific deployment commands to tailor the deployment process to your needs.

Grouping Servers

DeployHQ allows you to group servers to manage deployments across multiple environments more efficiently. Grouping servers can be useful for deploying the same code to different environments, such as development, staging, and production. Here’s how to group servers:

  1. Create a Server Group: Navigate to the Servers & Groups page in your project and click "New Group."

  2. Name the Group: Provide a name for your server group to easily identify it.

  3. Add Servers to the Group: Select the servers you want to include in this group. You can add as many servers as necessary.

  4. Configure Group Settings: Set the deployment settings for the entire group, such as deployment order, environment variables, and any specific commands that need to run before or after deployment.

DeployHQ New Server Group

By grouping servers, you can streamline your deployment process, ensuring that all servers in a group receive the same code updates simultaneously. This feature is particularly beneficial for maintaining consistency across different environments and simplifying the management of complex deployment workflows.

DeployHQ offers comprehensive documentation to assist with adding, configuring, and grouping servers, ensuring that you can set up your deployment environments efficiently and effectively.

Deployments

Starting a Deployment

DeployHQ simplifies the deployment process, allowing you to deploy your code with just a few clicks. Here’s how to start a deployment:

  1. Navigate to Your Project: Go to the project you wish to deploy.

  2. Click on Deploy: In the project dashboard, click the "New Deployment" button. This will take you to the deployment configuration page.

DeployHQ Deployments

  1. Review Deployment Settings: Review the deployment settings, including the branch to deploy from, the servers to deploy to, and any custom commands to run before or after deployment.

  2. Start the Deployment: Once you have reviewed and confirmed the settings, click the "Deploy" button. DeployHQ will begin transferring the necessary files and executing any specified commands.

DeployHQ New Deployment

You can monitor the progress in real-time and view detailed logs to ensure everything runs smoothly.

Automatic and Scheduled Deployments

DeployHQ supports both automatic and scheduled deployments to help streamline your continuous integration and continuous delivery (CI/CD) pipeline.

Automatic Deployments:

  1. Set Up Webhooks: Automatic deployments can be triggered by setting up webhooks in your repository hosting service (GitHub, Bitbucket, GitLab, etc.).

  2. Configure Trigger Events: Specify the events that should trigger a deployment, such as code pushes to a specific branch.

  3. Enable Automatic Deployment: In the project settings, enable automatic deployment and link it to the appropriate webhook. DeployHQ will automatically deploy your code whenever the specified event occurs.

DeployHQ Automatic Deployments

Scheduled Deployments:

  1. Access Deployment Schedules: Go to the project’s deployment settings and find the scheduling options.

  2. Set Deployment Time: Choose the date and time for the deployment to occur. You can set recurring schedules for regular deployments.

  3. Confirm Schedule: Save the schedule. DeployHQ will automatically deploy your code at the specified times.

DeployHQ New Deployment

These features ensure that your code is deployed consistently and at the right times, reducing the need for manual intervention.

Rolling Back a Deployment

If something goes wrong with a deployment, DeployHQ makes it easy to roll back to a previous state. Here’s how to roll back a deployment:

  1. Navigate to Deployment History: Go to the project’s deployment history page.

  2. Select the Previous Deployment: Find the previous deployment that you want to roll back to and click on it.

  3. Initiate Rollback: Click the "Rollback to this deployment" button. DeployHQ will revert the code to the state it was in at the time of the selected deployment.

DeployHQ Rollback

This feature ensures that you can quickly recover from any issues and maintain the stability of your application.

Atomic Deployments

DeployHQ supports zero downtime deployments, also known as atomic deployments, ensuring that all changes go live simultaneously without disrupting the live environment. Here’s how atomic deployments work:

  1. Prepare Changes in a Staging Directory: DeployHQ uploads all changes to a temporary staging directory on your server.

  2. Synchronize Changes: Once all changes are uploaded and verified, the staging directory is swapped with the live directory in a single atomic operation.

  3. Ensure Consistency: This method ensures that all changes are applied at once, eliminating inconsistencies and ensuring a smooth update process.

Atomic deployments are particularly useful for high-traffic websites and applications where downtime can lead to significant disruptions and losses.

DeployHQ provides comprehensive documentation and support to help you configure and manage your deployments, ensuring that your deployment processes are efficient, reliable, and secure.

Advanced Features and Integrations

Config Files

DeployHQ allows you to manage configuration files outside of your repository, providing flexibility and security. Configuration files can be used to manage settings and secrets without including them directly in your source code. Here’s how to set up and use config files in DeployHQ:

  1. Navigate to Config Files: Within your project settings, go to the Config Files section.

  2. Add a Config File: Click "New Config File" and provide a name and path for the file. Enter the content of the config file directly in the provided editor.

  3. Use Variables: DeployHQ supports the use of variables within config files. These variables can dynamically adjust configurations based on the deployment environment (e.g., %environment%, %branch%).

DeployHQ New Config File

Using config files helps keep sensitive information secure and allows you to manage different configurations for different environments seamlessly.

SSH Commands

DeployHQ allows you to run SSH commands before, during, and after deployments to automate tasks and customize your deployment process. Here’s how to set up SSH commands:

  1. Navigate to SSH Commands: Within your project settings, go to the SSH Commands section.

  2. Add Commands: You can add pre-deployment, post-deployment, and on-deploy SSH commands. Specify the command to run and the conditions under which it should execute.

  3. Order and Conditions: Organize your commands and set specific conditions, such as running a command only if the previous step succeeds or fails.

DeployHQ SSH Commands

SSH commands can be used for tasks like setting up the environment, running migrations, or cleaning up after deployments, making your deployment process more robust and automated.

Build Pipelines

DeployHQ supports custom build pipelines, allowing you to define a series of commands that run during deployments. This feature is crucial for preparing your code for production. Here’s how to configure build pipelines:

  1. Access Build Pipelines: Go to the Build Pipelines section within your project settings.

  2. Add Build Commands: Define commands to run at different stages of the deployment. These can include tasks like installing dependencies, compiling assets, and running tests.

  3. Language and Tool Support: DeployHQ supports various programming languages and tools, enabling you to use the appropriate versions of PHP, Node, Ruby, Python, Java, .NET, and more.

DeployHQ Build Pipeline

Build pipelines ensure that your code is production-ready by automating the necessary build steps, reducing manual intervention and errors.

Integrations

DeployHQ integrates seamlessly with various tools and services to enhance your deployment workflow. Here are some key integrations:

  1. Slack: Send notifications to Slack channels when deployments start, succeed, or fail. This keeps your team informed in real-time.

  2. GitHub: Automatically deploy code from your GitHub repositories. Webhooks can trigger deployments upon code pushes.

  3. Bitbucket: Similar to GitHub, integrate your Bitbucket repositories for seamless deployments.

  4. Cloudflare: Purge caches automatically after deployments to ensure that your users receive the latest updates.

  5. New Relic: Report new deployments to New Relic to monitor application performance and track errors.

DeployHQ New Integration

Integrations with these tools streamline your workflow, improve communication, and ensure that your deployments are well-coordinated and efficient.

Notifications

DeployHQ offers robust notification options to keep you updated on your deployment status. Here’s how to configure notifications:

  1. Access Notifications Settings: Within your project settings, go to the Notifications section.

  2. Add Notification Channels: Choose from various channels such as email, Slack, and webhooks. Configure the conditions under which notifications should be sent (e.g., deployment start, success, failure).

  3. Customize Messages: Customize the notification messages to include relevant details about the deployment, such as the commit range, deployer, and environment.

Notifications ensure that you and your team are always aware of the status of your deployments, enabling quick responses to any issues that arise.

By leveraging these advanced features and integrations, DeployHQ empowers you to automate and optimize your deployment processes, ensuring efficient and reliable software delivery.

Security and Account Management

Managing Security Settings

DeployHQ provides robust security settings to ensure your account and deployments are protected. Here’s how to manage your security settings:

  1. Navigate to Security Settings: Go to the Settings tab at the top of the DeployHQ interface and select Security from the left-hand side menu.

  2. Monitor Active Sessions: You can view and manage active browser sessions. Each session displays the associated IP address and a logout button to revoke access if needed.

  3. Manage API Keys: DeployHQ allows you to create and manage personal API keys for integrating with its API. You can create a new API key by entering a description and clicking Create API Key. Make sure to note the key as it will be displayed only once.

These settings help you maintain control over who has access to your account and ensure secure integration with other services.

Setting Up Two-Factor Authentication (2FA)

Enhance the security of your DeployHQ account by setting up two-factor authentication (2FA). Here’s how to do it:

  1. Access aTech Identity: Head to DeployHQ Identity and log in with your DeployHQ account details.

  2. Enable 2FA: Navigate to Two Factor Authentication under Security Settings.

  3. Set Up an Authenticator App: Download an appropriate 2FA app (such as Google Authenticator) on your mobile device. Scan the QR code provided on the page to link your account.

  4. Activate 2FA: Enter the 6-digit code generated by the app and click Activate. Make sure to note the recovery token provided, as this will be required to reset your account if you lose access to your 2FA device.

DeployHQ 2FA

Deployment Restrictions and Availability

DeployHQ allows you to set deployment restrictions to control when deployments can occur, ensuring they happen only during appropriate times. Here’s how to configure deployment restrictions:

  1. Access Deployment Availability Settings: Go to the Settings tab and select Deployment Availability from the left-hand side menu.

  2. Set Deployment Times: You will see a list of weekdays from Monday to Sunday. Use the sliders to adjust the available times for each day. You can restrict deployments entirely on specific days by dragging the sliders to the ends.

  3. Save Changes: Save your settings to apply the restrictions. During restricted times, only administrators will be able to make new deployments, and they will receive a warning. Standard users and automatic deployments will be prevented from deploying.

DeployHQ Deployment Availability

By configuring deployment restrictions, you can ensure that deployments are managed effectively and avoid unintended changes during off-hours or critical periods.

DeployHQ’s security and account management features provide comprehensive tools to protect your account and manage deployment activities, ensuring a secure and controlled environment for your projects.

Developer Tools

API Documentation

DeployHQ provides a comprehensive API that allows you to automate and integrate deployment processes into your development workflow. Here’s how to leverage the API:

  1. Access the API Documentation: The full API documentation is available on the DeployHQ website, detailing all available endpoints and their uses. This documentation includes examples and guidelines for making requests and handling responses.

  2. Authentication: To use the API, you need an API key, which can be generated in the Security section of your account settings. Each request must include this key for authentication.

  3. Available Endpoints: The API supports various endpoints for managing projects, servers, deployments, and more. For example:

  • Projects: Create, update, list, and delete projects.

  • Servers: Add, update, and manage servers within a project.

  • Deployments: Initiate, monitor, and manage deployments.

Using the API, you can integrate DeployHQ with other tools and services, automate routine tasks, and

The DeployHQ CLI

In addition to the web interface, DeployHQ offers a Ruby-based command line tool (CLI) for interacting with your projects. This CLI allows you to manage deployments directly from your terminal, providing flexibility and automation for your deployment processes. Below are the details for setting up and using the DeployHQ CLI.

Installation

To use the DeployHQ CLI, you need Ruby installed on your system. The CLI has been tested on Ruby 2.7.8 and later versions. You can install the DeployHQ CLI globally by running the following command in your terminal:

gem install deployhq

Configuration

Once installed, you need to configure the CLI to connect it to your DeployHQ projects. This involves creating a Deployfile in your project directory that contains your account details. Follow these steps:

Navigate to Your Project Directory:

cd /path/to/project

  1. Run the Configuration Command:

deployhq configure

  1. You will be prompted to enter the following information:
  • Account Domain: For example, https://atech.deployhq.com.

  • Username or E-mail Address: Your DeployHQ username or email, e.g., adamw.

  • API Key: Your API key, which you can find in Settings -> Security in DeployHQ.

  • Default Project: Use the permalink from the web URL of your project, e.g., my-project-permalink.

  1. After completing these steps, a file named Deployfile will be created in your current directory. This file contains your account URL, project permalink, username, and API key in JSON format. Note: It is recommended that each team member creates their own Deployfile since the username and API key are specific to each user.

Usage

The DeployHQ CLI currently offers functionality to list servers associated with a project and initiate deployments. Here's how you can use these features:

List Servers:

To list all servers configured for a project, use the following command:

deployhq servers

This command will output information about the servers, such as:

Ungrouped Servers

Name : Test
Type : SSH/SFTP
Path : /home/user/project
Branch : master
Current Revision : baa7690059283c6e2e3d21fd0149f12b318175dd
Hostname : localhost:22
Enter fullscreen mode Exit fullscreen mode

Make a Deployment:

To initiate a deployment to the most recent revision of a repository, run:

deployhq deploy

You will be prompted to choose a server or group to deploy to:

  1. Test (branch: master) (currently: baa7690059283c6e2e3d21fd0149f12b318175dd)

  2. List Server Details

Please choose a server or group to deploy to:

  • After selecting a server, the CLI performs pre-deployment checks, including:

  • Checking access to the repository

  • Validating start and end revisions

  • Establishing a connection to the server

Once these checks are complete, the deployment process will begin, and you will receive a confirmation upon successful completion:

Deployment has finished successfully!

Development

The DeployHQ CLI is currently in an experimental stage and continues to evolve. Contributions are welcome, and developers are encouraged to submit pull requests to improve the CLI's functionality and address any issues.

By utilizing the DeployHQ CLI, developers can streamline their deployment workflows, automate routine tasks, and integrate deployments seamlessly into their CI/CD pipelines. This enhances efficiency and ensures consistent deployment practices across development environments.

Discounts and Special Offers

DeployHQ is committed to supporting the development community, especially those at the beginning of their careers, open-source projects, and non-profit organizations. Here are some of the special offers available:

  1. Open Source Projects:
  • DeployHQ offers free accounts for open source projects. Maintainers can contact DeployHQ with project details to avail this offer.
  1. Students:
  • Students enrolled in school or a bootcamp can get a 50% discount on any plan. This helps budding developers to learn and implement deployment processes without financial burden.
  1. Non-Profit Organizations:
  • Non-profit organizations that work towards making the world a better place can avail discounts on DeployHQ plans. This ensures that such organizations can benefit from automated deployments without straining their budgets.

To learn more about these discounts and offers, users can sign up for a free trial and reach out to DeployHQ support.

DeployHQ’s flexible pricing and special offers ensure that developers and organizations of all sizes and types can leverage powerful deployment automation tools, enhancing their development workflows and productivity.

Conclusion

DeployHQ offers a comprehensive solution for automating and managing code deployments, making it an invaluable tool for developers and organizations aiming to streamline their deployment processes. By providing robust features such as automated deployments, build pipelines, SSH commands, and extensive integrations, DeployHQ ensures that your code is deployed efficiently, reliably, and securely.

The platform’s flexible pricing plans and special offers for students, non-profits, and open-source projects make it accessible to a wide range of users, from individual developers to large enterprises. With its intuitive interface and extensive documentation, getting started with DeployHQ is straightforward, allowing you to focus on building and improving your applications rather than managing deployments manually.

Whether you are new to deployment automation or looking to optimize your existing processes, DeployHQ provides the tools and support you need to achieve your goals. Embrace the power of automated deployments and enhance your development workflow with DeployHQ.

With the complete structure and content provided, this article offers a detailed look at DeployHQ's features and benefits, guiding users through its setup and advanced functionalities. If you need any more information or further customization, feel free to ask!

Top comments (0)