Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
338251e
refactor: remove deprecated services and logic (#2722)
kmendell May 24, 2026
157f3bb
feat: use DHI images for base docker image (#2499)
wrycu May 24, 2026
de7d6b0
feat: full rbac permissions (#2724)
kmendell May 25, 2026
0e5401e
chore: install envsubst
kmendell May 25, 2026
615df45
chore: remove armv7
kmendell May 25, 2026
bbf9091
refactor: consolidate frontend types and utils
kmendell May 25, 2026
0fdd1eb
chore: update helpers from merge
kmendell May 25, 2026
d4257db
refactor: use distroless images over DHI to support all platforms
kmendell May 25, 2026
bcfd10f
chore: fix beta version
kmendell May 25, 2026
6b814c5
chore: fix e2e tests
kmendell May 25, 2026
6b0f5ed
feat: full background activity tasks (#2434)
kmendell May 28, 2026
02d693b
feat: new account page and small ui tweaks and fixes (#2753)
kmendell May 28, 2026
222a199
chore: run as root initially
kmendell May 28, 2026
d275ac0
refactor: updated tab bar design
kmendell May 28, 2026
d261dcf
fix: decouple context for activities (#2754)
kmendell May 28, 2026
012ac08
fix: add the ability to cancel ongoing activities (#2756)
kmendell May 29, 2026
085b012
refactor: consolidate frontend logic / components (#2757)
kmendell May 29, 2026
5422122
refactor: modernize and refactor deduped logic (#2759)
kmendell May 29, 2026
e6914a7
refactor: modernize backend code (#2760)
kmendell May 29, 2026
50d239f
feat: better universal dashboard ui tweaks (#2761)
kmendell May 29, 2026
cecd1c2
chore: remove alerts cli test
kmendell May 29, 2026
07cbf9e
fix: show all environment activities (#2762)
kmendell May 30, 2026
75f96a9
feat: support for federated credentials for workflow automation (#2769)
kmendell May 30, 2026
accb6c5
fix: trivy scans not using arcane registries credentials (#2771)
kmendell May 30, 2026
68af389
refactor: add new go linters and refactor functions (#2772)
kmendell May 31, 2026
51104af
refactor: generate services and jobs from google/wire (#2775)
kmendell May 31, 2026
dd1d1b4
fix: make updater service skip swarm containers and make checks more …
kmendell May 31, 2026
da3581b
fix: incorrect paths for activity syncing
kmendell May 31, 2026
7fb3977
fix: add global csrf middleware (#2780)
kmendell May 31, 2026
0cda74f
chore: update test runner
kmendell May 31, 2026
618493b
chore: refactor tests
kmendell May 31, 2026
023af9f
chore: fix missing import
kmendell May 31, 2026
5ab7b57
chore: enforce LF for husky hooks, Justfile, and shell scripts
peitschie Jun 1, 2026
f7388a9
feat(lifecycle): pre-deploy hook backend for gitops syncs
peitschie Jun 1, 2026
c02cba4
feat(lifecycle): pre-deploy hook UI for gitops syncs
peitschie Jun 1, 2026
4e78a65
review(lifecycle): suffix new unexported helpers with Internal
peitschie Jun 1, 2026
87b19bd
review(gitops): drop duplicate-return branches in redeploy error paths
peitschie Jun 1, 2026
4f16f16
review(lifecycle): drop double-truncation of persisted hook output
peitschie Jun 1, 2026
92622ff
review(lifecycle): gate pre-deploy hook config behind gitops:lifecycle
peitschie Jun 2, 2026
b549d95
review(gitops): move redeploy-after-sync error to common/errors.go
peitschie Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
142 changes: 142 additions & 0 deletions .depot/workflows/build-v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: Build V2 Beta Images

on:
push:
branches:
- breaking/v2.0.0
workflow_dispatch:

concurrency:
group: build-v2-beta-images
cancel-in-progress: true

permissions:
contents: read
packages: write

jobs:
build-v2-beta-images:
runs-on: depot-ubuntu-24.04-32

env:
MANAGER_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/manager
AGENT_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/agent

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Install envsubst
run: sudo apt-get update && sudo apt-get install -y gettext-base

- name: Install cosign
uses: sigstore/cosign-installer@v4.1.2

- name: Set up Depot CLI
uses: depot/setup-action@v1

- name: Setup depot buildx driver
id: setup-buildx-driver
run: |
depot configure-docker

# - name: Snapshot Setup Environment
# uses: depot/snapshot-action@v1
# with:
# image: g7r5wqb57k.registry.depot.dev/arcane-env:latest

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ vars.GHCR_USERNAME }}
password: ${{ secrets.ARCANE_BOT_TOKEN }}

- name: Manager image metadata
id: manager-meta
uses: docker/metadata-action@v6
with:
images: |
${{ env.MANAGER_IMAGE_NAME }}
tags: |
type=raw,value=v2-beta
labels: |
org.opencontainers.image.authors=OFKM Technologies
org.opencontainers.image.url=https://github.com/getarcaneapp/arcane
org.opencontainers.image.documentation=https://github.com/getarcaneapp/arcane/blob/main/README.md
org.opencontainers.image.source=https://github.com/getarcaneapp/arcane
org.opencontainers.image.version=v2-beta
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=BSD-3-Clause
org.opencontainers.image.ref.name=arcane
org.opencontainers.image.title=Arcane
org.opencontainers.image.description=Modern Docker Management, Made for Everyone
com.getarcaneapp.arcane=true

- name: Build and push manager image
id: manager-build
uses: depot/build-push-action@v1
with:
context: .
file: docker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.manager-meta.outputs.tags }}
labels: ${{ steps.manager-meta.outputs.labels }}
build-args: |
VERSION=v2.0.0-beta
REVISION=${{ github.sha }}
sbom: false
provenance: true

- name: Sign manager image
run: cosign sign --yes --key env://COSIGN_PRIVATE_KEY "${MANAGER_IMAGE_NAME}@${{ steps.manager-build.outputs.digest }}"
env:
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}

- name: Agent image metadata
id: agent-meta
uses: docker/metadata-action@v6
with:
images: |
${{ env.AGENT_IMAGE_NAME }}
tags: |
type=raw,value=v2-beta
labels: |
org.opencontainers.image.authors=OFKM Technologies
org.opencontainers.image.url=https://github.com/getarcaneapp/arcane
org.opencontainers.image.documentation=https://github.com/getarcaneapp/arcane/blob/main/README.md
org.opencontainers.image.source=https://github.com/getarcaneapp/arcane
org.opencontainers.image.version=v2-beta
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=BSD-3-Clause
org.opencontainers.image.ref.name=arcane-agent
org.opencontainers.image.title=Arcane Agent
org.opencontainers.image.description=Arcane Agent
com.getarcaneapp.arcane=true
com.getarcaneapp.arcane.agent=true

- name: Build and push agent image
id: agent-build
uses: depot/build-push-action@v1
with:
context: .
file: docker/Dockerfile-agent
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.agent-meta.outputs.tags }}
labels: ${{ steps.agent-meta.outputs.labels }}
build-args: |
VERSION=v2.0.0-beta
REVISION=${{ github.sha }}
sbom: false
provenance: true

- name: Sign agent image
run: cosign sign --yes --key env://COSIGN_PRIVATE_KEY "${AGENT_IMAGE_NAME}@${{ steps.agent-build.outputs.digest }}"
env:
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Files that must be LF on disk regardless of the checkout platform, because
# they're consumed by tooling that chokes on CRLF (bash shebangs, just,
# shell scripts copied verbatim into Linux runner containers).
.husky/* text eol=lf
.husky/_/* text eol=lf
Justfile text eol=lf
*.sh text eol=lf
68 changes: 67 additions & 1 deletion .github/.golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,118 @@ run:
linters:
default: none
enable:
- arangolint
- asasalint
- asciicheck
- bidichk
- bodyclose
- canonicalheader
- clickhouselint
- contextcheck
- copyloopvar
- decorder
- dupl
- dupword
- durationcheck
- embeddedstructfieldcheck
- errcheck
- errchkjson
- errname
- errorlint
- exhaustive
- exptostd
- fatcontext
- forbidigo
- forcetypeassert
- ginkgolinter
- gocheckcompilerdirectives
- gochecksumtype
- gocognit
- gocritic
- gocyclo
- godoclint
- goheader
- gomoddirectives
- gomodguard_v2
- goprintffuncname
- gosec
- gosmopolitan
- govet
- grouper
- iface
- importas
- inamedparam
- ineffassign
- interfacebloat
- intrange
- iotamixing
- loggercheck
- maintidx
- makezero
- misspell
- mirror
- misspell
- modernize
- musttag
- nakedret
- nilerr
- nilnesserr
- noctx
- nolintlint
- nosprintfhostport
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- recvcheck
- revive
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- staticcheck
- testableexamples
- testifylint
- unconvert
- unparam
- unqueryvet
- unused
- usestdlibvars
- usetesting
- wastedassign
- whitespace
- zerologlint
settings:
gomoddirectives:
# replace directives (=> ../cli, => ../types). Allow them.
replace-local: true
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
# Initialism naming (ApiKey -> APIKey, AppUrl -> AppURL, etc.) is intentional,
# widespread, and API-surface; track separately rather than churn it here.
- linters:
- revive
text: "var-naming:"
# Unused params are required by interface/callback/gorm-hook signatures.
- linters:
- revive
text: "unused-parameter:"
# Package-prefixed exported names (swarm.SwarmInfo, port.PortMapping, etc.) are
# an intentional, monorepo-wide convention; renaming is a large public-API change.
- linters:
- revive
text: "exported:"
# The cli command package is a CLI entrypoint; printing to stdout is correct.
- linters:
- forbidigo
path: cli/
paths:
- '.*\.pb\.go$'
- third_party$
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ jobs:
e2e-tests:
name: E2E Tests (${{ matrix.database.name }})
if: ${{ github.head_ref != 'l10n_crowdin' }}
runs-on: depot-ubuntu-latest
runs-on: depot-ubuntu-24.04-4
permissions:
contents: read
actions: write
Expand Down Expand Up @@ -301,7 +301,7 @@ jobs:
cli-e2e-tests:
name: CLI E2E Tests (proxy)
if: ${{ github.head_ref != 'l10n_crowdin' }}
runs-on: depot-ubuntu-latest
runs-on: depot-ubuntu-24.04-4
permissions:
contents: read
actions: write
Expand Down
23 changes: 17 additions & 6 deletions .github/workflows/hadolint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ name: Hadolint

on:
push:
branches: [ "main" ]
branches: ["main"]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "main" ]
branches: ["main"]
schedule:
- cron: '24 19 * * 2'
- cron: "24 19 * * 2"

permissions:
contents: read
Expand All @@ -28,20 +28,31 @@ jobs:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
strategy:
fail-fast: false
matrix:
include:
- name: manager
dockerfile: ./docker/Dockerfile
output: hadolint-results-manager.sarif
- name: agent
dockerfile: ./docker/Dockerfile-agent
output: hadolint-results-agent.sarif
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Run hadolint
uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5
with:
dockerfile: ./docker/Dockerfile
dockerfile: ${{ matrix.dockerfile }}
format: sarif
output-file: hadolint-results.sarif
output-file: ${{ matrix.output }}
no-fail: true

- name: Upload analysis results to GitHub
uses: github/codeql-action/upload-sarif@v4.36.0
with:
sarif_file: hadolint-results.sarif
sarif_file: ${{ matrix.output }}
category: hadolint-${{ matrix.name }}
wait-for-processing: true
4 changes: 2 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
"scminput": false,
"typescript": true
},
"typescript.tsdk": "frontend/node_modules/typescript/lib",
"go.buildTags": "playwright,buildables",
"prettier.documentSelectors": ["**/*.svelte"],
"tasks.statusbar.default.hide": true,
"tasks.statusbar.limit": 8,
"github.copilot.chat.summarizeAgentConversationHistory.enabled": false,
"snyk.advanced.autoSelectOrganization": false
"snyk.advanced.autoSelectOrganization": false,
"js/ts.tsdk.path": "frontend/node_modules/typescript/lib"
}
Loading
Loading