diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9dd2ca80e..553176cd9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,8 @@ on: jobs: access-check: runs-on: ubuntu-latest + # Skip the access check entirely if the triggering actor is the Codegen bot + if: github.triggering_actor != 'codegen-sh[bot]' steps: - uses: actions-cool/check-user-permission@v2 with: @@ -21,7 +23,9 @@ jobs: error-if-missing: true unit-tests: - needs: access-check + # Update the needs condition to handle the case where access-check is skipped + needs: [access-check] + if: always() && (needs.access-check.result == 'success' || needs.access-check.result == 'skipped') runs-on: ubuntu-latest-8 steps: - uses: actions/checkout@v4 @@ -49,8 +53,8 @@ jobs: codemod-tests: needs: access-check - # TODO: re-enable when this check is a develop required check - if: false + # Update the condition to handle the case where access-check is skipped + if: (always() && (needs.access-check.result == 'success' || needs.access-check.result == 'skipped')) && false runs-on: ubuntu-latest-32 strategy: matrix: @@ -58,7 +62,7 @@ jobs: size: [ small, large ] exclude: # Exclude large codemod tests when not needed - - size: ${{(contains(github.event.pull_request.labels.*.name, 'big-codemod-tests') || github.event_name == 'push' || github.event_name == 'workflow_dispatch') && 'kevin' || 'large'}} + - size: ${{(contains(github.event.pull_request.labels.*.name, 'big-codemod-tests') || github.event_name == 'push' || github.event_name == 'workflow_dispatch') && 'kevin' || 'large')} - size: large sync_graph: true concurrency: @@ -91,7 +95,7 @@ jobs: parse-tests: needs: access-check - if: contains(github.event.pull_request.labels.*.name, 'parse-tests') || github.event_name == 'push' || github.event_name == 'workflow_dispatch' + if: (always() && (needs.access-check.result == 'success' || needs.access-check.result == 'skipped')) && (contains(github.event.pull_request.labels.*.name, 'parse-tests') || github.event_name == 'push' || github.event_name == 'workflow_dispatch') runs-on: ubuntu-latest-32 steps: - uses: actions/checkout@v4 @@ -162,6 +166,7 @@ jobs: integration-tests: needs: access-check + if: always() && (needs.access-check.result == 'success' || needs.access-check.result == 'skipped') runs-on: ubuntu-latest-16 steps: - uses: actions/checkout@v4 diff --git a/docs/integrations/slack.mdx b/docs/integrations/slack.mdx index 35ba06404..b9d4f9baa 100644 --- a/docs/integrations/slack.mdx +++ b/docs/integrations/slack.mdx @@ -4,6 +4,19 @@ sidebarTitle: "Slack" icon: "slack" --- +
+ + Add to Slack + +

Click the button above to install Codegen in your Slack workspace

+
+ Connect Codegen to your Slack workspace to enable seamless communication between agents and your team. @@ -24,14 +37,14 @@ All of these capabilities are accessible through natural language interactions i ## Installation -Add the Codegen app for Slack to your workspace to enable agent communication. +Add the Codegen integration for Slack to your workspace to enable agent communication. - Install the Codegen app for Slack from the Slack Marketplace and choose the + Install the Codegen integration for Slack from the Slack Marketplace and choose the channels it can access. @@ -40,18 +53,50 @@ Add the Codegen app for Slack to your workspace to enable agent communication. appropriate places. +## Configuration Instructions + +After installing the integration for Slack from the Slack Marketplace, follow these steps to configure it for your team: + +### Channel Setup +- **Create a dedicated channel**: We recommend creating a channel like `#codegen` for general agent interactions. +- **Invite the Codegen bot**: Type `/invite @codegen` in any channel where you want Codegen to participate. + +### Trigger Configuration +Codegen agents can be triggered in several ways: +- **Direct mentions**: Type `@codegen` followed by your request in any channel where the bot is present. +- **Thread replies**: Reply to a Codegen message in a thread to continue the conversation. +- **Direct messages**: Send a DM to the Codegen bot for private conversations. + +### Notification Settings +Configure which events trigger notifications in Slack: +1. Go to your [Codegen Dashboard](https://codegen.sh/settings/notifications) +2. Under "Notification Settings", select which events should post to Slack: + - PR creation and updates + - Build failures + - Deployment events + - Agent task completions +3. Choose which channels should receive different types of notifications + +### Permission Management +For security, you can control which team members can interact with Codegen: +1. Go to your [Codegen Dashboard](https://codegen.sh/settings/permissions) +2. Under "Slack Permissions", configure: + - Which users can trigger agent actions + - Which repositories can be accessed via Slack commands + - What level of access is permitted (read-only, PR creation, etc.) + ## Message Response Behavior Codegen responds to the following messages in Slack: - **Direct Messages:** - - Responds to any DM sent to the Codegen app for Slack + - Responds to any DM sent to the Codegen integration for Slack - Has visibility into previous messages in the conversation (not just threaded replies) - This provides a more natural conversation experience as many users don't thread messages in DMs - **Channel Messages:** - - Responds to any message that @mentions Codegen in channels where the app for Slack is installed + - Responds to any message that @mentions Codegen in channels where the integration for Slack is installed - Only has visibility into the local context of the thread/conversation - Sending subsequent messages within a thread routes to the same agent - New messages in an active thread will interrupt the agent if it's currently working @@ -66,4 +111,4 @@ Codegen responds to the following messages in Slack: **User Permissions and Access Control:** -Codegen's actions on connected repositories are governed by the permissions of the user who initiated the interaction via Slack. The bot itself does not have independent permissions to repositories. Access to repositories and the ability to trigger actions are determined by the Codegen user's authenticated account and their associated repository permissions. We recommend configuring channel access carefully during installation to ensure the Codegen app for Slack is only present in channels where its use is appropriate. +Codegen's actions on connected repositories are governed by the permissions of the user who initiated the interaction via Slack. The bot itself does not have independent permissions to repositories. Access to repositories and the ability to trigger actions are determined by the Codegen user's authenticated account and their associated repository permissions. We recommend configuring channel access carefully during installation to ensure the Codegen integration for Slack is only present in channels where its use is appropriate.