From 43a05139ec094bee2e5dde3c674ce1390dd518e2 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Mon, 10 Jun 2024 15:40:11 +0530 Subject: [PATCH 01/11] DDN June changes --- action.yml | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/action.yml b/action.yml index aef22b5..fb9d21c 100644 --- a/action.yml +++ b/action.yml @@ -7,20 +7,51 @@ inputs: hasura-pat: description: "Your PAT, preferably saved as a secret in your repository" required: true - build_description: - description: "A description to alert other users that this build was created using CI/CD" - required: false - default: "CI/CD via ddn-deployment GitHub Action" + hasura-project: + description: "The name of your Hasura project" + required: true + supergraph-path: + description: "Path to the supergraph configuration file" + required: true + default: "./supergraph.yaml" runs: using: "composite" steps: - name: Checkout code uses: actions/checkout@v2 - - name: Install ddn CLI + + - name: Install dependencies run: | - curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v1/get.sh | bash + sudo apt-get install jq + curl -L http://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash + - name: Login to ddn - run: ddn login --pat ${{ inputs.hasura-pat }} + run: ddn auth login --pat ${{ inputs.hasura-pat }} + - name: Build supergraph manifest - run: ddn build supergraph-manifest - shell: bash + run: ddn supergraph build create --supergraph ${{ inputs.supergraph-path }} --project ${{ inputs.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 }} From 2248cf7b83551383aef5e6b6188840e5e8cd31f4 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 14:59:11 +0530 Subject: [PATCH 02/11] Cleanup to contain only DDN CLI and login --- .github/workflows/test-action.yml | 19 ++++++++++++ action.yml | 48 +++++-------------------------- 2 files changed, 26 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/test-action.yml diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml new file mode 100644 index 0000000..a01de94 --- /dev/null +++ b/.github/workflows/test-action.yml @@ -0,0 +1,19 @@ +name: Test DDN CLI Action + +on: [push] + +jobs: + test-ddn-cli-action: + 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 diff --git a/action.yml b/action.yml index fb9d21c..7dc9d34 100644 --- a/action.yml +++ b/action.yml @@ -7,51 +7,17 @@ inputs: hasura-pat: description: "Your PAT, preferably saved as a secret in your repository" required: true - hasura-project: - description: "The name of your Hasura project" - required: true - supergraph-path: - description: "Path to the supergraph configuration file" - required: true - default: "./supergraph.yaml" + build_description: + description: "A description to alert other users that this build was created using CI/CD" + required: false + default: "CI/CD via ddn-deployment GitHub Action" runs: using: "composite" steps: - name: Checkout code uses: actions/checkout@v2 - - - name: Install dependencies + - name: Install ddn CLI run: | - sudo apt-get install jq - curl -L http://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - + curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v1/get.sh | bash - name: Login to ddn - run: ddn auth login --pat ${{ inputs.hasura-pat }} - - - name: Build supergraph manifest - run: ddn supergraph build create --supergraph ${{ inputs.supergraph-path }} --project ${{ inputs.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 }} + run: ddn login --pat ${{ inputs.hasura-pat }} From 8377cd2f7d760ac12ba97f0a1827e8f551f8961f Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:04:23 +0530 Subject: [PATCH 03/11] rename --- .../workflows/{test-action.yml => DDN_Build.yml} | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) rename .github/workflows/{test-action.yml => DDN_Build.yml} (79%) diff --git a/.github/workflows/test-action.yml b/.github/workflows/DDN_Build.yml similarity index 79% rename from .github/workflows/test-action.yml rename to .github/workflows/DDN_Build.yml index a01de94..405d097 100644 --- a/.github/workflows/test-action.yml +++ b/.github/workflows/DDN_Build.yml @@ -1,11 +1,14 @@ -name: Test DDN CLI Action - -on: [push] +on: + push: + branches: + - main + pull_request: + branches: + - main jobs: - test-ddn-cli-action: + deploy: runs-on: ubuntu-latest - steps: - name: Checkout repository uses: actions/checkout@v2 From 50441255544f993279ddf3bf0139eb104519e545 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:08:23 +0530 Subject: [PATCH 04/11] added shell --- action.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/action.yml b/action.yml index 7dc9d34..db847c7 100644 --- a/action.yml +++ b/action.yml @@ -17,7 +17,9 @@ runs: - name: Checkout code uses: actions/checkout@v2 - name: Install ddn CLI + shell: bash run: | curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v1/get.sh | bash - name: Login to ddn + shell: bash run: ddn login --pat ${{ inputs.hasura-pat }} From f3f7486a2677158c359a8ea994828c1e7b7d20c4 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:13:38 +0530 Subject: [PATCH 05/11] https --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index db847c7..41f3d76 100644 --- a/action.yml +++ b/action.yml @@ -19,7 +19,7 @@ runs: - name: Install ddn CLI shell: bash run: | - curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v1/get.sh | bash + curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - name: Login to ddn shell: bash run: ddn login --pat ${{ inputs.hasura-pat }} From 1548abbd0ee5772c75de4b24c2803d846683dd2e Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:14:39 +0530 Subject: [PATCH 06/11] command fix --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 41f3d76..dce968c 100644 --- a/action.yml +++ b/action.yml @@ -22,4 +22,4 @@ runs: curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - name: Login to ddn shell: bash - run: ddn login --pat ${{ inputs.hasura-pat }} + run: ddn auth login --pat ${{ inputs.hasura-pat }} From 5af5aad10dfcbe119a1cd967e3cecef1c9cc7dd7 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:16:22 +0530 Subject: [PATCH 07/11] test invalid login --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index dce968c..2ab4466 100644 --- a/action.yml +++ b/action.yml @@ -22,4 +22,4 @@ runs: curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - name: Login to ddn shell: bash - run: ddn auth login --pat ${{ inputs.hasura-pat }} + run: ddn auth login --pat "test invalid login" From 3b2cb9fa1957a98819196f5f6d972cecc122e292 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:17:06 +0530 Subject: [PATCH 08/11] revert changes --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 2ab4466..dce968c 100644 --- a/action.yml +++ b/action.yml @@ -22,4 +22,4 @@ runs: curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - name: Login to ddn shell: bash - run: ddn auth login --pat "test invalid login" + run: ddn auth login --pat ${{ inputs.hasura-pat }} From 316a0c665f11b54418fed868f73d7e95aad07a8e Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:20:51 +0530 Subject: [PATCH 09/11] Cleanup --- action.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/action.yml b/action.yml index dce968c..a806202 100644 --- a/action.yml +++ b/action.yml @@ -7,10 +7,6 @@ inputs: hasura-pat: description: "Your PAT, preferably saved as a secret in your repository" required: true - build_description: - description: "A description to alert other users that this build was created using CI/CD" - required: false - default: "CI/CD via ddn-deployment GitHub Action" runs: using: "composite" steps: @@ -22,4 +18,4 @@ runs: curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - name: Login to ddn shell: bash - run: ddn auth login --pat ${{ inputs.hasura-pat }} + run: ddn auth login --pat "test invalid login" From e26215fd506732bcea7f09ec34ca5bccfb62834d Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:23:02 +0530 Subject: [PATCH 10/11] real cleanup --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index a806202..c41644c 100644 --- a/action.yml +++ b/action.yml @@ -18,4 +18,4 @@ runs: curl -L https://graphql-engine-cdn.hasura.io/ddn/cli/v2/get.sh | bash - name: Login to ddn shell: bash - run: ddn auth login --pat "test invalid login" + run: ddn auth login --pat ${{ inputs.hasura-pat }} From 12333fa70a2112f8d36bc8fc42ae93889ff84ad6 Mon Sep 17 00:00:00 2001 From: Sooraj Sanker Date: Tue, 18 Jun 2024 15:44:04 +0530 Subject: [PATCH 11/11] README updates --- README.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++---- image.png | Bin 0 -> 39541 bytes 2 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 image.png diff --git a/README.md b/README.md index 41bec4b..789d834 100644 --- a/README.md +++ b/README.md @@ -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/ddn-deployment@0.0.2 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/ddn-deployment@0.0.2 + 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 diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d95dbb97b42ef2156f94f8b70981e8479e00ce GIT binary patch literal 39541 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 Gi~SF&E3XFt literal 0 HcmV?d00001