mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-03 10:37:21 +09:00
The existing suite asserts on workflow YAML. That catches a rename or a deleted `if:` and nothing else: it cannot tell whether the shell inside a `run:` block does what the step name claims, and it stayed green while the logic underneath was wrong — twice, in the two preceding rounds. Add hack/release-changelog-behaviour.bats, which runs things for real. The GitHub Actions semantics the whole non-blocking design rests on are now verified by executing them. hack/testdata/needs-semantics.yaml mirrors the promote / changelog / open-pr shapes with a fatal (non-AI) step in the changelog job, and `act` runs it. Result: open-pr DOES run when a job it needs has failed, `needs.changelog.result` is `failure`, and — the part that could not be read off the YAML — a failed job's outputs come back EMPTY, while a successful job's propagate. That empty-output behaviour is precisely why open-pr re-establishes changelog presence from disk instead of trusting needs.changelog.outputs. Deleting the `if:` from the fixture makes open-pr get skipped, so the gate is demonstrably load-bearing. The git logic moves into hack/changelog-preserve.sh and is exercised against real bare remotes: a branch that exists, one that does not, one with no changelog, one with an empty changelog, and the full preserve/checkout -B/restore/force-push cycle promote actually performs. The last of these directly reproduces the regression the preserve step exists to prevent. An empty changelog is deliberately NOT preserved — it would suppress generation and then publish as blank notes. finalize's release-body selection runs under node across all three inputs (good, whitespace-only, absent) and the resulting decision table is compared as a whole. Replace the shell overlay with a sparse second actions/checkout of the dispatch ref at .release-tooling. The overlay had a bootstrap problem I introduced: the script that fetches missing tooling was itself missing from the rc tree, so it could never have worked for exactly the trees that need it. actions/checkout comes from the runner, not the repo, so it has no such circularity. .release-tooling is gitignored because promote runs `git add -A`, and the contract suite pins that. All 21 tests mutation-checked. Breaking changelog-preserve.sh, making it return an empty file, removing the fixture's `if:`, dropping the tooling checkout, and renaming its path each fail the suite and pass on restore. Not covered, and stated in the suite header rather than implied: the AI generation step, the real GitHub API calls, and whether the sparse checkout resolves on GitHub's runners. Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
132 lines
3.2 KiB
Plaintext
132 lines
3.2 KiB
Plaintext
_out
|
|
_repos
|
|
.git
|
|
.idea
|
|
.vscode
|
|
|
|
# Go binaries built straight into the repository root.
|
|
#
|
|
# `go build ./cmd/<name>` (without -o) drops the executable in the working
|
|
# directory under the package name, so every package under cmd/ has a
|
|
# root-level binary waiting to happen — each ~80 MB, and nothing else here
|
|
# matched them, leaving `git add .` one keystroke from committing one.
|
|
/api-gate
|
|
/backup-controller
|
|
/backupstrategy-controller
|
|
/check-readiness
|
|
/cozypkg
|
|
/cozystack-api
|
|
/cozystack-controller
|
|
/cozystack-operator
|
|
/flux-plunger
|
|
/flux-shard-operator
|
|
/kubeovn-plunger
|
|
/lineage-controller-webhook
|
|
/securitygroup-controller
|
|
|
|
# User-specific stuff
|
|
.idea/**/workspace.xml
|
|
.idea/**/tasks.xml
|
|
.idea/**/usage.statistics.xml
|
|
.idea/**/dictionaries
|
|
.idea/**/shelf
|
|
|
|
# AWS User-specific
|
|
.idea/**/aws.xml
|
|
|
|
# Generated files
|
|
.idea/**/contentModel.xml
|
|
|
|
# Sensitive or high-churn files
|
|
.idea/**/dataSources/
|
|
.idea/**/dataSources.ids
|
|
.idea/**/dataSources.local.xml
|
|
.idea/**/sqlDataSources.xml
|
|
.idea/**/dynamic.xml
|
|
.idea/**/uiDesigner.xml
|
|
.idea/**/dbnavigator.xml
|
|
|
|
# Gradle
|
|
.idea/**/gradle.xml
|
|
.idea/**/libraries
|
|
|
|
# Gradle and Maven with auto-import
|
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
# since they will be recreated, and may cause churn. Uncomment if using
|
|
# auto-import.
|
|
# .idea/artifacts
|
|
# .idea/compiler.xml
|
|
# .idea/jarRepositories.xml
|
|
# .idea/modules.xml
|
|
# .idea/*.iml
|
|
# .idea/modules
|
|
# *.iml
|
|
# *.ipr
|
|
|
|
# CMake
|
|
cmake-build-*/
|
|
|
|
# Mongo Explorer plugin
|
|
.idea/**/mongoSettings.xml
|
|
|
|
# File-based project format
|
|
*.iws
|
|
|
|
# IntelliJ
|
|
out/
|
|
|
|
# mpeltonen/sbt-idea plugin
|
|
.idea_modules/
|
|
|
|
# JIRA plugin
|
|
atlassian-ide-plugin.xml
|
|
|
|
# Cursive Clojure plugin
|
|
.idea/replstate.xml
|
|
|
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
com_crashlytics_export_strings.xml
|
|
crashlytics.properties
|
|
crashlytics-build.properties
|
|
fabric.properties
|
|
|
|
# Editor-based Rest Client
|
|
.idea/httpRequests
|
|
|
|
# Android studio 3.1+ serialized cache file
|
|
.idea/caches/build_file_checksums.ser
|
|
|
|
.DS_Store
|
|
**/.DS_Store
|
|
|
|
tmp/
|
|
|
|
# build revision marker (generated by make image-packages)
|
|
packages/core/platform/.build-revision
|
|
|
|
# Agent tooling. The md-no-hardwrap hook and its registration are shared with
|
|
# every contributor, so they are tracked by name; personal agent state (local
|
|
# settings overrides, worktrees, session data) stays out of git. Put personal
|
|
# overrides in .claude/settings.local.json -- .claude/settings.json is tracked
|
|
# and git will overwrite it on pull.
|
|
.claude/*
|
|
!.claude/hooks/
|
|
.claude/hooks/*
|
|
!.claude/hooks/md-no-hardwrap.py
|
|
!.claude/settings.json
|
|
|
|
# Credentials and runtime state minted by the backup/restore demo scripts
|
|
# under examples/backups/*/. Files are written by 00-helpers.sh +
|
|
# 02-create-bucket.sh + 04-create-backupjob.sh; cleanup.sh deletes them
|
|
# on teardown. Keep them out of git so a tenant who runs the demo and
|
|
# then `git add .` does not accidentally commit S3 keys.
|
|
examples/backups/*/.bucket-info.env
|
|
examples/backups/*/.sentinel.env
|
|
examples/backups/*/.backup-name.env
|
|
packages/core/platform/images/migrations/etcd-operator-crds/
|
|
|
|
# CI scratch: promote-rc.yaml checks the dispatch ref here so release tooling
|
|
# (validator, agent instructions) is current even when the checked-out rc tag
|
|
# predates it. Never committed.
|
|
.release-tooling
|