Seller Guide

Automated Builds

Automate Docker image builds with GitHub Actions and other CI/CD systems.

Automate your Docker builds so every release is pushed to the Self-Host Pro registry without manual intervention.

See it in action — Our demo repository has production-ready GitHub Actions workflows you can copy and adapt.

Release strategy

A common pattern uses three release channels:

ChannelTriggerTagsUse case
EdgePush to mainedge-mainContinuous deployment for testing
PrereleaseGitHub prereleaseprerelease, prerelease-v1.0.0-beta.1Beta testing with select customers
StableGitHub releaselatest, 1.2.0, 1Production releases

This gives you flexibility — push to main for instant edge builds, create a prerelease for beta feedback, then publish a stable release when ready.

Reusable workflow pattern

Instead of duplicating build logic, create a reusable workflow that handles the actual build, then call it from simple trigger workflows.

Build workflow

This workflow handles dependency caching, asset compilation, and pushing to the registry:

.github/workflows/service_docker-build-and-publish.yml
name: Docker Build & Publish

on:
  workflow_call:
    inputs:
      docker-tags:
        required: true
        type: string
        description: "Comma or newline separated list of Docker tags"
      dockerfile:
        type: string
        default: "./Dockerfile"
      environment:
        type: string
        required: true
      version:
        type: string
        required: false

jobs:
  docker-publish:
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      # Add your build steps here (dependency install, asset compilation, etc.)

      - name: Build and push
        uses: serversideup/github-action-docker-build@v6
        with:
          tags: ${{ inputs.docker-tags }}
          dockerfile: ${{ inputs.dockerfile }}
          registry: "shpcr.io"
          registry-username: ${{ secrets.SHPCR_USERNAME }}
          registry-password: ${{ secrets.SHPCR_PASSWORD }}

Trigger workflows

Each release channel gets a simple workflow that calls the build workflow with appropriate tags:

name: Edge Release

on:
  push:
    branches:
      - main

jobs:
  build:
    uses: ./.github/workflows/service_docker-build-and-publish.yml
    with:
      docker-tags: "shpcr.io/your-team/your-product:edge-${{ github.ref_name }}"
      environment: edge
    secrets: inherit

Required secrets

Add these secrets to your GitHub repository:

SecretValue
SHPCR_USERNAMEYour Self-Host Pro email
SHPCR_PASSWORDYour team access token

See Docker Registry for how to generate an access token.

Other CI/CD systems

The same pattern works with any CI/CD system — GitLab CI, CircleCI, Jenkins, etc. The core steps are:

  1. Log in to the registry with docker login shpcr.io
  2. Build your image
  3. Tag with appropriate version(s)
  4. Push to shpcr.io

The workflows above are just orchestration around standard Docker commands.