Skip to content

Commit e56d7ff

Browse files
committed
Initial commit
0 parents  commit e56d7ff

58 files changed

Lines changed: 6774 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.config/actionlint.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# actionlint configuration for this project
2+
# References DocOps Lab base configuration
3+
4+
# Project-specific ignores (add as needed):
5+
ignore:
6+
# Example: Ignore specific workflow patterns
7+
# - 'workflow "deploy.yml"'
8+
# - '"ubuntu-20.04" is deprecated'
9+
10+
# Project-specific overrides:
11+
shellcheck:
12+
enable: true
13+
# shell-options: "-e SC2016" # Add project-specific ShellCheck exclusions

.config/docopslab-dev.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
source:
2+
repo: DocOps/lab
3+
ref: v1
4+
docs:
5+
- source: docs/agent/skills/*.md
6+
target: .agent/docs/skills/
7+
synced: true
8+
- source: docs/agent/topics/*.md
9+
target: .agent/docs/topics/
10+
synced: true
11+
- source: docs/agent/roles/*.md
12+
target: .agent/docs/roles/
13+
synced: true
14+
- source: docs/agent/missions/*.md
15+
target: .agent/docs/missions/
16+
synced: true
17+
18+
templates:
19+
manifest:
20+
- source: templates/AGENTS.markdown
21+
target: ./AGENTS.md
22+
- source: templates/gitignore
23+
target: .gitignore
24+
- source: templates/README.asciidoc
25+
target: README.adoc
26+
27+
tools:
28+
- tool: rubocop
29+
files:
30+
- source: rubocop/base.yml
31+
target: .config/.vendor/docopslab/rubocop.yml
32+
synced: true
33+
- source: rubocop/project.yml
34+
target: .config/rubocop.yml
35+
synced: false
36+
37+
- tool: vale
38+
files:
39+
- source: vale/base.ini
40+
target: .config/.vendor/docopslab/vale.ini
41+
synced: true
42+
- source: vale/project.ini
43+
target: .config/vale.local.ini
44+
synced: false
45+
46+
- tool: htmlproofer
47+
enabled: false # Disabled by default, enable per project
48+
files:
49+
- source: htmlproofer/base.yml
50+
target: .config/.vendor/docopslab/htmlproofer.yml
51+
synced: true
52+
- source: htmlproofer/project.yml
53+
target: .config/htmlproofer.yml
54+
synced: false
55+
paths:
56+
lint: docs/_site
57+
58+
- tool: shellcheck
59+
files:
60+
- source: shellcheck/base.shellcheckrc
61+
target: .config/shellcheckrc
62+
synced: true
63+
64+
- tool: actionlint
65+
files:
66+
- source: actionlint/base.yml
67+
target: .config/.vendor/docopslab/actionlint.yml
68+
synced: true
69+
- source: actionlint/project.yml
70+
target: .config/actionlint.yml
71+
synced: false
72+
73+
library:
74+
enabled: true
75+
source:
76+
repo: DocOps/lab
77+
ref: labdev-library

.config/shellcheckrc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# ShellCheck configuration for DocOps Lab projects
2+
# This file is synced from docopslab-dev gem
3+
4+
# tag::core-rules[]
5+
# Set default shell to bash
6+
shell=bash
7+
8+
# Enforce documented style rules
9+
enable=require-double-brackets # Require [[ ]] over [ ] in Bash
10+
enable=deprecate-which # Use command -v instead of which
11+
enable=add-default-case # Require a fallthrough *) in case statements
12+
13+
# Quote safety
14+
enable=quote-safe-variables
15+
16+
# NOTE: SC2034 (variable appears unused) is NOT disabled globally.
17+
# In sourced library files that export variables for callers, suppress inline:
18+
# # shellcheck disable=SC2034 # exported; read by callers
19+
# end::core-rules[]

.config/vale.local.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# DocOps Lab Vale Configuration
2+
# Combined base and project configuration for consistent Vale linting
3+
4+
MinAlertLevel = warning
5+
StylesPath = .vendor/vale/styles

.dockerignore

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# DocOps Box — Docker build context exclusions
2+
# Keeps the build context fast and prevents development files from leaking into
3+
# the image. Files intentionally included in the build (Gemfile*, package.json,
4+
# requirements.txt, dockerfile-*.sh) are expected in the project root (the
5+
# build context) and are NOT listed here. The repo's own copies live under
6+
# templates/ but users place them at their project root before building.
7+
8+
# Repo-only directories — not needed in user image builds
9+
templates/
10+
!templates/.zshrc
11+
bin/
12+
scripts/
13+
specs/
14+
15+
# Version control
16+
.git/
17+
.gitignore
18+
19+
# Agent/session scratch directories
20+
.agent/
21+
.agents/
22+
AGENTS.md
23+
24+
# Documentation source (not needed inside the image)
25+
*.adoc
26+
*.html
27+
LICENSE
28+
README.adoc
29+
30+
# Development tooling configs/manifests
31+
.config/
32+
Rakefile
33+
Gemfile*
34+
35+
# Editor and IDE
36+
.vscode/
37+
.idea/
38+
39+
# OS artifacts
40+
.DS_Store
41+
42+
# Runtime artifacts
43+
_site/
44+
.jekyll-cache/
45+
tmp/
46+
*.log
47+
*.bak
48+
*~

.githooks/pre-commit

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
# .githooks/pre-commit
3+
#
4+
# Runs the consistency check before every commit.
5+
# Activate once with: git config core.hooksPath .githooks
6+
set -euo pipefail
7+
8+
cd "$(git rev-parse --show-toplevel)"
9+
exec bundle exec ruby scripts/check-consistency.rb

.github/workflows/build-images.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# .github/workflows/build-images.yml
2+
# Builds and pushes the full DocOps Box image matrix to Docker Hub.
3+
#
4+
# The build logic lives in scripts/build-matrix.sh; this workflow is a thin
5+
# harness that sets up the multi-platform build environment and invokes it.
6+
#
7+
# Triggers:
8+
# - Push to `latest` branch (auto-build on merge)
9+
# - Manual dispatch with optional dry-run flag
10+
#
11+
# Required repository secrets:
12+
# DOCKERHUB_USERNAME — Docker Hub username
13+
# DOCKERHUB_PASSWORD — Docker Hub access token (not your password)
14+
#
15+
# To add a new image to the matrix, edit scripts/build-matrix.sh only.
16+
17+
name: Build and Push Image Matrix
18+
19+
on:
20+
push:
21+
branches:
22+
- latest
23+
# Only trigger when files that affect the built image actually change.
24+
# Docs, README, agent notes, etc. do not need a full 12-image rebuild.
25+
paths:
26+
- 'Dockerfile'
27+
- 'entrypoint.sh'
28+
- 'scripts/build-matrix.sh'
29+
- 'templates/dockerfile-*.sh'
30+
- '.github/workflows/build-images.yml'
31+
workflow_dispatch:
32+
inputs:
33+
dry_run:
34+
description: "Dry run — print commands without building or pushing"
35+
required: false
36+
default: "false"
37+
type: boolean
38+
39+
jobs:
40+
build-matrix:
41+
name: Build image matrix
42+
runs-on: ubuntu-latest
43+
44+
steps:
45+
- name: Checkout
46+
uses: actions/checkout@v4
47+
48+
# QEMU adds emulation layers so BuildKit can produce ARM64 images
49+
# on the AMD64 GitHub-hosted runner.
50+
- name: Set up QEMU
51+
uses: docker/setup-qemu-action@v3
52+
53+
# Buildx is the CLI plugin that drives multi-platform builds via BuildKit.
54+
- name: Set up Docker Buildx
55+
uses: docker/setup-buildx-action@v3
56+
57+
- name: Log in to Docker Hub
58+
uses: docker/login-action@v3
59+
with:
60+
username: ${{ secrets.DOCKERHUB_USERNAME }}
61+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
62+
63+
- name: Build and push image matrix
64+
run: |
65+
if [[ "${{ inputs.dry_run }}" == "true" ]]; then
66+
./scripts/build-matrix.sh --dry-run
67+
else
68+
./scripts/build-matrix.sh --push --gha-cache
69+
fi

.gitignore

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Jekyll build output
2+
_site/
3+
.jekyll-cache/
4+
5+
# Build paths
6+
built/
7+
build/
8+
9+
# Bundler
10+
.bundle/
11+
vendor/
12+
.vendor/
13+
14+
# macOS
15+
.DS_Store
16+
17+
# IDE
18+
.vscode/
19+
.idea/
20+
21+
# DocOps Lab Dev tooling - vendor configs are synced, not tracked
22+
.config/.vendor/
23+
scripts/.vendor/
24+
25+
# Temporary paths
26+
tmp/
27+
*.tmp
28+
*.bak
29+
*~
30+
*.tmp
31+
*.bak
32+
.warp/
33+
.agents/
34+
35+
# Logs
36+
*.log
37+
38+
# tag::universal-docopslab-dev-configs[]
39+
# Generated config files (merged from base + local)
40+
.config/vale.ini
41+
.config/htmlproofer.yml
42+
# end::universal-docopslab-dev-configs[]
43+
# tag::universal-docopslab-agent[]
44+
.agent/*
45+
# !.agent/team/
46+
# end::universal-docopslab-agent[]
47+
48+
# Gem content paths
49+
gems/**/pkg/
50+
*.gem
51+
52+
# Build artifacts - generated by CI/scripts
53+
artifacts/
54+
tmp/
55+
# DocOps Lab vendor files
56+
57+
# RSpec
58+
.rspec_status
59+
specs/tests/results/
60+
specs/tests/build/
61+
62+
# Test coverage
63+
/coverage/
64+
65+
# Environment variable files
66+
# .env contains project settings (PROJECT_SLUG etc.) and is safe to commit in
67+
# downstream projects. We gitignore it here in the box repo because contributors
68+
# use .env.local for local overrides and the root .env is ephemeral/per-machine.
69+
/.env
70+
/.env.local
71+
.env.*.local
72+
73+
# Stale root-level artifacts — canonical copies live in templates/
74+
# Root-anchored (leading /) so templates/docopsbox.yml is NOT ignored.
75+
/docopsbox.yml
76+
/.config/docopsbox.yml
77+
78+
# Root .devcontainer is a contributor convenience file, not a committed artifact.
79+
# Downstream users get .devcontainer/ from `dxbx init`; box contributors create
80+
# their own locally. See templates/.devcontainer/ for the distributable template.
81+
# Root-anchored so templates/.devcontainer/ is NOT ignored.
82+
/.devcontainer/
83+
84+
# Logs
85+
*.log
86+
87+
# Ruby version managers
88+
.ruby-version
89+
.ruby-gemset

0 commit comments

Comments
 (0)