kettle-dev 1.2.3 → 2.0.0

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 (133) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +176 -3
  4. data/CITATION.cff +2 -2
  5. data/CONTRIBUTING.md +11 -17
  6. data/README.md +390 -319
  7. data/exe/kettle-dev-setup +12 -63
  8. data/exe/kettle-gh-release +82 -0
  9. data/lib/kettle/dev/gem_spec_reader.rb +2 -2
  10. data/lib/kettle/dev/open_collective_config.rb +12 -0
  11. data/lib/kettle/dev/rakelib/yard.rake +15 -0
  12. data/lib/kettle/dev/tasks/ci_task.rb +4 -4
  13. data/lib/kettle/dev/version.rb +1 -1
  14. data/lib/kettle/dev.rb +4 -12
  15. data/sig/kettle/dev/source_merger.rbs +40 -56
  16. data.tar.gz.sig +0 -0
  17. metadata +15 -144
  18. metadata.gz.sig +0 -0
  19. data/.aiignore.example +0 -19
  20. data/.devcontainer/apt-install/devcontainer-feature.json +0 -9
  21. data/.devcontainer/apt-install/install.sh +0 -11
  22. data/.devcontainer/devcontainer.json +0 -28
  23. data/.env.local.example +0 -31
  24. data/.envrc +0 -47
  25. data/.envrc.example +0 -51
  26. data/.envrc.no-osc.example +0 -51
  27. data/.git-hooks/commit-msg +0 -54
  28. data/.git-hooks/commit-subjects-goalie.txt +0 -8
  29. data/.git-hooks/footer-template.erb.txt +0 -16
  30. data/.git-hooks/prepare-commit-msg +0 -8
  31. data/.github/.codecov.yml.example +0 -14
  32. data/.github/FUNDING.yml +0 -13
  33. data/.github/FUNDING.yml.no-osc.example +0 -13
  34. data/.github/dependabot.yml +0 -13
  35. data/.github/workflows/ancient.yml +0 -83
  36. data/.github/workflows/ancient.yml.example +0 -81
  37. data/.github/workflows/auto-assign.yml +0 -21
  38. data/.github/workflows/codeql-analysis.yml +0 -70
  39. data/.github/workflows/coverage.yml +0 -127
  40. data/.github/workflows/coverage.yml.example +0 -127
  41. data/.github/workflows/current.yml +0 -116
  42. data/.github/workflows/current.yml.example +0 -115
  43. data/.github/workflows/dep-heads.yml +0 -117
  44. data/.github/workflows/dependency-review.yml +0 -20
  45. data/.github/workflows/discord-notifier.yml.example +0 -39
  46. data/.github/workflows/heads.yml +0 -117
  47. data/.github/workflows/heads.yml.example +0 -116
  48. data/.github/workflows/jruby.yml +0 -82
  49. data/.github/workflows/jruby.yml.example +0 -72
  50. data/.github/workflows/legacy.yml +0 -76
  51. data/.github/workflows/license-eye.yml +0 -40
  52. data/.github/workflows/locked_deps.yml +0 -85
  53. data/.github/workflows/opencollective.yml +0 -40
  54. data/.github/workflows/style.yml +0 -67
  55. data/.github/workflows/supported.yml +0 -75
  56. data/.github/workflows/truffle.yml +0 -99
  57. data/.github/workflows/unlocked_deps.yml +0 -84
  58. data/.github/workflows/unsupported.yml +0 -76
  59. data/.gitignore +0 -50
  60. data/.gitlab-ci.yml.example +0 -134
  61. data/.idea/.gitignore +0 -45
  62. data/.junie/guidelines-rbs.md +0 -49
  63. data/.junie/guidelines.md +0 -141
  64. data/.junie/guidelines.md.example +0 -140
  65. data/.licenserc.yaml +0 -7
  66. data/.opencollective.yml +0 -3
  67. data/.opencollective.yml.example +0 -3
  68. data/.qlty/qlty.toml +0 -79
  69. data/.rspec +0 -9
  70. data/.rubocop.yml +0 -13
  71. data/.rubocop_rspec.yml +0 -33
  72. data/.simplecov +0 -16
  73. data/.simplecov.example +0 -11
  74. data/.tool-versions +0 -1
  75. data/.yardignore +0 -13
  76. data/.yardopts +0 -14
  77. data/Appraisal.root.gemfile +0 -10
  78. data/Appraisals +0 -151
  79. data/Appraisals.example +0 -102
  80. data/CHANGELOG.md.example +0 -47
  81. data/CONTRIBUTING.md.example +0 -227
  82. data/FUNDING.md.no-osc.example +0 -63
  83. data/Gemfile +0 -40
  84. data/Gemfile.example +0 -34
  85. data/README.md.example +0 -570
  86. data/README.md.no-osc.example +0 -536
  87. data/Rakefile.example +0 -68
  88. data/gemfiles/modular/coverage.gemfile +0 -6
  89. data/gemfiles/modular/debug.gemfile +0 -13
  90. data/gemfiles/modular/documentation.gemfile +0 -14
  91. data/gemfiles/modular/erb/r2/v3.0.gemfile +0 -1
  92. data/gemfiles/modular/erb/r2.3/default.gemfile +0 -6
  93. data/gemfiles/modular/erb/r2.6/v2.2.gemfile +0 -3
  94. data/gemfiles/modular/erb/r3/v5.0.gemfile +0 -1
  95. data/gemfiles/modular/erb/r3.1/v4.0.gemfile +0 -2
  96. data/gemfiles/modular/erb/vHEAD.gemfile +0 -2
  97. data/gemfiles/modular/injected.gemfile +0 -60
  98. data/gemfiles/modular/mutex_m/r2/v0.3.gemfile +0 -2
  99. data/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile +0 -3
  100. data/gemfiles/modular/mutex_m/r3/v0.3.gemfile +0 -2
  101. data/gemfiles/modular/mutex_m/vHEAD.gemfile +0 -2
  102. data/gemfiles/modular/optional.gemfile +0 -8
  103. data/gemfiles/modular/optional.gemfile.example +0 -5
  104. data/gemfiles/modular/runtime_heads.gemfile +0 -10
  105. data/gemfiles/modular/runtime_heads.gemfile.example +0 -8
  106. data/gemfiles/modular/stringio/r2/v3.0.gemfile +0 -5
  107. data/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile +0 -4
  108. data/gemfiles/modular/stringio/r3/v3.0.gemfile +0 -5
  109. data/gemfiles/modular/stringio/vHEAD.gemfile +0 -2
  110. data/gemfiles/modular/style.gemfile +0 -25
  111. data/gemfiles/modular/style.gemfile.example +0 -25
  112. data/gemfiles/modular/templating.gemfile +0 -3
  113. data/gemfiles/modular/x_std_libs/r2/libs.gemfile +0 -3
  114. data/gemfiles/modular/x_std_libs/r2.3/libs.gemfile +0 -3
  115. data/gemfiles/modular/x_std_libs/r2.4/libs.gemfile +0 -3
  116. data/gemfiles/modular/x_std_libs/r2.6/libs.gemfile +0 -3
  117. data/gemfiles/modular/x_std_libs/r3/libs.gemfile +0 -3
  118. data/gemfiles/modular/x_std_libs/r3.1/libs.gemfile +0 -3
  119. data/gemfiles/modular/x_std_libs/vHEAD.gemfile +0 -3
  120. data/gemfiles/modular/x_std_libs.gemfile +0 -2
  121. data/kettle-dev.gemspec.example +0 -154
  122. data/lib/kettle/dev/modular_gemfiles.rb +0 -119
  123. data/lib/kettle/dev/prism_appraisals.rb +0 -351
  124. data/lib/kettle/dev/prism_gemfile.rb +0 -177
  125. data/lib/kettle/dev/prism_gemspec.rb +0 -284
  126. data/lib/kettle/dev/prism_utils.rb +0 -201
  127. data/lib/kettle/dev/rakelib/install.rake +0 -10
  128. data/lib/kettle/dev/rakelib/template.rake +0 -10
  129. data/lib/kettle/dev/setup_cli.rb +0 -403
  130. data/lib/kettle/dev/source_merger.rb +0 -622
  131. data/lib/kettle/dev/tasks/install_task.rb +0 -553
  132. data/lib/kettle/dev/tasks/template_task.rb +0 -975
  133. data/lib/kettle/dev/template_helpers.rb +0 -685
@@ -1,13 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: bundler
4
- directory: "/"
5
- schedule:
6
- interval: "weekly"
7
- open-pull-requests-limit: 5
8
- ignore:
9
- - dependency-name: "rubocop-lts"
10
- - package-ecosystem: "github-actions"
11
- directory: "/"
12
- schedule:
13
- interval: "weekly"
@@ -1,83 +0,0 @@
1
- name: MRI 2.3, 2.4, 2.5 (EOL)
2
-
3
- permissions:
4
- contents: read
5
-
6
- on:
7
- push:
8
- branches:
9
- - 'main'
10
- - '*-stable'
11
- tags:
12
- - '!*' # Do not execute on tags
13
- pull_request:
14
- branches:
15
- - '*'
16
- # Allow manually triggering the workflow.
17
- workflow_dispatch:
18
-
19
- # Cancels all previous workflow runs for the same branch that have not yet completed.
20
- concurrency:
21
- # The concurrency group contains the workflow name and the branch name.
22
- group: "${{ github.workflow }}-${{ github.ref }}"
23
- cancel-in-progress: true
24
-
25
- jobs:
26
- test:
27
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
28
- name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
29
- runs-on: ubuntu-22.04
30
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
31
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
32
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
33
- strategy:
34
- fail-fast: false
35
- matrix:
36
- include:
37
- # Ruby 2.3
38
- - ruby: "ruby-2.3"
39
- appraisal: "ruby-2-3"
40
- exec_cmd: "rake test"
41
- gemfile: "Appraisal.root"
42
- rubygems: "3.3.27"
43
- bundler: "2.3.27"
44
-
45
- # Ruby 2.4 testing is disabled because when vcr is required, any version, it raises
46
- # NoMethodError: undefined method `delete_prefix' for "CONTENT_LENGTH":String
47
- # # Ruby 2.4
48
- # - ruby: "ruby-2.4"
49
- # appraisal: "ruby-2-4"
50
- # exec_cmd: "rake test"
51
- # gemfile: "Appraisal.root"
52
- # rubygems: "3.3.27"
53
- # bundler: "2.3.27"
54
-
55
- # Ruby 2.5
56
- - ruby: "ruby-2.5"
57
- appraisal: "ruby-2-5"
58
- exec_cmd: "rake test"
59
- gemfile: "Appraisal.root"
60
- rubygems: "3.3.27"
61
- bundler: "2.3.27"
62
-
63
- steps:
64
- - name: Checkout
65
- uses: actions/checkout@v6
66
-
67
- - name: Setup Ruby & RubyGems
68
- uses: ruby/setup-ruby@v1
69
- with:
70
- ruby-version: ${{ matrix.ruby }}
71
- rubygems: ${{ matrix.rubygems }}
72
- bundler: ${{ matrix.bundler }}
73
- bundler-cache: false
74
-
75
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
76
- # We need to do this first to get appraisal installed.
77
- # NOTE: This does not use the primary Gemfile at all.
78
- - name: Install Root Appraisal
79
- run: bundle
80
- - name: Appraisal for ${{ matrix.appraisal }}
81
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
82
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
83
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,81 +0,0 @@
1
- name: MRI 2.3, 2.4, 2.5 (EOL)
2
-
3
- permissions:
4
- contents: read
5
-
6
- on:
7
- push:
8
- branches:
9
- - 'main'
10
- - '*-stable'
11
- tags:
12
- - '!*' # Do not execute on tags
13
- pull_request:
14
- branches:
15
- - '*'
16
- # Allow manually triggering the workflow.
17
- workflow_dispatch:
18
-
19
- # Cancels all previous workflow runs for the same branch that have not yet completed.
20
- concurrency:
21
- # The concurrency group contains the workflow name and the branch name.
22
- group: "${{ github.workflow }}-${{ github.ref }}"
23
- cancel-in-progress: true
24
-
25
- jobs:
26
- test:
27
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
28
- name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
29
- runs-on: ubuntu-22.04
30
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
31
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
32
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
33
- strategy:
34
- fail-fast: false
35
- matrix:
36
- include:
37
- # Ruby 2.3
38
- - ruby: "ruby-2.3"
39
- appraisal: "ruby-2-3"
40
- exec_cmd: "rake test"
41
- gemfile: "Appraisal.root"
42
- rubygems: "3.3.27"
43
- bundler: "2.3.27"
44
-
45
- # Ruby 2.4
46
- - ruby: "ruby-2.4"
47
- appraisal: "ruby-2-4"
48
- exec_cmd: "rake test"
49
- gemfile: "Appraisal.root"
50
- rubygems: "3.3.27"
51
- bundler: "2.3.27"
52
-
53
- # Ruby 2.5
54
- - ruby: "ruby-2.5"
55
- appraisal: "ruby-2-5"
56
- exec_cmd: "rake test"
57
- gemfile: "Appraisal.root"
58
- rubygems: "3.3.27"
59
- bundler: "2.3.27"
60
-
61
- steps:
62
- - name: Checkout
63
- uses: actions/checkout@v6
64
-
65
- - name: Setup Ruby & RubyGems
66
- uses: ruby/setup-ruby@v1
67
- with:
68
- ruby-version: ${{ matrix.ruby }}
69
- rubygems: ${{ matrix.rubygems }}
70
- bundler: ${{ matrix.bundler }}
71
- bundler-cache: false
72
-
73
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
74
- # We need to do this first to get appraisal installed.
75
- # NOTE: This does not use the primary Gemfile at all.
76
- - name: Install Root Appraisal
77
- run: bundle
78
- - name: Appraisal for ${{ matrix.appraisal }}
79
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
80
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
81
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,21 +0,0 @@
1
- name: Auto Assign
2
- on:
3
- issues:
4
- types: [opened]
5
- pull_request:
6
- types: [opened]
7
- jobs:
8
- run:
9
- runs-on: ubuntu-latest
10
- permissions:
11
- issues: write
12
- pull-requests: write
13
- steps:
14
- - name: 'Auto-assign issue'
15
- uses: pozil/auto-assign-issue@v2
16
- with:
17
- repo-token: ${{ secrets.GITHUB_TOKEN }}
18
- assignees: pboling
19
- abortIfPreviousAssignees: true
20
- allowSelfAssign: true
21
- numOfAssignee: 1
@@ -1,70 +0,0 @@
1
- # For most projects, this workflow file will not need changing; you simply need
2
- # to commit it to your repository.
3
- #
4
- # You may wish to alter this file to override the set of languages analyzed,
5
- # or to provide custom queries or build logic.
6
- #
7
- # ******** NOTE ********
8
- # We have attempted to detect the languages in your repository. Please check
9
- # the `language` matrix defined below to confirm you have the correct set of
10
- # supported CodeQL languages.
11
- #
12
- name: "CodeQL"
13
-
14
- on:
15
- push:
16
- branches: [ main, '*-stable' ]
17
- pull_request:
18
- # The branches below must be a subset of the branches above
19
- branches: [ main, '*-stable' ]
20
- schedule:
21
- - cron: '35 1 * * 5'
22
-
23
- jobs:
24
- analyze:
25
- name: Analyze
26
- runs-on: ubuntu-latest
27
- permissions:
28
- actions: read
29
- contents: read
30
- security-events: write
31
-
32
- strategy:
33
- fail-fast: false
34
- matrix:
35
- language: [ 'ruby' ]
36
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
- # Learn more about CodeQL language support at https://git.io/codeql-language-support
38
-
39
- steps:
40
- - name: Checkout repository
41
- uses: actions/checkout@v6
42
-
43
- # Initializes the CodeQL tools for scanning.
44
- - name: Initialize CodeQL
45
- uses: github/codeql-action/init@v4
46
- with:
47
- languages: ${{ matrix.language }}
48
- # If you wish to specify custom queries, you can do so here or in a config file.
49
- # By default, queries listed here will override any specified in a config file.
50
- # Prefix the list here with "+" to use these queries and those in the config file.
51
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
52
-
53
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54
- # If this step fails, then you should remove it and run the build manually (see below)
55
- - name: Autobuild
56
- uses: github/codeql-action/autobuild@v4
57
-
58
- # ℹ️ Command-line programs to run using the OS shell.
59
- # 📚 https://git.io/JvXDl
60
-
61
- # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62
- # and modify them (or add more) to build your code if your project
63
- # uses a compiled language
64
-
65
- #- run: |
66
- # make bootstrap
67
- # make release
68
-
69
- - name: Perform CodeQL Analysis
70
- uses: github/codeql-action/analyze@v4
@@ -1,127 +0,0 @@
1
- name: Test Coverage
2
-
3
- permissions:
4
- contents: read
5
- pull-requests: write
6
- id-token: write
7
-
8
- env:
9
- K_SOUP_COV_MIN_BRANCH: 76
10
- K_SOUP_COV_MIN_LINE: 92
11
- K_SOUP_COV_MIN_HARD: true
12
- K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty"
13
- K_SOUP_COV_DO: true
14
- K_SOUP_COV_MULTI_FORMATTERS: true
15
- K_SOUP_COV_COMMAND_NAME: "Test Coverage"
16
-
17
- on:
18
- push:
19
- branches:
20
- - 'main'
21
- - '*-stable'
22
- tags:
23
- - '!*' # Do not execute on tags
24
- pull_request:
25
- branches:
26
- - '*'
27
- # Allow manually triggering the workflow.
28
- workflow_dispatch:
29
-
30
- # Cancels all previous workflow runs for the same branch that have not yet completed.
31
- concurrency:
32
- # The concurrency group contains the workflow name and the branch name.
33
- group: "${{ github.workflow }}-${{ github.ref }}"
34
- cancel-in-progress: true
35
-
36
- jobs:
37
- coverage:
38
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
39
- name: Code Coverage on ${{ matrix.ruby }}@current
40
- runs-on: ubuntu-latest
41
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
42
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
43
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
44
- strategy:
45
- fail-fast: false
46
- matrix:
47
- include:
48
- # Coverage
49
- - ruby: "ruby"
50
- appraisal: "coverage"
51
- exec_cmd: "rake test"
52
- gemfile: "Appraisal.root"
53
- rubygems: latest
54
- bundler: latest
55
-
56
- steps:
57
- - name: Checkout
58
- uses: actions/checkout@v6
59
-
60
- - name: Setup Ruby & RubyGems
61
- uses: ruby/setup-ruby@v1
62
- with:
63
- ruby-version: "${{ matrix.ruby }}"
64
- rubygems: "${{ matrix.rubygems }}"
65
- bundler: "${{ matrix.bundler }}"
66
- bundler-cache: false
67
-
68
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
69
- # We need to do this first to get appraisal installed.
70
- # NOTE: This does not use the primary Gemfile at all.
71
- - name: Install Root Appraisal
72
- run: bundle
73
- - name: Appraisal for ${{ matrix.appraisal }}
74
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
75
- - name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
76
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
77
-
78
- # Do SaaS coverage uploads first
79
- - name: Upload coverage to Coveralls
80
- if: ${{ !env.ACT }}
81
- uses: coverallsapp/github-action@master
82
- with:
83
- github-token: ${{ secrets.GITHUB_TOKEN }}
84
- continue-on-error: ${{ matrix.experimental != 'false' }}
85
-
86
- - name: Upload coverage to QLTY
87
- if: ${{ !env.ACT }}
88
- uses: qltysh/qlty-action/coverage@main
89
- with:
90
- token: ${{secrets.QLTY_COVERAGE_TOKEN}}
91
- files: coverage/.resultset.json
92
- continue-on-error: ${{ matrix.experimental != 'false' }}
93
-
94
- # Build will fail here if coverage upload fails
95
- # which will hopefully be noticed for the lack of code coverage comments
96
- - name: Upload coverage to CodeCov
97
- if: ${{ !env.ACT }}
98
- uses: codecov/codecov-action@v5
99
- with:
100
- use_oidc: true
101
- fail_ci_if_error: false # optional (default = false)
102
- files: coverage/lcov.info,coverage/coverage.xml
103
- verbose: true # optional (default = false)
104
-
105
- # Then PR comments
106
- - name: Code Coverage Summary Report
107
- if: ${{ !env.ACT && github.event_name == 'pull_request' }}
108
- uses: irongut/CodeCoverageSummary@v1.3.0
109
- with:
110
- filename: ./coverage/coverage.xml
111
- badge: true
112
- fail_below_min: true
113
- format: markdown
114
- hide_branch_rate: false
115
- hide_complexity: true
116
- indicators: true
117
- output: both
118
- thresholds: '92 76'
119
- continue-on-error: ${{ matrix.experimental != 'false' }}
120
-
121
- - name: Add Coverage PR Comment
122
- uses: marocchino/sticky-pull-request-comment@v2
123
- if: ${{ !env.ACT && github.event_name == 'pull_request' }}
124
- with:
125
- recreate: true
126
- path: code-coverage-results.md
127
- continue-on-error: ${{ matrix.experimental != 'false' }}
@@ -1,127 +0,0 @@
1
- name: Test Coverage
2
-
3
- permissions:
4
- contents: read
5
- pull-requests: write
6
- id-token: write
7
-
8
- env:
9
- K_SOUP_COV_MIN_BRANCH: 100
10
- K_SOUP_COV_MIN_LINE: 100
11
- K_SOUP_COV_MIN_HARD: true
12
- K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty"
13
- K_SOUP_COV_DO: true
14
- K_SOUP_COV_MULTI_FORMATTERS: true
15
- K_SOUP_COV_COMMAND_NAME: "Test Coverage"
16
-
17
- on:
18
- push:
19
- branches:
20
- - 'main'
21
- - '*-stable'
22
- tags:
23
- - '!*' # Do not execute on tags
24
- pull_request:
25
- branches:
26
- - '*'
27
- # Allow manually triggering the workflow.
28
- workflow_dispatch:
29
-
30
- # Cancels all previous workflow runs for the same branch that have not yet completed.
31
- concurrency:
32
- # The concurrency group contains the workflow name and the branch name.
33
- group: "${{ github.workflow }}-${{ github.ref }}"
34
- cancel-in-progress: true
35
-
36
- jobs:
37
- coverage:
38
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
39
- name: Code Coverage on ${{ matrix.ruby }}@current
40
- runs-on: ubuntu-latest
41
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
42
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
43
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
44
- strategy:
45
- fail-fast: false
46
- matrix:
47
- include:
48
- # Coverage
49
- - ruby: "ruby"
50
- appraisal: "coverage"
51
- exec_cmd: "rake test"
52
- gemfile: "Appraisal.root"
53
- rubygems: latest
54
- bundler: latest
55
-
56
- steps:
57
- - name: Checkout
58
- uses: actions/checkout@v6
59
-
60
- - name: Setup Ruby & RubyGems
61
- uses: ruby/setup-ruby@v1
62
- with:
63
- ruby-version: "${{ matrix.ruby }}"
64
- rubygems: "${{ matrix.rubygems }}"
65
- bundler: "${{ matrix.bundler }}"
66
- bundler-cache: false
67
-
68
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
69
- # We need to do this first to get appraisal installed.
70
- # NOTE: This does not use the primary Gemfile at all.
71
- - name: Install Root Appraisal
72
- run: bundle
73
- - name: Appraisal for ${{ matrix.appraisal }}
74
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
75
- - name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
76
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
77
-
78
- # Do SaaS coverage uploads first
79
- - name: Upload coverage to Coveralls
80
- if: ${{ !env.ACT }}
81
- uses: coverallsapp/github-action@master
82
- with:
83
- github-token: ${{ secrets.GITHUB_TOKEN }}
84
- continue-on-error: ${{ matrix.experimental != 'false' }}
85
-
86
- - name: Upload coverage to QLTY
87
- if: ${{ !env.ACT }}
88
- uses: qltysh/qlty-action/coverage@main
89
- with:
90
- token: ${{secrets.QLTY_COVERAGE_TOKEN}}
91
- files: coverage/.resultset.json
92
- continue-on-error: ${{ matrix.experimental != 'false' }}
93
-
94
- # Build will fail here if coverage upload fails
95
- # which will hopefully be noticed for the lack of code coverage comments
96
- - name: Upload coverage to CodeCov
97
- if: ${{ !env.ACT }}
98
- uses: codecov/codecov-action@v5
99
- with:
100
- use_oidc: true
101
- fail_ci_if_error: false # optional (default = false)
102
- files: coverage/lcov.info,coverage/coverage.xml
103
- verbose: true # optional (default = false)
104
-
105
- # Then PR comments
106
- - name: Code Coverage Summary Report
107
- if: ${{ !env.ACT && github.event_name == 'pull_request' }}
108
- uses: irongut/CodeCoverageSummary@v1.3.0
109
- with:
110
- filename: ./coverage/coverage.xml
111
- badge: true
112
- fail_below_min: true
113
- format: markdown
114
- hide_branch_rate: false
115
- hide_complexity: true
116
- indicators: true
117
- output: both
118
- thresholds: '100 100'
119
- continue-on-error: ${{ matrix.experimental != 'false' }}
120
-
121
- - name: Add Coverage PR Comment
122
- uses: marocchino/sticky-pull-request-comment@v2
123
- if: ${{ !env.ACT && github.event_name == 'pull_request' }}
124
- with:
125
- recreate: true
126
- path: code-coverage-results.md
127
- continue-on-error: ${{ matrix.experimental != 'false' }}
@@ -1,116 +0,0 @@
1
- # Targets the evergreen latest release of ruby, truffleruby, and jruby
2
- name: Current
3
-
4
- permissions:
5
- contents: read
6
-
7
- env:
8
- K_SOUP_COV_DO: false
9
-
10
- on:
11
- push:
12
- branches:
13
- - 'main'
14
- - '*-stable'
15
- tags:
16
- - '!*' # Do not execute on tags
17
- pull_request:
18
- branches:
19
- - '*'
20
- # Allow manually triggering the workflow.
21
- workflow_dispatch:
22
-
23
- # Cancels all previous workflow runs for the same branch that have not yet completed.
24
- concurrency:
25
- # The concurrency group contains the workflow name and the branch name.
26
- group: "${{ github.workflow }}-${{ github.ref }}"
27
- cancel-in-progress: true
28
-
29
- jobs:
30
- test:
31
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
32
- name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
33
- runs-on: ubuntu-latest
34
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
35
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
36
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
37
- strategy:
38
- matrix:
39
- include:
40
- # Ruby 3.4
41
- - ruby: "ruby"
42
- appraisal: "current"
43
- exec_cmd: "rake test"
44
- gemfile: "Appraisal.root"
45
- rubygems: latest
46
- bundler: latest
47
-
48
- # Turn back on once allow-failures is a feature of GHA.
49
- # # truffleruby-24.1 (targets Ruby 3.3 compatibility)
50
- # - ruby: "truffleruby"
51
- # appraisal: "current"
52
- # exec_cmd: "rake test"
53
- # gemfile: "Appraisal.root"
54
- # rubygems: default
55
- # bundler: default
56
-
57
- # jruby-10.0 (targets Ruby 3.4 compatibility)
58
- - ruby: "jruby"
59
- appraisal: "current"
60
- exec_cmd: "rake test"
61
- gemfile: "Appraisal.root"
62
- rubygems: default
63
- bundler: default
64
-
65
- steps:
66
- - name: Checkout
67
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
68
- uses: actions/checkout@v6
69
-
70
- - name: Setup Ruby & RubyGems
71
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
72
- uses: ruby/setup-ruby@v1
73
- with:
74
- ruby-version: ${{ matrix.ruby }}
75
- rubygems: ${{ matrix.rubygems }}
76
- bundler: ${{ matrix.bundler }}
77
- bundler-cache: false
78
-
79
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
80
- # We need to do this first to get appraisal installed.
81
- # NOTE: This does not use the primary Gemfile at all.
82
- - name: Install Root Appraisal
83
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
84
- run: bundle
85
-
86
- - name: "[Attempt 1] Install Root Appraisal"
87
- id: bundleAttempt1
88
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
89
- run: bundle
90
- # Continue to the next step on failure
91
- continue-on-error: true
92
-
93
- # Effectively an automatic retry of the previous step.
94
- - name: "[Attempt 2] Install Root Appraisal"
95
- id: bundleAttempt2
96
- # If bundleAttempt1 failed, try again here; Otherwise skip.
97
- if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
98
- run: bundle
99
-
100
- - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
101
- id: bundleAppraisalAttempt1
102
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
103
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
104
- # Continue to the next step on failure
105
- continue-on-error: true
106
-
107
- # Effectively an automatic retry of the previous step.
108
- - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
109
- id: bundleAppraisalAttempt2
110
- # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
111
- if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
112
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
113
-
114
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
115
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
116
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}