Skip to content

Commit

Permalink
Merge pull request #1 from netboxlabs/feat/init-diode-sdk-go
Browse files Browse the repository at this point in the history
feat: init diode-sdk-go
  • Loading branch information
mfiedorowicz authored Jul 11, 2024
2 parents 5775a06 + da4f546 commit 6a34790
Show file tree
Hide file tree
Showing 18 changed files with 6,215 additions and 1 deletion.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @leoparente @mfiedorowicz
28 changes: 28 additions & 0 deletions .github/golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
run:
timeout: 5m
modules-download-mode: readonly

output:
formats: github-actions

linters:
enable:
- revive
- errcheck
- unused
- staticcheck
- ineffassign
- govet
- gosimple
- bodyclose

issues:
exclude-use-default: false
exclude-rules:
- path: /*.go
text: "package-comments: should have a package comment"
linters:
- revive

severity:
default-severity: error
49 changes: 49 additions & 0 deletions .github/pull_request_labeler.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
documentation:
- changed-files:
- any-glob-to-any-file:
- '**/README.md'
- '**/docs/**/*'

github-actions:
- changed-files:
- any-glob-to-any-file:
- '**/.github/workflows/*'
- '**/.github/workflows/**/*'
- '**/.github/dependabot.yaml'
- '**/.github/pull_request_labeler.yaml'

github-templates:
- changed-files:
- any-glob-to-any-file:
- '**/.github/ISSUE_TEMPLATE/*'
- '**/.github/PULL_REQUEST_TEMPLATE.md'
- '**/.github/.chglog/*'
- '**/.github/.chglog/**/*'

internal:
- changed-files:
- any-glob-to-any-file:
- '**/.gitignore'
- '**/.pre-commit-config.yaml'
- '**/MANIFEST.in'
- '**/Makefile'
- '**/CONTRIBUTING.md'
- '**/MAINTAINERS.md'
- '**/CODE_OF_CONDUCT.md'
- '**/LICENSE'
- '**/THIRD-PARTY-LICENSES'
- '**/.editorconfig'

dependencies:
- changed-files:
- any-glob-to-any-file:
- '**/go.mod'
- '**/go.sum'

go:
- changed-files:
- any-glob-to-any-file: '**/*.go'

markdown:
- changed-files:
- any-glob-to-any-file: '**/*.md'
20 changes: 20 additions & 0 deletions .github/workflows/labeler.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: PR labeler
on:
- pull_request_target

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/labeler@v5
with:
configuration-path: '.github/pull_request_labeler.yaml'
30 changes: 30 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Lint
on:
push:
branches:
- "!release"
pull_request:

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

permissions:
contents: read

jobs:
golangci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.22'
cache: false
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.54
args: --config ./.github/golangci.yaml
skip-pkg-cache: true
skip-build-cache: true
149 changes: 149 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
name: Release
on:
workflow_dispatch:
push:
branches: [ release ]

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

env:
GH_TOKEN: ${{ secrets.ORB_CI_GH_TOKEN }}
SEMANTIC_RELEASE_PACKAGE: ${{ github.repository }}
APP_NAME: diode-sdk-go

jobs:
get-next-version:
name: Semantic release get next version
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "lts/*"
- name: Write package.json
uses: DamianReeves/write-file-action@master
with:
path: ./package.json
write-mode: overwrite
contents: |
{
"name": "${{ env.APP_NAME }}",
"version": "1.0.0",
"devDependencies": {
"semantic-release-export-data": "^1.0.1",
"@semantic-release/changelog": "^6.0.3"
}
}
- name: Upload artifact package.json
uses: actions/upload-artifact@v4
with:
name: package.json
path: ./package.json
retention-days: 1
if-no-files-found: error
- name: Write .releaserc.json
uses: DamianReeves/write-file-action@master
with:
path: ./.releaserc.json
write-mode: overwrite
contents: |
{
"branches": "release",
"repositoryUrl": "https://github.com/netboxlabs/diode-sdk-go",
"debug": "true",
"tagFormat": "v${version}",
"plugins": [
["semantic-release-export-data"],
["@semantic-release/commit-analyzer", {
"releaseRules": [
{ "message": "*", "release": "patch"},
{ "message": "fix*", "release": "patch" },
{ "message": "feat*", "release": "minor" },
{ "message": "perf*", "release": "major" }
]
}],
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md",
"changelogTitle": "# Semantic Versioning Changelog"
}
],
[
"@semantic-release/github",
{
"assets": [
{
"path": "release/**"
}
]
}
]
]
}
- name: Upload artifact .releaserc.json
uses: actions/upload-artifact@v4
with:
name: .releaserc.json
path: ./.releaserc.json
retention-days: 1
if-no-files-found: error
- name: setup semantic-release
run: npm i
- name: release dry-run
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_SEMANTIC_RELEASE_WEBHOOK }}
run: npx semantic-release --debug --dry-run
id: get-next-version
- name: Set short sha output
id: short-sha
run: echo "::set-output name=short-sha::${GITHUB_SHA::7}"
- name: Set release version
id: release-version
run: |
echo "::set-output name=release-version::`echo ${{ steps.get-next-version.outputs.new-release-version }} | sed 's/v//g'`"
outputs:
new-release-published: ${{ steps.get-next-version.outputs.new-release-published }}
new-release-version: ${{ steps.release-version.outputs.release-version }}
short-sha: ${{ steps.short-sha.outputs.short-sha }}

confirm-version:
name: Next version ${{ needs.get-next-version.outputs.new-release-version }}
runs-on: ubuntu-latest
timeout-minutes: 5
needs: get-next-version
if: needs.get-next-version.outputs.new-release-published == 'true'
steps:
- uses: actions/checkout@v4
- run: echo "The new release version is ${{ needs.get-next-version.outputs.new-release-version }} commit ${{ needs.get-next-version.outputs.short-sha }}"

semantic-release:
name: Semantic release
needs: confirm-version
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "lts/*"
- name: Download artifact package.json
uses: actions/download-artifact@v4
with:
name: package.json
path: ./package.json
- name: Download artifact .releaserc.json
uses: actions/download-artifact@v4
with:
name: .releaserc.json
path: ./.releaserc.json
- name: setup semantic-release
run: npm i
- name: Release
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }}
run: npx semantic-release --debug
26 changes: 26 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Test
on:
push:
branches:
- "!release"
pull_request:

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

jobs:
go-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.22'
check-latest: true
- name: Run go build
run: go build ./...
- name: Run go test
run: go test -race ./...
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# IntelliJ
.idea/

# VS Code
.vscode

# macOS
.DS_Store

# Go
coverage.txt
Loading

0 comments on commit 6a34790

Please sign in to comment.