opencode-gpt-5-codex #113
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: opencode-gpt-5-codex | |
| on: | |
| issue_comment: | |
| types: [created] | |
| pull_request_review_comment: | |
| types: [created] | |
| issues: | |
| types: [opened, edited] | |
| pull_request_review: | |
| types: [submitted] | |
| jobs: | |
| # Check if the user is a member of liatrio-labs organization | |
| check-org-membership: | |
| runs-on: ubuntu-latest | |
| if: | | |
| ( | |
| github.event_name == 'issue_comment' && | |
| contains(github.event.comment.body, '/oc-codex') | |
| ) || ( | |
| github.event_name == 'pull_request_review_comment' && | |
| contains(github.event.comment.body, '/oc-codex') | |
| ) || ( | |
| github.event_name == 'pull_request_review' && | |
| github.event.review.body != null && | |
| contains(github.event.review.body, '/oc-codex') | |
| ) || ( | |
| github.event_name == 'issues' && | |
| ( | |
| (github.event.issue.body != null && contains(github.event.issue.body, '/oc-codex')) || | |
| contains(github.event.issue.title, '/oc-codex') | |
| ) | |
| ) | |
| outputs: | |
| is-authorized: ${{ steps.check.outputs.authorized }} | |
| steps: | |
| - name: Check authorization | |
| id: check | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| ACTOR="${{ github.actor }}" | |
| # Check if user is a repo collaborator/owner/member first | |
| if [[ "${{ github.event_name }}" == "issue_comment" ]]; then | |
| AUTHOR_ASSOC="${{ github.event.comment.author_association }}" | |
| elif [[ "${{ github.event_name }}" == "pull_request_review_comment" ]]; then | |
| AUTHOR_ASSOC="${{ github.event.comment.author_association }}" | |
| elif [[ "${{ github.event_name }}" == "pull_request_review" ]]; then | |
| AUTHOR_ASSOC="${{ github.event.review.author_association }}" | |
| elif [[ "${{ github.event_name }}" == "issues" ]]; then | |
| AUTHOR_ASSOC="${{ github.event.issue.author_association }}" | |
| fi | |
| if [[ "$AUTHOR_ASSOC" == "OWNER" ]] || [[ "$AUTHOR_ASSOC" == "MEMBER" ]] || [[ "$AUTHOR_ASSOC" == "COLLABORATOR" ]]; then | |
| echo "User is authorized via author_association: $AUTHOR_ASSOC" | |
| echo "authorized=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| # Check if user is a member of liatrio-labs organization | |
| if gh api "orgs/liatrio-labs/members/$ACTOR" --silent 2>/dev/null; then | |
| echo "User is authorized as liatrio-labs organization member" | |
| echo "authorized=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "User is not authorized" | |
| echo "authorized=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| opencode: | |
| needs: check-org-membership | |
| if: needs.check-org-membership.outputs.is-authorized == 'true' | |
| timeout-minutes: 30 # to accommodate Codex's ability to run for extended periods | |
| concurrency: | |
| group: opencode-${{ github.event_name }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }} | |
| cancel-in-progress: true | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Run opencode | |
| # They are moving fast at https://github.com/sst/opencode/releases, so pinning the version isn't practical yet. We'll keep it at `latest` for now and monitor the changes for a stable version. Latest version as of this writing is `v0.15.3`. | |
| uses: sst/opencode/github@latest | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY_FOR_OPENCODE }} | |
| with: | |
| model: openai/gpt-5-codex |