-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from soorajshankar/DDN-CLI-June-Updates
DDN June changes
- Loading branch information
Showing
4 changed files
with
112 additions
and
14 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Install and Login to DDN CLI | ||
uses: ./ # Uses an action in the root directory | ||
with: | ||
hasura-pat: ${{ secrets.HASURA_PAT }} | ||
|
||
- name: Run a ddn command to check the | ||
run: ddn project get --out json |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
# Automate Hasura DDN Deployments | ||
|
||
This repository contains the code to automate the deployment of a Hasura v3 project on [Hasura DDN](https://hasura.io/ddn). | ||
This repository provides everything you need to automate the deployment of a Hasura v3 project on[Hasura DDN](https://hasura.io/ddn). Using GitHub Actions, it simplifies the process of running DDN CLI commands, allowing you to efficiently deploy connectors and build and deploy your supergraph with ease. | ||
|
||
## Prerequisites | ||
|
||
|
@@ -40,27 +40,108 @@ jobs: | |
## Examples | ||
### Automatic Builds on Every Commit on a branch | ||
### Automatic Builds on Every Commit on a branch and PRs to main branch | ||
Imagine you have a branch called `main` that you use to create a DDN build. You can use the following workflow: | ||
|
||
```yaml | ||
name: Automatic Builds from main branch | ||
on: | ||
push: | ||
branches: | ||
- main | ||
- release/* | ||
pull_request: | ||
branches: | ||
- main | ||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Deploy Hasura Project | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
- name: Install and Login to DDN CLI | ||
uses: hasura/[email protected] | ||
with: | ||
hasura-pat: ${{ secrets.HASURA_PAT }} | ||
build_description: "This build was created using CI/CD" | ||
- name: Deploy PG connector and update the connector link | ||
run: ddn connector build create --connector app/connector/mypg/connector.cloud.yaml --target-supergraph supergraph.cloud.yaml --target-connector-link mypg --project ${{ secrets.HASURA_PROJECT }} | ||
- name: Deploy mongodb connector and update the connector link | ||
run: ddn connector build create --connector app/connector/my_mongo/connector.cloud.yaml --target-supergraph supergraph.cloud.yaml --target-connector-link my_mongo --project ${{ secrets.HASURA_PROJECT }} | ||
- name: Build and deploy TS functions and update the connector link | ||
run: ddn connector build create --connector app/connector/myts/connector.cloud.yaml --target-supergraph supergraph.cloud.yaml --target-connector-link myts --project ${{ secrets.HASURA_PROJECT }} | ||
- name: Build and deploy TS functions and update the connector link | ||
run: ddn supergraph build create --supergraph ./supergraph.cloud.yaml --project ${{ secrets.HASURA_PROJECT }} --description "Build for commit ${{ github.sha }}" | ||
``` | ||
|
||
### Automatic deployments + comment with build details on the PR | ||
|
||
![alt text](image.png) | ||
|
||
```yaml | ||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
- name: Install and Login to DDN CLI | ||
uses: hasura/[email protected] | ||
with: | ||
hasura-pat: ${{ secrets.HASURA_PAT }} | ||
- name: Deploy PG connector and update the connector link | ||
run: ddn connector build create --connector app/connector/mypg/connector.cloud.yaml --target-supergraph supergraph.cloud.yaml --target-connector-link mypg --project ${{ secrets.HASURA_PROJECT }} | ||
- name: Deploy mongodb connector and update the connector link | ||
run: ddn connector build create --connector app/connector/my_mongo/connector.cloud.yaml --target-supergraph supergraph.cloud.yaml --target-connector-link my_mongo --project ${{ secrets.HASURA_PROJECT }} | ||
- name: Build and deploy TS functions and update the connector link | ||
run: ddn connector build create --connector app/connector/myts/connector.cloud.yaml --target-supergraph supergraph.cloud.yaml --target-connector-link myts --project ${{ secrets.HASURA_PROJECT }} | ||
- name: Install dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y jq | ||
- name: Build and deploy TS functions and update the connector link | ||
run: ddn supergraph build create --supergraph ./supergraph.cloud.yaml --project ${{ secrets.HASURA_PROJECT }} --description "Build for commit ${{ github.sha }}" --out=json > build_output.json | ||
- name: Extract URLs from JSON | ||
id: extract_urls | ||
run: | | ||
BUILD_URL=$(jq -r '.build_url' build_output.json) | ||
CONSOLE_URL=$(jq -r '.console_url' build_output.json) | ||
echo "::set-output name=build_url::$BUILD_URL" | ||
echo "::set-output name=console_url::$CONSOLE_URL" | ||
- name: Add PR comment with build details | ||
if: github.event_name == 'pull_request' | ||
uses: actions/github-script@v6 | ||
with: | ||
script: | | ||
const buildUrl = '${{ steps.extract_urls.outputs.build_url }}'; | ||
const consoleUrl = '${{ steps.extract_urls.outputs.console_url }}'; | ||
const prNumber = context.payload.pull_request.number; | ||
const commitId = context.sha; | ||
await github.rest.issues.createComment({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
issue_number: prNumber, | ||
body: `Supergraph build was successful! 🎉\n\n**Build URL:** [${buildUrl}](${buildUrl})\n**Console URL:** [${consoleUrl}](${consoleUrl})\n**Commit ID:** ${commitId}` | ||
}); | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
``` | ||
## Resources | ||
|
This file contains 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