Skip to content

Commit

Permalink
Add GitHub Action for integration of event reporter (#96)
Browse files Browse the repository at this point in the history
  • Loading branch information
kezhenxu94 authored Jun 14, 2021
1 parent 9f26787 commit 544738a
Show file tree
Hide file tree
Showing 7 changed files with 201 additions and 3 deletions.
19 changes: 19 additions & 0 deletions .github/scripts/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

echo ::save-state name=START_TIME::$(date +%s)000
34 changes: 34 additions & 0 deletions .github/scripts/post-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/usr/bin/env sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

set -ex

echo "Reporting event..."

/swctl \
--grpcAddr="$OAP_URL" \
event report \
--uuid="$(cat /proc/sys/kernel/random/uuid)" \
--name="$NAME" \
--service="$SERVICE" \
--instance="$INSTANCE" \
--endpoint="$ENDPOINT" \
--message="$MESSAGE" \
--startTime="$STATE_START_TIME" \
--endTime=$(date +%s)000 \
$PARAMETERS
37 changes: 37 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

FROM golang:1.14 AS builder

ENV CGO_ENABLED=0
ENV GO111MODULE=on

WORKDIR /cli

COPY go.* ./

RUN go mod download

COPY . .

RUN make linux && mv bin/swctl-*-linux-amd64 /swctl

FROM alpine

COPY --from=builder /swctl /swctl

COPY .github/scripts/* /

ENTRYPOINT [ "/swctl" ]
11 changes: 9 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,13 @@
# limitations under the License.
#

VERSION ?= latest
VERSION ?= dev-$(shell git rev-parse --short HEAD)
APP_NAME = skywalking-cli
OUT_DIR = bin
BINARY = swctl

HUB ?= docker.io/apache

RELEASE_BIN = skywalking-cli-$(VERSION)-bin
RELEASE_SRC = skywalking-cli-$(VERSION)-src

Expand Down Expand Up @@ -144,13 +147,17 @@ check-codegen:
exit 1; \
fi

.PHONY: docker
docker:
docker build . -t $(HUB)/$(APP_NAME):$(VERSION)

.PHONY: test-commands
test-commands:
@if ! docker run --name oap -p 12800:12800 -p 11800:11800 -d -e SW_HEALTH_CHECKER=default -e SW_TELEMETRY=prometheus apache/skywalking-oap-server:8.4.0-es7 > /dev/null 2>&1;then \
docker container stop oap; \
docker container prune -f; \
docker run --name oap -p 12800:12800 -p 11800:11800 -d -e SW_HEALTH_CHECKER=default -e SW_TELEMETRY=prometheus apache/skywalking-oap-server:8.4.0-es7; \
fi
./scripts/test_commands.sh
VERSION=$(VERSION) ./scripts/test_commands.sh
@docker container stop oap
@docker container prune -f
39 changes: 39 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,45 @@ spec:
</details>
<details>
<summary>Report events in CD workflows - GitHub Actions</summary>
Integrate skywalking-cli into your CD workflows to report events, this is an implementation of GitHub Actions, but we
welcome you to contribute plugins of other CD platforms, like Jenkins, GitLab, etc.
The usage of integration for GitHub Actions is as follows.
```yaml
# ...

jobs:
deploy:
strategy:
matrix:
instance:
- asia-southeast
- asia-northeast
name: Deploy Product Service
runs-on: ubuntu-latest
steps:
# other steps such as checkout ...

- name: Wrap the deployment steps with skywalking-cli
uses: apache/skywalking-cli@main # we always suggest using a revision instead of `main`
with:
oap-url: ${{ secrets.OAP_URL }} # Required. Set the OAP backend URL, such as example.com:11800
auth-token: ${{ secrets.OAP_AUTH_TOKEN }} # Optional. OAP auth token if you enable authentication in OAP
service: product # Required. Name of the service to be deployed
instance: ${{ matrix.instance }} # Required. Name of the instance to be deployed
endpoint: "" # Optional. Endpoint of the service, if any
message: "Upgrade from {fromVersion} to {toVersion}" # Optional. The message of the event
parameters: "" # Optional. The parameters in the message, if any

# your package / deployment steps...
```

</details>

# Contributing
For developers who want to contribute to this project, see [Contribution Guide](CONTRIBUTING.md)

Expand Down
62 changes: 62 additions & 0 deletions action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: SkyWalking Event Reporter
description: Report GitHub workflow events to Apache SkyWalking
author: Apache SkyWalking
inputs:
oap-url:
description: URL of SkyWalking OAP
required: true
auth-token:
description: Authorization token of SkyWalking OAP
required: false
name:
description: The name of the event, for example, "Upgrade"
required: false
default: Upgrade
service:
description: The service name of the event
required: true
instance:
description: The service instance of the event
required: true
endpoint:
description: The service endpoint of the event, if any
required: false
message:
description: The message of the event
required: false
default: Upgrade from {fromVersion} to {toVersion}
parameters:
description: The parameters in the message
required: false
default: ""

runs:
using: docker
image: Dockerfile
env:
OAP_URL: ${{ inputs.oap-url }}
AUTH_TOKEN: ${{ inputs.auth-token }}
NAME: ${{ inputs.name }}
SERVICE: ${{ inputs.service }}
INSTANCE: ${{ inputs.instance }}
ENDPOINT: ${{ inputs.endpoint }}
MESSAGE: ${{ inputs.message }}
PARAMETERS: ${{ inputs.parameters }}
entrypoint: /entrypoint.sh
post-entrypoint: /post-entrypoint.sh
2 changes: 1 addition & 1 deletion scripts/test_commands.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ else
os="linux"
fi

swctl="bin/swctl-latest-${os}-amd64 --base-url=http://localhost:12800/graphql"
swctl="bin/swctl-${VERSION}-${os}-amd64 --base-url=http://localhost:12800/graphql"

retries=1
max_retries=10
Expand Down

0 comments on commit 544738a

Please sign in to comment.