Test alpha8 commit candidates before publication
Some checks failed
Candidate compatibility / prepare (push) Failing after 32s
Candidate compatibility / fixture-contract (push) Has been skipped
Candidate compatibility / lockstep clients Ruby 3.2 (push) Has been skipped
Candidate compatibility / lockstep clients Ruby 3.3 (push) Has been skipped
Candidate compatibility / lockstep clients Ruby 3.4 (push) Has been skipped
Candidate compatibility / lockstep clients Ruby 4.0 (push) Has been skipped
Candidate compatibility / image ${{ matrix.id }} (push) Has been skipped
Candidate compatibility / repository (push) Successful in 37s
Watch upstream OpenCode / open-compatibility-pr (push) Failing after 11s

This commit is contained in:
2026-07-19 22:43:44 -07:00
parent 574a72ed96
commit 3dfecb72c6
14 changed files with 840 additions and 136 deletions

View File

@@ -23,6 +23,7 @@ jobs:
ruby test/runtime_tuple_promoter_test.rb
ruby test/exact_live_contract_test.rb
ruby test/watcher_test.rb
ruby test/client_candidate_test.rb
ruby test/lockstep_client_contract_test.rb
ruby test/matrix_json_test.rb
ruby test/image_contract_evidence_test.rb
@@ -31,10 +32,13 @@ jobs:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.value }}
publication_state: ${{ steps.clients.outputs.publication_state }}
ruby_provenance_kind: ${{ steps.clients.outputs.ruby_provenance_kind }}
ruby_ref: ${{ steps.clients.outputs.ruby_ref }}
ruby_version: ${{ steps.clients.outputs.ruby_version }}
ruby_tag: ${{ steps.clients.outputs.ruby_tag }}
ruby_tag_object: ${{ steps.clients.outputs.ruby_tag_object }}
rails_provenance_kind: ${{ steps.clients.outputs.rails_provenance_kind }}
rails_ref: ${{ steps.clients.outputs.rails_ref }}
rails_version: ${{ steps.clients.outputs.rails_version }}
rails_tag: ${{ steps.clients.outputs.rails_tag }}
@@ -44,38 +48,7 @@ jobs:
- id: matrix
run: echo "value=$(ruby scripts/matrix_json.rb)" >> "$GITHUB_OUTPUT"
- id: clients
run: |
ruby_ref="$(jq -r '.clients["opencode-ruby"].ref' manifests/client-candidate.json)"
ruby_version="$(jq -r '.clients["opencode-ruby"].version' manifests/client-candidate.json)"
ruby_tag="$(jq -r '.clients["opencode-ruby"].tag_provenance.tag' manifests/client-candidate.json)"
ruby_tag_object="$(jq -r '.clients["opencode-ruby"].tag_provenance.annotated_tag_object' manifests/client-candidate.json)"
rails_ref="$(jq -r '.clients["opencode-rails"].ref' manifests/client-candidate.json)"
rails_version="$(jq -r '.clients["opencode-rails"].version' manifests/client-candidate.json)"
rails_tag="$(jq -r '.clients["opencode-rails"].tag_provenance.tag' manifests/client-candidate.json)"
rails_tag_object="$(jq -r '.clients["opencode-rails"].tag_provenance.annotated_tag_object' manifests/client-candidate.json)"
if ! [[ "$ruby_ref" =~ ^[0-9a-f]{40}$ ]]; then
echo "opencode-ruby candidate ref must be a full 40-hex commit" >&2
exit 2
fi
if ! [[ "$rails_ref" =~ ^[0-9a-f]{40}$ ]]; then
echo "opencode-rails candidate ref must be a full 40-hex commit" >&2
exit 2
fi
if ! [[ "$ruby_tag_object" =~ ^[0-9a-f]{40}$ && "$rails_tag_object" =~ ^[0-9a-f]{40}$ ]]; then
echo "candidate annotated tag objects must be full 40-hex object IDs" >&2
exit 2
fi
test "$ruby_tag" = "v$ruby_version"
test "$rails_tag" = "v$rails_version"
test "$ruby_version" = "$rails_version"
echo "ruby_ref=$ruby_ref" >> "$GITHUB_OUTPUT"
echo "ruby_version=$ruby_version" >> "$GITHUB_OUTPUT"
echo "ruby_tag=$ruby_tag" >> "$GITHUB_OUTPUT"
echo "ruby_tag_object=$ruby_tag_object" >> "$GITHUB_OUTPUT"
echo "rails_ref=$rails_ref" >> "$GITHUB_OUTPUT"
echo "rails_version=$rails_version" >> "$GITHUB_OUTPUT"
echo "rails_tag=$rails_tag" >> "$GITHUB_OUTPUT"
echo "rails_tag_object=$rails_tag_object" >> "$GITHUB_OUTPUT"
run: ruby scripts/client_candidate_outputs.rb >> "$GITHUB_OUTPUT"
fixture-contract:
needs: prepare
@@ -133,7 +106,7 @@ jobs:
strategy:
fail-fast: false
matrix:
ruby: ["3.2", "3.3", "3.4"]
ruby: ["3.2", "3.3", "3.4", "4.0"]
name: lockstep clients Ruby ${{ matrix.ruby }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
@@ -171,10 +144,13 @@ jobs:
env:
OPENCODE_RUBY_PATH: ${{ github.workspace }}/ruby-client
OPENCODE_RAILS_PATH: ${{ github.workspace }}/opencode-rails
OPENCODE_CLIENT_PUBLICATION_STATE: ${{ needs.prepare.outputs.publication_state }}
OPENCODE_RUBY_COMMIT: ${{ needs.prepare.outputs.ruby_ref }}
OPENCODE_RUBY_PROVENANCE_KIND: ${{ needs.prepare.outputs.ruby_provenance_kind }}
OPENCODE_RUBY_TAG: ${{ needs.prepare.outputs.ruby_tag }}
OPENCODE_RUBY_TAG_OBJECT: ${{ needs.prepare.outputs.ruby_tag_object }}
OPENCODE_RAILS_COMMIT: ${{ needs.prepare.outputs.rails_ref }}
OPENCODE_RAILS_PROVENANCE_KIND: ${{ needs.prepare.outputs.rails_provenance_kind }}
OPENCODE_RAILS_TAG: ${{ needs.prepare.outputs.rails_tag }}
OPENCODE_RAILS_TAG_OBJECT: ${{ needs.prepare.outputs.rails_tag_object }}
OPENCODE_RUBY_VERSION: ${{ needs.prepare.outputs.ruby_version }}