Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: add outputs to sandbox #923

Merged
merged 2 commits into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/sandbox-comment-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Sandbox environment for `{{ .branch_ref }}` has been created.

## URLs

- **Dashboard**: https://dashboard.{{ .branch_ref }}.testkube.dev
- **API**: https://api.{{ .branch_ref }}.testkube.dev
- **Agent**: https://agent.{{ .branch_ref }}.testkube.dev
- **Storage**: https://storage.{{ .branch_ref }}.testkube.dev
- **Websockets**: https://websockets.{{ .branch_ref }}.testkube.dev
61 changes: 61 additions & 0 deletions .github/workflows/dispatch-sandbox-push.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,82 @@ on:
push:
branches:
- sandbox/**
pull_request:
types:
- opened

jobs:
dispatch:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
if: startsWith(github.ref, 'refs/heads/sandbox/')
id: app-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
owner: ${{ github.repository_owner }}

- name: Repository dispatch
if: startsWith(github.ref, 'refs/heads/sandbox/')
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ steps.app-token.outputs.token }}
repository: kubeshop/testkube-deployment
event-type: sandbox_agent_charts_update
client-payload: '{"ref": "${{ github.ref }}", "ref_name": "${{ github.ref_name }}", "agent_sha": "${{ github.sha }}", "repository": "${{ github.repository }}"}'

- name: Set version
if: startsWith(github.ref, 'refs/heads/sandbox/')
run: |
#get short commit sha that triggered the flow
echo git_hash="$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_ENV

# Extract everything before the first slash
branch_identifier=$(echo "$GITHUB_REF_NAME" | cut -d'/' -f2-)

# Replace slashes with dashes using sed
echo branch_identifier=$(echo "$branch_identifier" | sed 's/\//-/g') >> $GITHUB_ENV

- name: Output summary
if: startsWith(github.ref, 'refs/heads/sandbox/')
run: |
echo -e "### Sandbox Environment" >> $GITHUB_STEP_SUMMARY
echo -e '```' >> $GITHUB_STEP_SUMMARY
echo -e "## URLs" >> $GITHUB_STEP_SUMMARY
echo "- Dashboard: https://dashboard.${{ env.branch_identifier }}.testkube.dev" >> $GITHUB_STEP_SUMMARY
echo "- API: https://api.${{ env.branch_identifier }}.testkube.dev" >> $GITHUB_STEP_SUMMARY
echo "- Agent: https://agent.${{ env.branch_identifier }}.testkube.dev" >> $GITHUB_STEP_SUMMARY
echo "- Storage: https://storage.${{ env.branch_identifier }}.testkube.dev" >> $GITHUB_STEP_SUMMARY
echo "- Websockets: https://websockets.${{ env.branch_identifier }}.testkube.dev" >> $GITHUB_STEP_SUMMARY
echo -e '```' >> $GITHUB_STEP_SUMMARY

- name: Get a branch name if PR is created
if: startsWith(github.event.pull_request.head.ref, 'sandbox/')
run: |
# get a branch name
branch_ref="${{ github.event.pull_request.head.ref }}"

#remove slash
branch_ref="${branch_ref#*/}"

#create env var
echo "branch_ref=$branch_ref" >> $GITHUB_ENV

- name: Render template
if: startsWith(github.event.pull_request.head.ref, 'sandbox/')
id: template
uses: chuhlomin/[email protected]
with:
template: .github/comment-template.md
vars: |
branch_ref: ${{ env.branch_ref }}

- name: Create comment on a PR with the endpoints
if: startsWith(github.event.pull_request.head.ref, 'sandbox/')
uses: peter-evans/create-or-update-comment@v4
with:
token: ${{ secrets.CI_BOT_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
body: ${{ steps.template.outputs.result }}