|
|
1 ano atrás | |
|---|---|---|
| .. | ||
| script | 1 ano atrás | |
| .gitignore | 1 ano atrás | |
| README.md | 1 ano atrás | |
| action.yml | 1 ano atrás | |
| bun.lock | 1 ano atrás | |
| index.ts | 1 ano atrás | |
| package.json | 1 ano atrás | |
| tsconfig.json | 1 ano atrás | |
A GitHub Action that integrates opencode directly into your GitHub workflow.
Mention /opencode in your comment, and opencode will execute tasks within your GitHub Actions runner.
Leave the following comment on a GitHub issue. opencode will read the entire thread, including all comments, and reply with a clear explanation.
/opencode explain this issue
Leave the following comment on a GitHub issue. opencode will create a new branch, implement the changes, and open a PR with the changes.
/opencode fix this
Leave the following comment on a GitHub PR. opencode will implement the requested change and commit it to the same PR.
Delete the attachment from S3 when the note is removed /oc
Run the following command in the terminal from your GitHub repo:
opencode github install
This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.
.github/workflows/opencode.yml in your repo. Set the appropriate model and required API keys in env. name: opencode
on:
issue_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run opencode
uses: sst/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/sst/opencode/issues.
To test locally:
hello-world): cd hello-world
MODEL=anthropic/claude-sonnet-4-20250514 \
ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \
GITHUB_RUN_ID=dummy \
MOCK_TOKEN=github_pat_1234567890 \
MOCK_EVENT='{"eventName":"issue_comment",...}' \
bun /path/to/opencode/github/index.ts
MODEL: The model used by opencode. Same as the MODEL defined in the GitHub workflow.ANTHROPIC_API_KEY: Your model provider API key. Same as the keys defined in the GitHub workflow.GITHUB_RUN_ID: Dummy value to emulate GitHub action environment.MOCK_TOKEN: A GitHub persontal access token. This token is used to verify you have admin or write access to the test repo. Generate a token here.MOCK_EVENT: Mock GitHub event payload (see templates below)./path/to/opencode: Path to your cloned opencode repo. bun /path/to/opencode/github/index.ts runs your local version of opencode.MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'
Replace:
"owner":"sst" with repo owner"repo":"hello-world" with repo name"actor":"fwang" with the GitHub username of commentor"number":4 with the GitHub issue id"body":"hey opencode, summarize thread" with comment bodyMOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, what is in my image "}}}'
Replace the image URL https://github.com/user-attachments/assets/xxxxxxxx with a valid GitHub attachment (you can generate one by commenting with an image in any issue).
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'