From 7449174736023c733ce15b5d2296008136f5c7b6 Mon Sep 17 00:00:00 2001 From: noah Date: Sun, 27 Feb 2022 23:34:44 +0900 Subject: [PATCH 1/2] Enhance the integration document --- docs/concepts/self-hosted-server.md | 7 --- docs/tasks/integration.md | 91 +++++++++++++++++++++++------ 2 files changed, 72 insertions(+), 26 deletions(-) delete mode 100644 docs/concepts/self-hosted-server.md diff --git a/docs/concepts/self-hosted-server.md b/docs/concepts/self-hosted-server.md deleted file mode 100644 index 3525e07..0000000 --- a/docs/concepts/self-hosted-server.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Self-hosted Server - -Gitploy provide self-hosted server which is the practice of locally installing and hosting by the user. We're providing installation guide for each environment. You can check this [guide](../tasks/installation.md) for details. diff --git a/docs/tasks/integration.md b/docs/tasks/integration.md index 3d7f6ac..c7a0c6c 100644 --- a/docs/tasks/integration.md +++ b/docs/tasks/integration.md @@ -4,51 +4,104 @@ sidebar_position: 3 # Integration -## GitHub Action +## Deployment API -GitHub Actions help you automate tasks to run an actual deployment. GitHub Actions are event-driven, meaning that you can run a series of commands after a deployment event has occurred. +As described in the '[How it works](../concepts/how-it-work.md)' document, two preparations are required to connect with the deployment API; 1) Make sure your deployment tooling is listening for the Github [deployment](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment) event. 2) Update the deployment status by [API](https://docs.github.com/en/rest/reference/deployments#create-a-deployment-status) after execution is complete. This document will show how you can connect with the mainstream deployment tools. -To listening the deployment event, you must specify `deployment` for the `on` field. And you can use the `if` conditional to run a job for the specific environment. Here is the example below. +### GitHub Action + +#### Listening for an event + +GitHub Action provides the `on` syntax to define the type of activity that will trigger a workflow run, and it supports the deployment event. ```yaml -# Listening the deployment event on: deployment +``` + +And you can use the `if` conditional to run a job when an environment is met. You can use context to access the deployment environment. + +```yaml +jobs: + deploy-production: + runs-on: ubuntu-latest + if: ${{ github.event.deployment.environment === 'production' }} +``` + +#### Update the deployment status + +The third-party plugin, [chrnorm/deployment-status](https://github.com/chrnorm/deployment-status), provides that a GitHub action updates the status of deployments as part of your GitHub CI workflows. + +```yaml jobs: deploy-dev: runs-on: ubuntu-latest - # Run a job when the environment is 'production. - if: ${{ github.event.deployment.environment == 'production' }} steps: - - - name: Checkout - uses: actions/checkout@v2 + ... - - name: Start to deploy + name: Update the deployment status uses: chrnorm/deployment-status@releases/v1 with: - deployment_id: ${{ github.event.deployment.id }} - description: Start to deploy ... - state: "in_progress" token: "${{ github.token }}" - # Run your deployment commands. + deployment_id: ${{ github.event.deployment.id }} + description: Finish to deploy successfully. + state: "success" ``` -## Slack +You can reference this [example](https://github.com/gitploy-io/gitploy/discussions/178) for integrating with GitHub action. + +### Drone CI + +#### Listening for an event + +Drone CI provides the `trigger` field to limit pipeline execution based on the drone event type, supporting the `promote` event. + +```yaml +trigger: + event: + - promote +``` + +And you can access the [`DRONE_DEPLOY_TO`](https://docs.drone.io/pipeline/environment/reference/drone-deploy-to/) environment by the environment if you need the conditional step. + +#### Update the deployment status + +The third-party plugin, [cedrichopf/drone-status](https://github.com/cedrichopf/drone-status), provides that a Drone CI updates the status of deployments as part of your CI pipelines. + +```yaml +steps: + - name: Update the deployment status + image: cedrichopf/drone-status + settings: + api_token: + from_secret: GITHUB_TOKEN + context: deploy + state: success + description: Finish to deploy successfully. +``` + +### Spinnaker +TBU + +### Internal Deployment Tooling + +GitHub provides a well-organized [document](https://docs.github.com/en/rest/guides/delivering-deployments) to guide to build an internal deployment tooling to deploy on your servers with the Deployment API. + +## Notification -Slack integration provides notifications for events. +### Slack -### Step 1: Create App +#### Step 1: Create App Firstly, we have to create [Slack App](https://api.slack.com/apps). You should click the Create App button and fill out inputs. -### Step 2: Configure Permissions +#### Step 2: Configure Permissions After creating App, we move to the *OAuth & Permissions* page and set up *the redirect URLs* and *Bot Token scopes*on this page. Firstly, you should add a new redirect URL with the `GITPLOY_SERVER_PROTO://GITPLOY_SERVER_HOST/slack/signin` format; secondly, add `chat:write` scope into the Bot Token scopes. ![Slack Bot Token Sceops](../../static/img/docs/slack-bot-token-scopes.png) -### Step 3: Run Server With App Credentials +#### Step 3: Run Server With App Credentials To enable Slack integration, you have to set up these environments when you run the server: `GITPLOY_SLACK_CLIENT_ID` and `GITPLOY_SLACK_CLIENT_SECRET`. You can get these credentials from *App Credentials* section of *Basic Information* page. From d4de6601a2c69f3f6dc13f65f89556b11e45fcec Mon Sep 17 00:00:00 2001 From: noah Date: Sun, 27 Feb 2022 23:54:38 +0900 Subject: [PATCH 2/2] Add the document for Spinnaker --- docs/tasks/integration.md | 62 +++++++++++++++++++++++++- static/img/docs/spinnaker-trigger.png | Bin 0 -> 43461 bytes 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 static/img/docs/spinnaker-trigger.png diff --git a/docs/tasks/integration.md b/docs/tasks/integration.md index c7a0c6c..3470993 100644 --- a/docs/tasks/integration.md +++ b/docs/tasks/integration.md @@ -82,7 +82,67 @@ steps: ``` ### Spinnaker -TBU + +#### Listening for an event + +The trigger type has to be the webhook type to listen to an event, and the constraints verify repository and environment to determine if triggered or not. + +![Spinnaker Webhook Trigger](../../static/img/docs/spinnaker-trigger.png) + +#### Update the deployment status + +Spinnaker provides a simple way to add a custom stage to call API instead of extending through codes. Spinnaker can typically make API calls as part of a pipeline by adding a custom stage. + +To create a custom webhook, we have to add the configuration to the `orca-local.yml` file, located in `$HOME/.hal/default/profiles`. And the custom stage has a few variables, `owner`, `repo`, `deployment_id`, `description`, and `state`, for updating the deployment status dynamically. You can set up the variables for your project. + +
+Custom Stage + +```yaml +webhook: + preconfigured: + - label: Update Deployment status + type: updateDeploymentStatus + enabled: true + description: Update the deployment status. + method: POST + url: https://api.github.com/repos/${ parameterValues['owner'] }/${ parameterValues['repo'] }/deployments/${ parameterValues['deployment_id'] }/statuses + customHeaders: + # Replace with your GitHub token. + Authorization: + - token GITHUB_TOKEN + Content-Type: + - application/json + payload: |- + { + "description": "${parameterValues['description']}", + "state": "${parameterValues['state']}", + "log_url": "http://localhost:9000/#/applications/${execution.application}/executions/details/${execution.id}" + } + parameters: + - label: GitHub Owner + name: owner + type: string + - label: GitHub Repo + name: repo + type: string + - lable: Deployment ID + name: deployment_id + type: string + - label: Description + name: description + type: string + - label: State + name: state + type: string + description: The state can be one of "queued", "in_progress", "success", "failure" +``` + +
+ +You can reference the [spinnaker demo](https://github.com/gitploy-io/spinnaker-demo) for integrating with Spinnaker. + + ### Internal Deployment Tooling diff --git a/static/img/docs/spinnaker-trigger.png b/static/img/docs/spinnaker-trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..81ed0b955e6795155c0f6a7a5cd7ac8c805d6064 GIT binary patch literal 43461 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 IbxsLQ0KMBqy#N3J literal 0 HcmV?d00001