opsscript-gate 0.6.0__tar.gz → 0.6.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. opsscript_gate-0.6.2/.github/workflow-templates/opsscript-gate.yml +41 -0
  2. opsscript_gate-0.6.2/.github/workflow-templates/properties.json +6 -0
  3. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/CHANGELOG.md +18 -0
  4. opsscript_gate-0.6.2/CITATION.cff +12 -0
  5. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/PKG-INFO +20 -8
  6. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/README.md +14 -4
  7. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/README.zh-CN.md +6 -4
  8. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/ROADMAP.md +8 -1
  9. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/docs/configuration.md +3 -3
  10. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/docs/gpt-oss.md +1 -1
  11. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/github-actions/README.md +1 -1
  12. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/github-actions/workflow.yml +1 -1
  13. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/pyproject.toml +11 -3
  14. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/__init__.py +1 -1
  15. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/config.py +1 -1
  16. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.gitattributes +0 -0
  17. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  18. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/ISSUE_TEMPLATE/distro_request.yml +0 -0
  19. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  20. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/assets/social-preview.png +0 -0
  21. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/pull_request_template.md +0 -0
  22. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/workflows/demo.yml +0 -0
  23. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/workflows/release.yml +0 -0
  24. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.github/workflows/test.yml +0 -0
  25. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/.gitignore +0 -0
  26. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/CONTRIBUTING.md +0 -0
  27. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/LICENSE +0 -0
  28. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/SECURITY.md +0 -0
  29. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/action.yml +0 -0
  30. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/docs/troubleshooting.md +0 -0
  31. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/alpine-incompatibility/README.md +0 -0
  32. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/alpine-incompatibility/apt_dependency.sh +0 -0
  33. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/basic/README.md +0 -0
  34. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/basic/clean_setup.sh +0 -0
  35. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/interactive-hang/README.md +0 -0
  36. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/examples/interactive-hang/prompt_confirm.sh +0 -0
  37. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/cli.py +0 -0
  38. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/discovery.py +0 -0
  39. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/models.py +0 -0
  40. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/remediation.py +0 -0
  41. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/reporter.py +0 -0
  42. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/src/opsscript_gate/runner.py +0 -0
  43. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/tests/fixtures/fail_deps.sh +0 -0
  44. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/tests/fixtures/fail_hang.sh +0 -0
  45. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/tests/fixtures/pass_basic.sh +0 -0
  46. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/tests/test_action_contract.py +0 -0
  47. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/tests/test_onboarding.py +0 -0
  48. {opsscript_gate-0.6.0 → opsscript_gate-0.6.2}/tests/test_runner.py +0 -0
@@ -0,0 +1,41 @@
1
+ name: Shell compatibility
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - '**/*.sh'
7
+ - '**/*.bash'
8
+ push:
9
+ branches: [$default-branch]
10
+ paths:
11
+ - '**/*.sh'
12
+ - '**/*.bash'
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ shell-compatibility:
19
+ name: Debian, Ubuntu and Alpine
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v7
24
+ with:
25
+ persist-credentials: false
26
+
27
+ - name: Run OpsScript Gate
28
+ uses: Mresyzz/opsscript-gate@v0.6.2
29
+ with:
30
+ shell: auto
31
+ network: none
32
+ format: markdown
33
+ output: reports/opsscript-gate.md
34
+
35
+ - name: Upload compatibility report
36
+ if: always()
37
+ uses: actions/upload-artifact@v4
38
+ with:
39
+ name: opsscript-gate-report
40
+ path: reports/opsscript-gate.md
41
+ if-no-files-found: ignore
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "OpsScript Gate shell compatibility",
3
+ "description": "Run shell scripts in Debian, Ubuntu and Alpine containers on changes to shell files.",
4
+ "iconName": "octicon-shield-check",
5
+ "categories": ["Continuous integration", "Testing"]
6
+ }
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.2] - 2026-10-01
4
+
5
+ ### Changed
6
+ - Updated the published README and Action examples to the current release tag.
7
+ - Added the InstallReady browser scanner to the package homepage and project links.
8
+ - Made the starter workflow follow each repository's default branch.
9
+
10
+ ## [0.6.1] - 2026-10-01
11
+
12
+ ### Added
13
+ - Added a zero-configuration GitHub workflow starter that runs only when shell files change.
14
+ - Added a copyable compatibility report artifact to the starter workflow.
15
+ - Added citation metadata and clearer PyPI keywords for installer and bootstrap use cases.
16
+
17
+ ### Changed
18
+ - Marked the project Beta now that the default matrix, safety controls, reports, presets, and changed-script mode are released.
19
+ - Updated the roadmap to show the v0.5 and v0.6 controls as delivered.
20
+
3
21
  ## [0.6.0] - 2026-09-30
4
22
 
5
23
  ### Added
@@ -0,0 +1,12 @@
1
+ cff-version: 1.2.0
2
+ title: OpsScript Gate
3
+ message: If this project helps your shell compatibility testing, please cite it.
4
+ type: software
5
+ authors:
6
+ - family-names: Mresyzz
7
+ given-names: Mresy
8
+ version: 0.6.2
9
+ date-released: 2026-09-30
10
+ repository-code: https://github.com/Mresyzz/opsscript-gate
11
+ url: https://github.com/Mresyzz/opsscript-gate
12
+ license: MIT
@@ -1,16 +1,18 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: opsscript-gate
3
- Version: 0.6.0
3
+ Version: 0.6.2
4
4
  Summary: Run Linux shell scripts in Debian, Ubuntu and Alpine containers to catch runtime compatibility failures before merge
5
- Project-URL: Homepage, https://github.com/Mresyzz/opsscript-gate
5
+ Project-URL: Homepage, https://mresyzz.github.io/InstallReady/
6
+ Project-URL: Demo, https://mresyzz.github.io/InstallReady/?repo=Mresyzz%2Fopsscript-gate
6
7
  Project-URL: Repository, https://github.com/Mresyzz/opsscript-gate
7
8
  Project-URL: Issues, https://github.com/Mresyzz/opsscript-gate/issues
8
9
  Project-URL: Changelog, https://github.com/Mresyzz/opsscript-gate/blob/main/CHANGELOG.md
10
+ Project-URL: Documentation, https://github.com/Mresyzz/opsscript-gate/tree/main/docs
9
11
  Author: Mresyzz
10
12
  License: MIT
11
13
  License-File: LICENSE
12
- Keywords: ci,compatibility,cross-distro,devops,docker,github-actions,linux,posix,shell,testing
13
- Classifier: Development Status :: 3 - Alpha
14
+ Keywords: alpine,bootstrap,ci,compatibility,cross-distro,debian,devops,docker,github-actions,installer,linux,posix,shell,shellcheck-alternative,testing,ubuntu
15
+ Classifier: Development Status :: 4 - Beta
14
16
  Classifier: Intended Audience :: Developers
15
17
  Classifier: Intended Audience :: System Administrators
16
18
  Classifier: License :: OSI Approved :: MIT License
@@ -45,9 +47,16 @@ Description-Content-Type: text/markdown
45
47
 
46
48
  It is designed for shell testing, portable shell validation, Bash/POSIX compatibility checks, and cross-distro CI where syntax-only tooling is not enough.
47
49
 
50
+ If your repository contains an installer, bootstrap script, or shell entrypoint, the fastest path is to
51
+ copy the [zero-configuration workflow](.github/workflow-templates/opsscript-gate.yml). It only runs when
52
+ shell files change, uses offline containers by default, and uploads a report that can be attached to a PR.
53
+ No account, API key, or service signup is required.
54
+
55
+ Try the browser scanner: [InstallReady](https://mresyzz.github.io/InstallReady/?repo=Mresyzz%2Fopsscript-gate) checks this repository without executing code or requiring a login.
56
+
48
57
  ---
49
58
 
50
- ## Current release: v0.6.0
59
+ ## Current release: v0.6.2
51
60
 
52
61
  The current release includes a project config file, a dry-run plan, presets, exclusions,
53
62
  saved reports, and changed-script selection for pull requests. The project controls
@@ -75,6 +84,9 @@ See [configuration and migration](docs/configuration.md) and
75
84
 
76
85
  Add this workflow to `.github/workflows/shell-compat.yml`:
77
86
 
87
+ You can also select **OpsScript Gate shell compatibility** from GitHub's workflow templates, or copy the
88
+ maintained [starter workflow](.github/workflow-templates/opsscript-gate.yml).
89
+
78
90
  You can copy the maintained example from [`examples/github-actions/workflow.yml`](examples/github-actions/workflow.yml)
79
91
  and change the `script-path`, or use the minimal workflow below.
80
92
 
@@ -87,7 +99,7 @@ jobs:
87
99
  runs-on: ubuntu-latest
88
100
  steps:
89
101
  - uses: actions/checkout@v7
90
- - uses: Mresyzz/opsscript-gate@v0.6.0
102
+ - uses: Mresyzz/opsscript-gate@v0.6.2
91
103
  ```
92
104
 
93
105
  This zero-configuration form discovers shell scripts in the repository. Use
@@ -98,7 +110,7 @@ repository has a single installer. For self-hosted model installers, see the
98
110
  Or test a specific script with custom execution modes:
99
111
 
100
112
  ```yaml
101
- - uses: Mresyzz/opsscript-gate@v0.6.0
113
+ - uses: Mresyzz/opsscript-gate@v0.6.2
102
114
  with:
103
115
  script-path: scripts/install.sh
104
116
  shell: auto
@@ -129,7 +141,7 @@ unrelated scripts:
129
141
  - uses: actions/checkout@v7
130
142
  with:
131
143
  fetch-depth: 0
132
- - uses: Mresyzz/opsscript-gate@v0.6.0
144
+ - uses: Mresyzz/opsscript-gate@v0.6.2
133
145
  with:
134
146
  changed-since: ${{ github.event.pull_request.base.sha }}
135
147
  preset: minimal
@@ -17,9 +17,16 @@
17
17
 
18
18
  It is designed for shell testing, portable shell validation, Bash/POSIX compatibility checks, and cross-distro CI where syntax-only tooling is not enough.
19
19
 
20
+ If your repository contains an installer, bootstrap script, or shell entrypoint, the fastest path is to
21
+ copy the [zero-configuration workflow](.github/workflow-templates/opsscript-gate.yml). It only runs when
22
+ shell files change, uses offline containers by default, and uploads a report that can be attached to a PR.
23
+ No account, API key, or service signup is required.
24
+
25
+ Try the browser scanner: [InstallReady](https://mresyzz.github.io/InstallReady/?repo=Mresyzz%2Fopsscript-gate) checks this repository without executing code or requiring a login.
26
+
20
27
  ---
21
28
 
22
- ## Current release: v0.6.0
29
+ ## Current release: v0.6.2
23
30
 
24
31
  The current release includes a project config file, a dry-run plan, presets, exclusions,
25
32
  saved reports, and changed-script selection for pull requests. The project controls
@@ -47,6 +54,9 @@ See [configuration and migration](docs/configuration.md) and
47
54
 
48
55
  Add this workflow to `.github/workflows/shell-compat.yml`:
49
56
 
57
+ You can also select **OpsScript Gate shell compatibility** from GitHub's workflow templates, or copy the
58
+ maintained [starter workflow](.github/workflow-templates/opsscript-gate.yml).
59
+
50
60
  You can copy the maintained example from [`examples/github-actions/workflow.yml`](examples/github-actions/workflow.yml)
51
61
  and change the `script-path`, or use the minimal workflow below.
52
62
 
@@ -59,7 +69,7 @@ jobs:
59
69
  runs-on: ubuntu-latest
60
70
  steps:
61
71
  - uses: actions/checkout@v7
62
- - uses: Mresyzz/opsscript-gate@v0.6.0
72
+ - uses: Mresyzz/opsscript-gate@v0.6.2
63
73
  ```
64
74
 
65
75
  This zero-configuration form discovers shell scripts in the repository. Use
@@ -70,7 +80,7 @@ repository has a single installer. For self-hosted model installers, see the
70
80
  Or test a specific script with custom execution modes:
71
81
 
72
82
  ```yaml
73
- - uses: Mresyzz/opsscript-gate@v0.6.0
83
+ - uses: Mresyzz/opsscript-gate@v0.6.2
74
84
  with:
75
85
  script-path: scripts/install.sh
76
86
  shell: auto
@@ -101,7 +111,7 @@ unrelated scripts:
101
111
  - uses: actions/checkout@v7
102
112
  with:
103
113
  fetch-depth: 0
104
- - uses: Mresyzz/opsscript-gate@v0.6.0
114
+ - uses: Mresyzz/opsscript-gate@v0.6.2
105
115
  with:
106
116
  changed-since: ${{ github.event.pull_request.base.sha }}
107
117
  preset: minimal
@@ -8,9 +8,11 @@ Bash 依赖、包管理器假设和交互式阻塞。它与 ShellCheck 互补。
8
8
  适合独立安装脚本、容器入口脚本和发布脚本。每次只挂载目标脚本,
9
9
  不挂载整个仓库;依赖其他仓库文件的脚本需要现有项目测试配合。
10
10
 
11
- ## 当前版本 v0.6.0
11
+ 也可以直接打开 [InstallReady 在线扫描器](https://mresyzz.github.io/InstallReady/?repo=Mresyzz%2Fopsscript-gate),无需登录即可检查公开仓库。
12
12
 
13
- v0.6.0 已作为正式版本发布;如果你要从源码验证当前分支,也可以执行:
13
+ ## 当前版本 v0.6.2
14
+
15
+ v0.6.2 已作为正式版本发布;如果你要从源码验证当前分支,也可以执行:
14
16
 
15
17
  ```bash
16
18
  pip install -e .
@@ -25,7 +27,7 @@ opsscript-gate run --dry-run
25
27
  opsscript-gate run --format json --output reports/compatibility.json
26
28
  ```
27
29
 
28
- `init` 生成配置和 GitHub 工作流,不覆盖已有文件。工作流引用 `v0.6.0`。
30
+ `init` 生成配置和 GitHub 工作流,不覆盖已有文件。工作流引用 `v0.6.2`。
29
31
  预览不需要 Docker;真实运行需要 Python 3.10+
30
32
  和可访问的 Linux Docker 引擎。
31
33
 
@@ -51,7 +53,7 @@ opsscript-gate run --format json --output reports/compatibility.json
51
53
  - uses: actions/checkout@v7
52
54
  with:
53
55
  fetch-depth: 0
54
- - uses: Mresyzz/opsscript-gate@v0.6.0
56
+ - uses: Mresyzz/opsscript-gate@v0.6.2
55
57
  with:
56
58
  changed-since: ${{ github.event.pull_request.base.sha }}
57
59
  preset: minimal
@@ -25,7 +25,14 @@ This roadmap tracks features delivered in recent releases and areas under consid
25
25
 
26
26
  ---
27
27
 
28
- ## Planned for Future Releases (v0.5.0+)
28
+ ## Delivered in v0.5.0 and v0.6.0
29
+
30
+ - [x] Project configuration with strict validation and CLI/Action precedence.
31
+ - [x] Dry-run plans, `minimal` and `ubuntu` presets, exclusions, and saved reports.
32
+ - [x] Bounded discovery with symlink and oversized-file protection.
33
+ - [x] Changed-script selection with `--changed-since` for pull requests.
34
+
35
+ ## Planned for Future Releases
29
36
 
30
37
  ### 1. Matrix & Distribution Presets
31
38
  - [ ] **RPM-based distributions**: Evaluate support for Enterprise Linux baselines (e.g. Rocky Linux 9, AlmaLinux, Fedora).
@@ -11,7 +11,7 @@ opsscript-gate run --dry-run
11
11
  ```
12
12
 
13
13
  `init` refuses to overwrite either `.opsscript-gate.json` or
14
- `.github/workflows/opsscript-gate.yml`. The generated workflow uses the v0.6.0 tag.
14
+ `.github/workflows/opsscript-gate.yml`. The generated workflow uses the v0.6.2 tag.
15
15
 
16
16
  The generated config uses the two-image `minimal` preset, honors recognized shell
17
17
  shebangs, disables networking, and excludes `tests/*` and `examples/*`. Review these
@@ -95,7 +95,7 @@ For pull requests, set `changed-since` to the base commit and fetch full Git his
95
95
  - uses: actions/checkout@v7
96
96
  with:
97
97
  fetch-depth: 0
98
- - uses: Mresyzz/opsscript-gate@v0.6.0
98
+ - uses: Mresyzz/opsscript-gate@v0.6.2
99
99
  with:
100
100
  changed-since: ${{ github.event.pull_request.base.sha }}
101
101
  preset: minimal
@@ -105,7 +105,7 @@ The Action passes when no changed shell scripts are selected. This keeps unrelat
105
105
  documentation or application changes from starting container jobs.
106
106
 
107
107
  ```yaml
108
- - uses: Mresyzz/opsscript-gate@v0.6.0
108
+ - uses: Mresyzz/opsscript-gate@v0.6.2
109
109
  with:
110
110
  config: .opsscript-gate.json
111
111
  format: json
@@ -33,7 +33,7 @@ jobs:
33
33
  fetch-depth: 0
34
34
  persist-credentials: false
35
35
 
36
- - uses: Mresyzz/opsscript-gate@v0.6.0
36
+ - uses: Mresyzz/opsscript-gate@v0.6.2
37
37
  with:
38
38
  changed-since: ${{ github.event.pull_request.base.sha }}
39
39
  preset: minimal
@@ -2,4 +2,4 @@
2
2
 
3
3
  This example shows a GitHub Actions workflow for checking a shell script on pull requests.
4
4
 
5
- Copy `workflow.yml` into your repository at `.github/workflows/script-gate.yml` and point `script-path` to the script you want to validate. The example uses the current v0.6.0 Action release.
5
+ Copy `workflow.yml` into your repository at `.github/workflows/script-gate.yml` and point `script-path` to the script you want to validate. The example uses the current v0.6.2 Action release.
@@ -19,7 +19,7 @@ jobs:
19
19
  persist-credentials: false
20
20
 
21
21
  - name: Run OpsScript Gate
22
- uses: Mresyzz/opsscript-gate@v0.6.0
22
+ uses: Mresyzz/opsscript-gate@v0.6.2
23
23
  with:
24
24
  script-path: 'scripts/deploy.sh'
25
25
  shell: auto
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "opsscript-gate"
7
- version = "0.6.0"
7
+ version = "0.6.2"
8
8
  description = "Run Linux shell scripts in Debian, Ubuntu and Alpine containers to catch runtime compatibility failures before merge"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -23,9 +23,15 @@ keywords = [
23
23
  "cross-distro",
24
24
  "posix",
25
25
  "testing",
26
+ "installer",
27
+ "bootstrap",
28
+ "debian",
29
+ "ubuntu",
30
+ "alpine",
31
+ "shellcheck-alternative",
26
32
  ]
27
33
  classifiers = [
28
- "Development Status :: 3 - Alpha",
34
+ "Development Status :: 4 - Beta",
29
35
  "Intended Audience :: Developers",
30
36
  "Intended Audience :: System Administrators",
31
37
  "License :: OSI Approved :: MIT License",
@@ -41,10 +47,12 @@ dependencies = [
41
47
  ]
42
48
 
43
49
  [project.urls]
44
- Homepage = "https://github.com/Mresyzz/opsscript-gate"
50
+ Homepage = "https://mresyzz.github.io/InstallReady/"
51
+ Demo = "https://mresyzz.github.io/InstallReady/?repo=Mresyzz%2Fopsscript-gate"
45
52
  Repository = "https://github.com/Mresyzz/opsscript-gate"
46
53
  Issues = "https://github.com/Mresyzz/opsscript-gate/issues"
47
54
  Changelog = "https://github.com/Mresyzz/opsscript-gate/blob/main/CHANGELOG.md"
55
+ Documentation = "https://github.com/Mresyzz/opsscript-gate/tree/main/docs"
48
56
 
49
57
  [project.optional-dependencies]
50
58
  test = [
@@ -1,4 +1,4 @@
1
1
  """OpsScript Gate: Lightweight cross-distro compatibility pre-check for Linux ops scripts."""
2
2
 
3
- __version__ = "0.6.0"
3
+ __version__ = "0.6.2"
4
4
  __all__ = ["__version__"]
@@ -63,7 +63,7 @@ jobs:
63
63
  - uses: actions/checkout@v7
64
64
  with:
65
65
  persist-credentials: false
66
- - uses: Mresyzz/opsscript-gate@v0.6.0
66
+ - uses: Mresyzz/opsscript-gate@v0.6.2
67
67
  with:
68
68
  config: .opsscript-gate.json
69
69
  """,
File without changes