diff options
| author | Frank <[email protected]> | 2025-07-25 20:27:40 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-07-25 20:27:42 -0400 |
| commit | a007d65f62b3ede4851bbbf54d6f727232849fd0 (patch) | |
| tree | 649dc35ceba083f4cf572415845543f31a596253 /github/README.md | |
| parent | 2c924b9fdb255f943467fb70b018253b6ed33edb (diff) | |
| download | opencode-a007d65f62b3ede4851bbbf54d6f727232849fd0.tar.gz opencode-a007d65f62b3ede4851bbbf54d6f727232849fd0.zip | |
wip: github actions
Diffstat (limited to 'github/README.md')
| -rw-r--r-- | github/README.md | 124 |
1 files changed, 61 insertions, 63 deletions
diff --git a/github/README.md b/github/README.md index 7e9a8906b..22ce463da 100644 --- a/github/README.md +++ b/github/README.md @@ -2,73 +2,71 @@ A GitHub Action that integrates [opencode](https://opencode.ai) directly into your GitHub workflow. -Start your comment with `hey opencode`, and opencode will take action via your GitHub Actions runner. +Mention `/opencode` in your comment, and opencode will execute tasks within your GitHub Actions runner. ## Features #### Triage and explain issues -``` -hey opencode, explain this issue +```bash +/opencode explain this issue ``` #### Fix or implement issues - opencode will create a PR with the changes. -``` -hi opencode, fix this +```bash +/opencode fix this ``` -- Review PRs and make changes +#### Review PRs and make changes -``` -Delete the attachment from S3 when the note is removed @opencode-agent +```bash +Delete the attachment from S3 when the note is removed /oc ``` ## Installation Run the following command in the terminal from your GitHub repo: -``` +```bash opencode github install ``` -This will walk you through installing the GitHub app, configuring the workflow, and setting up secrets. +This will walk you through installing the GitHub app, creating the workflow, and setting up secrets. ### Manual Setup 1. Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository. 2. Add the following workflow file to `.github/workflows/opencode.yml` in your repo. Set the appropriate `model` and required API keys in `env`. -```yml -name: opencode - -on: - issue_comment: - types: [created] - -jobs: - opencode: - if: | - startsWith(github.event.comment.body, 'opencode') || - startsWith(github.event.comment.body, 'hi opencode') || - startsWith(github.event.comment.body, 'hey opencode') || - contains(github.event.comment.body, '@opencode-agent') - 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 -``` + ```yml + 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 + ``` 3. Store the API keys in secrets. In your organization or project **settings**, expand **Secrets and variables** on the left and select **Actions**. Add the required API keys. @@ -82,32 +80,32 @@ To test locally: 1. Navigate to a test repo (e.g. `hello-world`): -``` -cd hello-world -``` + ```bash + cd hello-world + ``` 2. Run: -``` -MODEL=anthropic/claude-sonnet-4-20250514 \ - ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \ - GITHUB_RUN_ID=dummy \ - bun /path/to/opencode/packages/opencode/src/index.ts github run \ - --token 'github_pat_1234567890' \ - --event '{"eventName":"issue_comment",...}' -``` + ```bash + MODEL=anthropic/claude-sonnet-4-20250514 \ + ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \ + GITHUB_RUN_ID=dummy \ + bun /path/to/opencode/packages/opencode/src/index.ts github run \ + --token 'github_pat_1234567890' \ + --event '{"eventName":"issue_comment",...}' + ``` -- `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. -- `/path/to/opencode`: Path to your cloned opencode repo. `bun /path/to/opencode/packages/opencode/src/index.ts` runs your local version of `opencode`. -- `--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](https://github.com/settings/personal-access-tokens). -- `--event`: Mock GitHub event payload (see templates below). + - `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. + - `/path/to/opencode`: Path to your cloned opencode repo. `bun /path/to/opencode/packages/opencode/src/index.ts` runs your local version of `opencode`. + - `--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](https://github.com/settings/personal-access-tokens). + - `--event`: Mock GitHub event payload (see templates below). -#### Issue comment event +### Issue comment event ``` - --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}' +--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: @@ -118,16 +116,16 @@ Replace: - `"number":4` with the GitHub issue id - `"body":"hey opencode, summarize thread"` with comment body -#### Issue comment with image attachment. +### Issue comment with image attachment. ``` - --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 "}}}' +--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). -#### PR comment event +### PR comment event ``` - --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"}}}' +--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"}}}' ``` |
