From 6ec13e48b8963d29a1b92b965f5f89ec935749aa Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Sat, 29 Aug 2020 16:30:30 -0700 Subject: [PATCH 1/3] WIP - describing notification syntax. --- .github/workflows/build.yaml | 2 +- example.scrutiny.yaml | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 55aed37..86580f7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,6 +1,6 @@ name: CI # This workflow is triggered on pushes to the repository. -on: [push] +on: [push, pull_request] jobs: build: diff --git a/example.scrutiny.yaml b/example.scrutiny.yaml index 7ac93ba..593d484 100644 --- a/example.scrutiny.yaml +++ b/example.scrutiny.yaml @@ -34,13 +34,23 @@ disks: # - /dev/sdb notify: - metric: - script: 'notify-metrics.sh' - long: - script: 'notify-long-test.sh' - short: - script: 'notify-short-test.sh' - + level: 'warn' # 'warn' or 'error' + urls: + - "discord://token@channel" + - "telegram://token@telegram?channels=channel-1[,channel-2,...]" + - "pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]" + - "slack://[botname@]token-a/token-b/token-c" + - "smtp://username:password@host:port/?fromAddress=fromAddress&toAddresses=recipient1[,recipient2,...]" + - "teams://token-a/token-b/token-c" + - "gotify://gotify-host/token" + - "pushbullet://api-token[/device/#channel/email]" + - "ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3" + - "mattermost://[username@]mattermost-host/token[/channel]" + - "hangouts://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz" + - "zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name" + - "join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]" + - "script:///file/path/on/disk" + - "https://www.example.com/path" collect: metric: From 5dd3aed1fea29bd10ba7bbe7557b4f7503601ba9 Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Sun, 6 Sep 2020 16:06:52 -0700 Subject: [PATCH 2/3] adding threshold for percentage Used. Adding release pipeline. --- .github/workflows/release.yaml | 115 ++++++++++++++++++++++++++ webapp/backend/pkg/models/db/smart.go | 2 +- 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..2180131 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,115 @@ +name: Release +# This workflow is triggered manually +on: + workflow_dispatch: + inputs: + version_bump_type: + description: 'Version Bump Type (major, minor, patch)' + required: true + default: 'patch' + version_metadata_path: + description: 'Path to file containing Version string' + required: true + default: 'webapp/backend/pkg/version/version.go' + +jobs: + build: + name: Build + runs-on: ubuntu-latest + container: golang:1.13 + env: + PROJECT_PATH: /go/src/github.com/analogj/scrutiny + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Bump version + id: bump_version + uses: packagrio/action-bumpr-go@master + with: + version_bump_type: ${{ github.event.inputs.version_bump_type }} + version_metadata_path: ${{ github.event.inputs.version_metadata_path }} + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Build + env: + GOOS: linux + GOARCH: amd64 + run: | + mkdir -p $PROJECT_PATH + cp -a $GITHUB_WORKSPACE/. $PROJECT_PATH/ + cd $PROJECT_PATH + + go mod vendor + + go test -v -tags "static" $(go list ./... | grep -v /vendor/) + + go build -ldflags "-X main.goos=linux -X main.goarch=amd64" -o scrutiny-web-linux-amd64 -tags "static" webapp/backend/cmd/scrutiny/scrutiny.go + go build -ldflags "-X main.goos=linux -X main.goarch=amd64" -o scrutiny-collector-metrics-linux-amd64 -tags "static" collector/cmd/collector-metrics/collector-metrics.go + + chmod +x scrutiny-web-linux-amd64 + chmod +x scrutiny-collector-metrics-linux-amd64 + - name: Commit + uses: EndBug/add-and-commit@v4 # You can change this to use a specific version + with: + + author_name: Jason Kulatunga + author_email: jason@thesparktree.com + cwd: ${{ env.PROJECT_PATH }} + force: false + signoff: true + message: '(${{steps.bump_version.outputs.release_version}}) Automated packaging of release by Packagr' + tag: ${{steps.bump_version.outputs.release_version}} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Leave this line unchanged + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.bump_version.outputs.release_version }} + release_name: Release ${{ steps.bump_version.outputs.release_version }} + draft: false + prerelease: false + - name: Upload Web Backend Release Asset + id: upload-release-asset1 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ${{ env.PROJECT_PATH }}/scrutiny-web-linux-amd64 + asset_name: scrutiny-web-linux-amd64 + asset_content_type: application/octet-stream + - name: Upload Collector Release Asset + id: upload-release-asset2 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ${{ env.PROJECT_PATH }}/scrutiny-collector-metrics-linux-amd64 + asset_name: scrutiny-collector-metrics-linux-amd64 + asset_content_type: application/octet-stream + build-docker: + needs: build + name: Build Docker + runs-on: ubuntu-latest + container: docker:19.03.2 + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build Docker + run: | + docker build -t analogj/scrutiny . + docker save -o docker-analogj-scrutiny-${{ steps.bump_version.outputs.release_version }}.tar analogj/scrutiny:latest + - name: Upload Collector Release Asset + id: upload-release-asset2 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: docker-analogj-scrutiny-${{ steps.bump_version.outputs.release_version }}.tar + asset_name: docker-analogj-scrutiny-${{ steps.bump_version.outputs.release_version }}.tar + asset_content_type: application/octet-stream diff --git a/webapp/backend/pkg/models/db/smart.go b/webapp/backend/pkg/models/db/smart.go index 208f156..9078974 100644 --- a/webapp/backend/pkg/models/db/smart.go +++ b/webapp/backend/pkg/models/db/smart.go @@ -85,7 +85,7 @@ func (sm *Smart) ProcessNvmeSmartInfo(info collector.SmartInfo) { {AttributeId: "critical_warning", Name: "Critical Warning", Value: info.NvmeSmartHealthInformationLog.CriticalWarning}, {AttributeId: "temperature", Name: "Temperature", Value: info.NvmeSmartHealthInformationLog.Temperature}, {AttributeId: "available_spare", Name: "Available Spare", Value: info.NvmeSmartHealthInformationLog.AvailableSpare, Threshold: info.NvmeSmartHealthInformationLog.AvailableSpareThreshold}, - {AttributeId: "percentage_used", Name: "Percentage Used", Value: info.NvmeSmartHealthInformationLog.PercentageUsed}, + {AttributeId: "percentage_used", Name: "Percentage Used", Value: info.NvmeSmartHealthInformationLog.PercentageUsed, Threshold: 100}, {AttributeId: "data_units_read", Name: "Data Units Read", Value: info.NvmeSmartHealthInformationLog.DataUnitsRead}, {AttributeId: "data_units_written", Name: "Data Units Written", Value: info.NvmeSmartHealthInformationLog.DataUnitsWritten}, {AttributeId: "host_reads", Name: "Host Reads", Value: info.NvmeSmartHealthInformationLog.HostReads}, From 6cf341a5f1ad10adc26ce6b5e27ca7e887d7b172 Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Sun, 6 Sep 2020 16:11:04 -0700 Subject: [PATCH 3/3] tweaking release pipeline. --- .github/workflows/release.yaml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2180131..35a77fb 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -91,20 +91,22 @@ jobs: asset_path: ${{ env.PROJECT_PATH }}/scrutiny-collector-metrics-linux-amd64 asset_name: scrutiny-collector-metrics-linux-amd64 asset_content_type: application/octet-stream - build-docker: - needs: build - name: Build Docker - runs-on: ubuntu-latest - container: docker:19.03.2 - steps: - - name: Checkout - uses: actions/checkout@v2 +# build-docker: +# needs: build +# name: Build Docker +# runs-on: ubuntu-latest +# container: docker:19.03.2 +# steps: +# - name: Checkout +# uses: actions/checkout@v2 - name: Build Docker run: | - docker build -t analogj/scrutiny . - docker save -o docker-analogj-scrutiny-${{ steps.bump_version.outputs.release_version }}.tar analogj/scrutiny:latest + cd $PROJECT_PATH + + docker build -t analogj/scrutiny:latest -t analogj/scrutiny:${{ steps.bump_version.outputs.release_version }} . + docker save -o docker-analogj-scrutiny-${{ steps.bump_version.outputs.release_version }}.tar analogj/scrutiny - name: Upload Collector Release Asset - id: upload-release-asset2 + id: upload-release-asset3 uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}