Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
5afa524
feat(ci): CI-01 added generate ci subcommand entrypoint
mitanuriel Mar 14, 2026
bee699b
refactor: rename submodule to ci_generation
mitanuriel Mar 14, 2026
2aba939
feat(ci): CI-02 CiContext struct and context collector
mitanuriel Mar 20, 2026
965a4de
feat(ci): CI-03 runtime version resolver with 8 unit tests
mitanuriel Mar 20, 2026
cc63af2
feat(ci): CI-04 dependency cache strategy module with 10 unit tests
mitanuriel Mar 20, 2026
7dce9ab
Merge remote-tracking branch 'origin/develop' into feature/ci-pipelin…
mitanuriel Mar 30, 2026
90a051f
chore: add .DS_Store to .gitignore
mitanuriel Mar 30, 2026
a2a8e4a
fix(ci): add Serialize derives to CiContext, RuntimeSetup, CacheConfi…
mitanuriel Mar 30, 2026
7f56576
refactor(ci): extract shared make_ctx test helper
mitanuriel Mar 30, 2026
4e0b72d
chore(ci): mark CI handler wiring gap for integration
mitanuriel Mar 30, 2026
1f539fe
feat(ci): CI-14 CiPipeline skeleton schema
mitanuriel Mar 30, 2026
e7a1675
feat(ci): CI-18 trigger configuration module
mitanuriel Mar 30, 2026
7210c2a
feat(ci): CI-15 placeholder token resolution engine
mitanuriel Mar 30, 2026
1d75373
feat(ci): CI-05 test step generator
mitanuriel Mar 30, 2026
469a66d
feat(ci): CI-06 lint step generator
mitanuriel Mar 30, 2026
a319b5d
feat(ci): CI-07 build step generator
mitanuriel Mar 30, 2026
12f92de
fix(ci): CI-18 scheduled placeholder, CI-06 Gradle Checkstyle variant
mitanuriel Mar 30, 2026
7535960
chore: ignore all .DS_Store files
mitanuriel Mar 30, 2026
d5034f3
feat(ci): CI-08 Docker build and tag step generator
mitanuriel Mar 30, 2026
883855c
feat(ci): CI-09 container image security scan step generator
mitanuriel Mar 30, 2026
2377872
feat(ci): CI-10 secret and credential leak scan step generator
mitanuriel Mar 30, 2026
a9612d9
fix(ci): expand schema fields for CI-08/09/10 spec gaps (buildx, SARI…
mitanuriel Mar 30, 2026
f150891
feat(ci): CI-11 GitHub Actions CI template builder
mitanuriel Mar 30, 2026
67bbd6f
feat(ci): CI-12 Azure Pipelines CI template builder
mitanuriel Mar 30, 2026
4a58bfc
feat(ci): CI-13 GCP Cloud Build CI template builder
mitanuriel Mar 30, 2026
0b69bb7
feat(ci): CI-22 .syncable.ci.toml config struct and merge
mitanuriel Mar 30, 2026
40aed8f
feat(ci): CI-19 secrets inventory generator
mitanuriel Mar 30, 2026
76b777a
feat(ci): CI-16 monorepo CI strategy generator
mitanuriel Mar 30, 2026
0b9fa69
feat(ci): CI-17 multi-version test matrix generator
mitanuriel Mar 30, 2026
08263d6
feat(ci): CI-20 CI file writer & conflict detection
mitanuriel Mar 30, 2026
fe18804
feat(ci): CI-20 close gaps — interactive prompt, merge, summary table
mitanuriel Mar 30, 2026
2609c2e
feat(ci): CI-21/23/24 dry-run renderer, coverage upload step, Slack n…
mitanuriel Mar 30, 2026
c844a44
fix(ci): CI-24 wire --notify flag and config key through handler (gap…
mitanuriel Mar 30, 2026
a07dd4c
test(ci): CI-25/26 unit and integration tests, language fixtures, ins…
mitanuriel Mar 31, 2026
4cd0756
feat(ci): CI-01/27/28 — wire full pipeline, telemetry, update docs
mitanuriel Mar 31, 2026
81de4b8
fix(ci): root-manifest language priority, platform SHA exprs, Azure/G…
mitanuriel Mar 31, 2026
7f35cf4
feat(ci): DEV-43 — secrets_doc scalar walker, platform-aware where_to…
mitanuriel Apr 8, 2026
71fdbda
feat(cd): CD generation foundation (CD-02, CD-17, CD-22)
mitanuriel Apr 14, 2026
fb0697f
feat(cd): Session 2 — Auth & Registry modules (CD-03, CD-04, CD-05, C…
mitanuriel Apr 14, 2026
c3b1ff1
feat(cd): Session 3 — Deploy steps, migration & health check (CD-07..…
mitanuriel Apr 14, 2026
e2c51ab
feat(cd): Templates, Writer, Pipeline Builder & CLI Entrypoint
mitanuriel Apr 14, 2026
2694691
feat(cd): Advanced features (CD-12..CD-16, CD-21, CD-29)
mitanuriel Apr 14, 2026
54706a2
feat(cd): combined CI+CD command, config, secrets doc & tests (CD-23/…
mitanuriel Apr 14, 2026
048fad1
docs(cd): add generate cd and generate ci-cd sections to command-over…
mitanuriel Apr 15, 2026
cd5e652
fix(CD-24): apply migration_command from .syncable.cd.toml to pipeline
mitanuriel Apr 15, 2026
89dd103
fix(cd): correct YAML step indentation in Azure/GCP/Hetzner templates
mitanuriel Apr 21, 2026
7a057f3
Merge remote-tracking branch 'origin/main' into feature/ci-pipeline-g…
mitanuriel Apr 24, 2026
5905719
Merge pull request #330 from syncable-dev/feature/ci-pipeline-generation
Alex793x May 17, 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
Binary file removed .DS_Store
Binary file not shown.
12 changes: 11 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ docs/**
!docs/command-overview.md
!docs/qoder-directory.md

.github/copilot-instructions.md

# Generated by cargo mutants
# Contains mutation testing data
**/mutants.out*/
Expand All @@ -44,4 +46,12 @@ syncable-ide-companion/*.vsix
syncable-ide-companion/node_modules/
syncable-ide-companion/dist/

syncable-cli.tape
.DS_Store
**/.DS_Store

# Generated CD/CI pipeline output (sync-ctl generate cd/ci)
.github/workflows/deploy-azure.yml
.github/workflows/deploy-gcp.yml
.github/workflows/deploy-hetzner.yml
.syncable/cd-manifest.toml
.syncable/SECRETS_REQUIRED.md
40 changes: 27 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ assert_cmd = "2"
predicates = "3"
tempfile = "3"
proptest = "1"
insta = { version = "1", features = ["yaml"] }

# Fast debug builds - prioritize compile speed over runtime
[profile.dev]
Expand Down
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,20 @@ This installs 11 skills (7 command + 4 workflow) into your AI coding agent. Then
```bash
cargo install syncable-cli
sync-ctl analyze .

# Generate a CI pipeline skeleton (GitHub Actions, Azure Pipelines, or Cloud Build)
sync-ctl generate ci . --platform gcp --dry-run # preview without writing files
sync-ctl generate ci . --platform azure # write azure-pipelines.yml
sync-ctl generate ci . --platform hetzner --notify # with Slack failure alert

# Generate a CD pipeline skeleton
sync-ctl generate cd . --platform gcp --target cloud-run --dry-run
sync-ctl generate cd . --platform azure --target aks -o ./pipelines
sync-ctl generate cd . --platform hetzner --target vps --notify

# Generate both CI + CD in one shot
sync-ctl generate ci-cd . --platform gcp --target cloud-run --dry-run
sync-ctl generate ci-cd . --platform hetzner --target vps --notify
```

## 🤖 AI Agent Skills
Expand Down
58 changes: 58 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
trigger:
branches:
include:
- main
tags:
include:
- v*
pr:
branches:
include:
- main
schedules:
- cron: '{{CRON_SCHEDULE}}'
displayName: Scheduled build
branches:
include:
- main
always: true
pool:
vmImage: ubuntu-latest
steps:
- script: rustup default stable
displayName: Set up runtime
- task: Cache@2
displayName: Cache dependencies
inputs:
key: cargo | $(Agent.OS) | **/Cargo.lock
path: |-
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
target/
restoreKeys: cargo | $(Agent.OS)
- script: cargo fetch
displayName: Install dependencies
- script: cargo clippy -- -D warnings
displayName: Lint
- script: cargo test
displayName: Test
- script: cargo build --release
displayName: Build
- script: docker build -t {{REGISTRY_URL}}/{{IMAGE_NAME}}:$(Build.SourceVersion) .
displayName: Build Docker image
- script: |-
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
trivy image --exit-code 1 --severity CRITICAL,HIGH --format sarif --output trivy-results.sarif {{REGISTRY_URL}}/{{IMAGE_NAME}}:$(Build.SourceVersion)
displayName: Scan image (Trivy)
- script: |-
curl -sSfL https://github.com/gitleaks/gitleaks/releases/latest/download/gitleaks_linux_x64.tar.gz | tar xz -C /usr/local/bin
gitleaks detect --source . --exit-code 1
displayName: Secret scan (Gitleaks)
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)
- task: PublishBuildArtifacts@1
displayName: Upload artifact
inputs:
artifactName: syncable-cli
pathToPublish: target/release/
Loading
Loading