<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Philippe Oliveira</title>
    <description>The latest articles on DEV Community by Philippe Oliveira (@aquinoit).</description>
    <link>https://dev.to/aquinoit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1495201%2F37853f9b-a941-44d7-b76b-3c008aebb211.png</url>
      <title>DEV Community: Philippe Oliveira</title>
      <link>https://dev.to/aquinoit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aquinoit"/>
    <language>en</language>
    <item>
      <title>GitHub Actions + Galaxy: Zero-Downtime Deploy CI/CD</title>
      <dc:creator>Philippe Oliveira</dc:creator>
      <pubDate>Fri, 22 Aug 2025 14:55:43 +0000</pubDate>
      <link>https://dev.to/meteor/github-actions-galaxy-zero-downtime-deploy-cicd-complete-guide-42j0</link>
      <guid>https://dev.to/meteor/github-actions-galaxy-zero-downtime-deploy-cicd-complete-guide-42j0</guid>
      <description>&lt;p&gt;I recently set up a zero-downtime deploy pipeline for my Meteor app using GitHub Actions and Galaxy and honestly, it was way simpler than I expected.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk you through how I did it step by step. You’ll have a fully working push-to-deploy setup in minutes using secrets for safety, pinned Meteor versions for consistency, and Galaxy’s infrastructure for smooth deploys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Galaxy&lt;/strong&gt; is Meteor’s official cloud hosting platform designed for simple, reliable deployments with integrated monitoring.  &lt;/p&gt;

&lt;p&gt;Today, beyond Meteor, Galaxy also supports &lt;strong&gt;Node.js&lt;/strong&gt;, &lt;strong&gt;Python&lt;/strong&gt;, and databases like &lt;strong&gt;MongoDB&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://galaxycloud.app" rel="noopener noreferrer"&gt;Learn more here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What we’re building
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A GitHub Actions workflow that deploys your Meteor app to Galaxy automatically on every &lt;code&gt;main&lt;/code&gt; push&lt;/li&gt;
&lt;li&gt;Secure configuration using GitHub Secrets (no plain text credentials in the repo)&lt;/li&gt;
&lt;li&gt;Reliable, reproducible builds with a pinned Meteor release for consistency&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ Why CI/CD with Actions helps
&lt;/h2&gt;

&lt;p&gt;If you’ve ever deployed Meteor locally, you know how resource-hungry the build process can be high CPU load, memory spikes, and your laptop fans going full throttle.&lt;/p&gt;

&lt;p&gt;Running this through &lt;strong&gt;GitHub Actions&lt;/strong&gt; takes that pain away:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Builds run entirely on GitHub’s hosted runners (Ubuntu VMs).&lt;/li&gt;
&lt;li&gt;Your machine stays free for real work no waiting around for Meteor to compile.&lt;/li&gt;
&lt;li&gt;Every run happens in a clean, isolated environment, so you avoid “works on my machine” problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: faster, more consistent deploys, no local slowdowns, and zero babysitting during the build.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Useful links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.galaxycloud.app/en/article/deploy-a-new-meteor-app-using-the-cli-1vzo6do/" rel="noopener noreferrer"&gt;Galaxy CLI deploy docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.galaxycloud.app/en/article/regions-meteor-apps-1vucejm/" rel="noopener noreferrer"&gt;Galaxy regions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub Action: &lt;a href="https://github.com/aquinoit/simpletasks-ghactions" rel="noopener noreferrer"&gt;&lt;code&gt;aquinoit/simpletasks-ghactions&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Prerequisites
&lt;/h2&gt;

&lt;p&gt;You’ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A live Galaxy app (e.g. &lt;code&gt;myapp.meteorapp.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;MongoDB configured via your app settings&lt;/li&gt;
&lt;li&gt;A GitHub repo with Actions enabled&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1️⃣ Create a Meteor session (local, one-time)
&lt;/h2&gt;

&lt;p&gt;Meteor’s CLI deploy requires a valid session. We’ll create one locally and convert it to base64 to use securely in GitHub.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;METEOR_SESSION_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./meteor_session.json meteor login
&lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;-w0&lt;/span&gt; meteor_session.json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; meteor_session.b64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the base64 string output — we’ll add this as a GitHub Secret.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3y20lapygdhsuctxofw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3y20lapygdhsuctxofw2.png" alt="1" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2️⃣ Add your GitHub Secrets
&lt;/h2&gt;

&lt;p&gt;Go to your repo → &lt;strong&gt;Settings → Secrets and variables → Actions → New repository secret&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add the following two secrets:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Secret Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;METEOR_SESSION_B64&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Paste the contents of &lt;code&gt;meteor_session.b64&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;METEOR_SETTINGS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your app’s settings JSON (as a single line)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tip: use &lt;code&gt;jq -c&lt;/code&gt; to compress your settings file into one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jq &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhry6ot1kgjuv3uxjlhf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhry6ot1kgjuv3uxjlhf.png" alt="2" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;










&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcioqvhd2h52ghq2wuo4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcioqvhd2h52ghq2wuo4s.png" alt="2" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;










&lt;h2&gt;
  
  
  3️⃣ Add the deploy workflow
&lt;/h2&gt;

&lt;p&gt;In your project, create a file at &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build &amp;amp; Deploy to Galaxy&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;main"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;meteorengineer/setup-meteor@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;meteor-release&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2.14'&lt;/span&gt;  &lt;span class="c1"&gt;# Use your exact Meteor version&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;meteor npm install&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Write settings.json&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;printf '%s' '${{ secrets.METEOR_SETTINGS }}' &amp;gt; settings.json&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Show Settings&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cat settings.json&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy to Galaxy&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;aquinoit/galaxy-ghactions@0.0.2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;meteor_session_base64&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.METEOR_SESSION_B64 }}&lt;/span&gt;
          &lt;span class="na"&gt;app_hostname&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;myapp.meteorapp.com&lt;/span&gt;
          &lt;span class="na"&gt;region&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;galaxy.meteor.com&lt;/span&gt;
          &lt;span class="na"&gt;settings_file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./settings.json&lt;/span&gt;
          &lt;span class="na"&gt;deploy_flags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;--free'&lt;/span&gt;
          &lt;span class="na"&gt;npm_install&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;true'&lt;/span&gt;
          &lt;span class="na"&gt;npm_install_args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;












&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezsu3pqk3vn3wfy2yi7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezsu3pqk3vn3wfy2yi7o.png" alt="2" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ Push and deploy
&lt;/h2&gt;

&lt;p&gt;Now commit and push to &lt;code&gt;main&lt;/code&gt;. The workflow will run automatically and deploy your app to Galaxy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"ci: automatic deploy to Galaxy"&lt;/span&gt;
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then on GitHub:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the &lt;strong&gt;Actions&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Build &amp;amp; Deploy to Galaxy&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Watch the logs in real time!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4zno0563l0cxtlwov0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4zno0563l0cxtlwov0w.png" alt="3" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;










&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin00wmsln1qq4qdv1d10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin00wmsln1qq4qdv1d10.png" alt="4" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Secrets &amp;amp; best practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Never&lt;/strong&gt; commit &lt;code&gt;settings.json&lt;/code&gt;. The workflow writes it at runtime.&lt;/li&gt;
&lt;li&gt;Use a Meteor account with the minimum necessary access for deployment.&lt;/li&gt;
&lt;li&gt;Consider separate workflows for production and staging environments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafrwdfyakera2pvpbw8p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafrwdfyakera2pvpbw8p.png" alt="5" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧯 Common issues &amp;amp; fixes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Meteor “superuser” warning&lt;/strong&gt;&lt;br&gt;
You can ignore this. The action already includes &lt;code&gt;--allow-superuser&lt;/code&gt; internally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying to the wrong region?&lt;/strong&gt;&lt;br&gt;
Use the correct region hostname:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;US: &lt;code&gt;galaxy.meteor.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;EU: &lt;code&gt;eu-west-1.galaxy.meteor.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;APAC: &lt;code&gt;ap-southeast-2.galaxy.meteor.com&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;“Can’t find action” error?&lt;/strong&gt;&lt;br&gt;
Make sure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have &lt;code&gt;uses: aquinoit/galaxy-ghactions@0.0.2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You’ve included the &lt;code&gt;checkout&lt;/code&gt; step at the top&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Production tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pin your Meteor version in the workflow to avoid surprises&lt;/li&gt;
&lt;li&gt;Add a second workflow for &lt;code&gt;develop&lt;/code&gt; → staging app&lt;/li&gt;
&lt;li&gt;You can also enable manual deployments with workflow_dispatch in your workflow. This allows you to trigger a deploy from the GitHub Actions UI, without pushing a commit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fereqwx9q7ml6j2ve8anh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fereqwx9q7ml6j2ve8anh.png" alt="6" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Final thoughts
&lt;/h2&gt;

&lt;p&gt;That’s it! You now have a clean, secure CI/CD pipeline that deploys your Meteor app to Galaxy automatically — with &lt;strong&gt;zero downtime&lt;/strong&gt;. Just push to &lt;code&gt;main&lt;/code&gt; and watch it go live in seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycgkmhpfcfqdbawnkcnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycgkmhpfcfqdbawnkcnv.png" alt="7" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;










&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5pjet96ehmpc5uhy5j9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5pjet96ehmpc5uhy5j9i.png" alt="8" width="800" height="209"&gt;&lt;/a&gt;&lt;/p&gt;













&lt;h2&gt;
  
  
  🔗 More resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.galaxycloud.app/en/article/deploy-a-new-meteor-app-using-the-cli-1vzo6do/" rel="noopener noreferrer"&gt;Galaxy CLI deploy guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.galaxycloud.app/en/article/regions-meteor-apps-1vucejm/" rel="noopener noreferrer"&gt;Galaxy Regions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 Coming soon: GitLab CI and Bitbucket Pipelines
&lt;/h2&gt;

&lt;p&gt;This guide focused on GitHub Actions, but I’ll soon publish versions tailored for GitLab CI and Bitbucket Pipelines.&lt;/p&gt;

&lt;p&gt;So if your team uses those platforms, stay tuned the same zero-downtime deployment approach applies, just with different syntax.&lt;/p&gt;

&lt;p&gt;Let me know if this was helpful or if you hit any issues while setting it up happy to help!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Experience the Best of Both Worlds: Unified MeteorJS and MongoDB Hosting</title>
      <dc:creator>Philippe Oliveira</dc:creator>
      <pubDate>Wed, 15 May 2024 10:38:57 +0000</pubDate>
      <link>https://dev.to/meteor/experience-the-best-of-both-worlds-unified-meteorjs-and-mongodb-hosting-4234</link>
      <guid>https://dev.to/meteor/experience-the-best-of-both-worlds-unified-meteorjs-and-mongodb-hosting-4234</guid>
      <description>&lt;p&gt;If you're looking for a hosting solution for your Meteor applications and MongoDB databases, Galaxy is now the perfect place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://meteor.com/cloud/databases/mongodb" rel="noopener noreferrer"&gt;https://meteor.com/cloud/databases/mongodb&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Launch Week - Day 3
&lt;/h2&gt;

&lt;p&gt;We're excited to launch &lt;strong&gt;Galaxy Databases&lt;/strong&gt;, a new addition to our suite of services. Initially, we're offering robust support for MongoDB, backed by a dedicated and specialized team ready to assist you every step of the way. But that's not all – in the near future, we'll be rolling out support for other databases, including &lt;strong&gt;FerretDB, Redis, PostgreSQL&lt;/strong&gt;, and more. With Galaxy Databases, you can expect top-tier performance, seamless integration, and excellent support for all your data hosting needs.&lt;br&gt;
 &lt;/p&gt;

&lt;h2&gt;
  
  
  Why choose our team to take care of your MongoDB infrastructure?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Single-Point Management Convenience:&lt;/strong&gt; One key advantage of choosing our services is the convenience of managing your Meteor applications and MongoDB databases in one place. With dedicated technical support, we streamline your life as a developer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Specialized MongoDB Support:&lt;/strong&gt; Our team of MongoDB experts is ready to assist you at every step, from initial installation to advanced performance optimization. We not only provide hassle-free installation but also stand ready to resolve any issues you may encounter along the way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Respect:&lt;/strong&gt; No Forced MongoDB Upgrades: Unlike other providers, we don't force our customers to upgrade to the latest versions of MongoDB. We recognize that each project has its own needs and upgrade schedules. Therefore, we ensure that you have full control over your upgrade decisions without unwanted interruptions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Access to the Latest MongoDB Versions:&lt;/strong&gt; Unlike many other providers, we pride ourselves on supporting the latest versions of MongoDB. This means you can take advantage of the latest features, performance improvements, and security fixes without worrying about technology obsolescence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost-Effective Solutions:&lt;/strong&gt; We're proud to offer hosting packages that maintain exceptional quality but are a fraction of the cost of our competitors. Enjoy top-tier hosting without breaking the bank.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How It Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personalized Initial Consultation:&lt;/strong&gt; Our team of MongoDB experts will work closely with you to understand your specific needs and propose the best configuration for your environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hassle-Free Installation and Configuration:&lt;/strong&gt; We handle the entire process of installing and configuring MongoDB for you, ensuring seamless integration with your existing Meteor applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Continuous Support:&lt;/strong&gt; It doesn't end at installation. We're here to provide ongoing technical support, address emerging issues, and help you optimize your database performance as needed. We have a dedicated team with the intelligence to predict problems, query optimization, and other issues.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flu9om25bjjy44aptzd1x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flu9om25bjjy44aptzd1x.png" alt="Monitoring" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Some of Our Key Differentiators&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;We have a team that will manage MongoDB for you. Focus on your business model and leave the infrastructure to us.
 &lt;/li&gt;
&lt;li&gt;Our team of experts manages MongoDB to ensure high performance and security.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Receive proactive alerts and intelligent support from our specialists.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We provide MongoDB with SSL and self-signed certificates for enhanced security.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Make the Switch Today!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When you choose our team to manage your MongoDB, you opt for a solution with comprehensive support and total flexibility. Take the next step toward an infrastructure that meets your needs without compromising quality or convenience.&lt;/p&gt;

&lt;p&gt;Learn more: &lt;a href="https://www.meteor.com/cloud/databases/mongodb" rel="noopener noreferrer"&gt;https://www.meteor.com/cloud/databases/mongodb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's as simple as accessing the new Galaxy panel, navigating to the "Database" section, and filling in your information. Once you've provided the necessary details, our dedicated technical team will promptly contact you through our specialized channel to assist with setting up your MongoDB database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2gsmbp7jjdvdjisdjsf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2gsmbp7jjdvdjisdjsf.png" alt="Form" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
