Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a30b147
Merge pull request #2 from Shuffle/nightly
frikky May 10, 2026
eaa7139
Change GITHUB_TOKEN to GH_TOKEN in workflow
frikky May 10, 2026
ff1cd21
Fix environment variable usage in release workflow
frikky May 10, 2026
05895a7
Update release workflow for Go binaries
frikky May 10, 2026
5368378
Merge pull request #3 from Shuffle/nightly
0x0elliot May 12, 2026
8b376f0
ci: add Docker release workflow for tagged images and latest builds
0x0elliot May 12, 2026
3ca0570
ci: add Docker release workflow for tagged images and latest builds
0x0elliot May 12, 2026
be13699
ci: add shuffle-orborus registry tags to all Docker build workflows
0x0elliot May 12, 2026
da2e2c4
Replace GITHUB_TOKEN with GH_TOKEN in all Docker workflows
0x0elliot May 12, 2026
a8e122c
ci: token name change
0x0elliot May 12, 2026
59f646c
Use GITHUB_TOKEN for GHCR and remove non-existent registry tags
0x0elliot May 12, 2026
b49b905
Tag latest builds as 2.2.1
0x0elliot May 12, 2026
e7d8fe7
ci: commit to trigger build
0x0elliot May 12, 2026
00dfc66
ci: trigger build
0x0elliot May 12, 2026
33ae8e8
fix: native cross-compile, per-registry failure isolation, consolidat…
0x0elliot May 12, 2026
0806490
fix: use shuffle-orborus as primary ghcr registry, use GITHUB_TOKEN e…
0x0elliot May 12, 2026
3c23b65
chore: fix ghcr registry to shuffle/orborus
0x0elliot May 12, 2026
4bf252c
ci: trigger build
0x0elliot May 12, 2026
bc2fcc8
fix - docker version issue
LalitDeore May 13, 2026
2342d11
Merge pull request #4 from LalitDeore/fix-docker-version
0x0elliot May 13, 2026
db457bb
Making sure shuffle-worker is renamed correctly
frikky May 14, 2026
50539b1
Forcing in workerVersion
frikky May 14, 2026
6bceb9a
Made re-attaching to network optional
frikky May 14, 2026
fb2ce39
remove ingress attachment
yashsinghcodes May 26, 2026
2d32088
added ablity to pass app proxy with worker in between
yashsinghcodes May 26, 2026
ba581d8
fix: removeFile
yashsinghcodes Jun 16, 2026
9f40315
fix: default tag worker fix
yashsinghcodes Jun 29, 2026
af62013
fix: default tag worker fix (2)
yashsinghcodes Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.git
.github
.gitignore
.claude
helpers
*.md
164 changes: 164 additions & 0 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
name: Docker Release & Latest

on:
release:
types: [published]
push:
branches:
- main
paths:
- "**"
- "!.github/**"
- "!**.md"
- "!docker-compose.yml"
workflow_dispatch:
inputs:
build_type:
description: "Build type"
required: true
default: "latest"
type: choice
options:
- latest
- release
- both

permissions:
contents: read
packages: write

jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: "amd64,arm64"

- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to Ghcr
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Determine build type and version
id: version
run: |
if [[ "${{ github.event_name }}" == "release" ]]; then
VERSION="${{ github.event.release.tag_name }}"
BUILD_TYPE="release"
elif [[ "${{ github.event_name }}" == "push" ]]; then
VERSION="latest"
BUILD_TYPE="latest"
else
BUILD_TYPE="${{ github.event.inputs.build_type }}"
VERSION="latest"
fi

echo "build_type=${BUILD_TYPE}" >> $GITHUB_OUTPUT
echo "version=${VERSION}" >> $GITHUB_OUTPUT

STRIPPED_VERSION=$(echo "${VERSION}" | sed 's/^v//')
echo "stripped_version=${STRIPPED_VERSION}" >> $GITHUB_OUTPUT
echo "Version: ${VERSION}, Stripped: ${STRIPPED_VERSION}, Type: ${BUILD_TYPE}"

# === LATEST BUILD (push to main or workflow_dispatch) ===

- name: Build and push latest (primary)
if: steps.version.outputs.build_type == 'latest' || steps.version.outputs.build_type == 'both'
uses: docker/build-push-action@v5
with:
context: ./
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
tags: |
ghcr.io/shuffle/orborus:latest
ghcr.io/shuffle/orborus:2.2.1

- name: Copy latest to DockerHub
if: steps.version.outputs.build_type == 'latest' || steps.version.outputs.build_type == 'both'
continue-on-error: true
run: |
docker buildx imagetools create \
--tag ${{ secrets.DOCKERHUB_USERNAME }}/orborus:latest \
--tag ${{ secrets.DOCKERHUB_USERNAME }}/orborus:2.2.1 \
ghcr.io/shuffle/orborus:latest

- name: Copy latest to shuffle DockerHub
if: steps.version.outputs.build_type == 'latest' || steps.version.outputs.build_type == 'both'
continue-on-error: true
run: |
docker buildx imagetools create \
--tag shuffle/orborus:latest \
--tag shuffle/orborus:2.2.1 \
ghcr.io/shuffle/orborus:latest

- name: Copy latest to frikky
if: steps.version.outputs.build_type == 'latest' || steps.version.outputs.build_type == 'both'
continue-on-error: true
run: |
docker buildx imagetools create \
--tag frikky/orborus:latest \
--tag frikky/orborus:2.2.1 \
--tag frikky/shuffle:orborus \
ghcr.io/shuffle/orborus:latest

# === RELEASE BUILD (GitHub release or workflow_dispatch) ===

- name: Build and push release (primary)
if: steps.version.outputs.build_type == 'release' || steps.version.outputs.build_type == 'both'
uses: docker/build-push-action@v5
with:
context: ./
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
tags: |
ghcr.io/shuffle/orborus:${{ steps.version.outputs.version }}
ghcr.io/shuffle/orborus:${{ steps.version.outputs.stripped_version }}

- name: Copy release to DockerHub
if: steps.version.outputs.build_type == 'release' || steps.version.outputs.build_type == 'both'
continue-on-error: true
run: |
docker buildx imagetools create \
--tag ${{ secrets.DOCKERHUB_USERNAME }}/orborus:${{ steps.version.outputs.version }} \
--tag ${{ secrets.DOCKERHUB_USERNAME }}/orborus:${{ steps.version.outputs.stripped_version }} \
ghcr.io/shuffle/orborus:${{ steps.version.outputs.version }}

- name: Copy release to shuffle DockerHub
if: steps.version.outputs.build_type == 'release' || steps.version.outputs.build_type == 'both'
continue-on-error: true
run: |
docker buildx imagetools create \
--tag shuffle/orborus:${{ steps.version.outputs.version }} \
--tag shuffle/orborus:${{ steps.version.outputs.stripped_version }} \
ghcr.io/shuffle/orborus:${{ steps.version.outputs.version }}

- name: Copy release to frikky
if: steps.version.outputs.build_type == 'release' || steps.version.outputs.build_type == 'both'
continue-on-error: true
run: |
docker buildx imagetools create \
--tag frikky/orborus:${{ steps.version.outputs.version }} \
--tag frikky/orborus:${{ steps.version.outputs.stripped_version }} \
ghcr.io/shuffle/orborus:${{ steps.version.outputs.version }}
71 changes: 0 additions & 71 deletions .github/workflows/dockerbuild.yml

This file was deleted.

72 changes: 49 additions & 23 deletions .github/workflows/release_binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,66 +4,94 @@ on:
workflow_dispatch:
inputs:
version:
description: 'Version of the release (e.g. v0.3.6)'
description: "Version (e.g. v0.3.6)"
required: true

permissions:
contents: write

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
os: [linux, darwin, windows]
arch: [amd64, arm64]

steps:
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"

- name: Set version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV

- name: Build binary
run: |
mkdir -p dist
export GOOS=${{ matrix.os }}
export GOARCH=${{ matrix.arch }}

GOOS=${{ matrix.os }}
GOARCH=${{ matrix.arch }}

EXT=""
LDFLAGS=""

if [ "$GOOS" = "windows" ]; then
EXT=".exe"
LDFLAGS="-H=windowsgui"
fi
BINARY_NAME=orborus-agent-${GOOS}-${GOARCH}
OUTPUT=dist/$BINARY_NAME$EXT

BINARY_NAME="orborus-agent-${GOOS}-${GOARCH}"
OUTPUT="dist/${BINARY_NAME}${EXT}"

echo "Building $OUTPUT"
GOOS=$GOOS GOARCH=$GOARCH go build -ldflags="$LDFLAGS" -o $OUTPUT
GOOS=$GOOS GOARCH=$GOARCH go build -ldflags="$LDFLAGS" -o "$OUTPUT"

- name: Package
run: |
cd dist
FILENAME=orborus-agent-${{ matrix.os }}-${{ matrix.arch }}
if [ "${{ matrix.os }}" = "windows" ]; then
zip $FILENAME.zip $FILENAME.exe
else
tar -czf $FILENAME.tar.gz $FILENAME
fi

- name: Upload build artifact
VERSION="${{ github.event.inputs.version }}"

for file in *; do
if [[ "$file" == *.exe ]]; then
zip "${file%.exe}.zip" "$file"
else
tar -czf "${file}.tar.gz" "$file"
fi
done

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: binaries-${{ matrix.os }}-${{ matrix.arch }}
path: dist/*


release:
needs: build
runs-on: ubuntu-latest

steps:
- name: Checkout source (for tag creation)
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Create and push git tag
run: |
VERSION="${{ github.event.inputs.version }}"

git config user.name "github-actions"
git config user.email "github-actions@github.com"

git tag "$VERSION"
git push origin "$VERSION"

- name: Download artifacts
uses: actions/download-artifact@v4
with:
Expand All @@ -73,11 +101,9 @@ jobs:
run: |
find dist -mindepth 2 -type f -exec mv -t dist {} + || true

- name: Upload binaries to GitHub Release
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.inputs.version }}
files: dist/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

token: ${{ secrets.GITHUB_TOKEN }}
10 changes: 5 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
FROM golang:1.25 AS builder
FROM --platform=$BUILDPLATFORM golang:1.25 AS builder
ARG TARGETOS TARGETARCH

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/orborus .
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /app/orborus .

FROM alpine:3.22.1

RUN apk add --no-cache bash tzdata
#COPY --from=builder /app/orborus orborus
COPY --from=builder /app/ /
COPY --from=builder /app/orborus /orborus
ENV ENVIRONMENT_NAME=Shuffle \
BASE_URL=http://shuffle-backend:5001 \
DOCKER_API_VERSION=1.40 \
DOCKER_API_VERSION=1.44 \
SHUFFLE_OPENSEARCH_URL=https://opensearch:9200

CMD ["./orborus"]
Loading
Loading