Skip to content

Commit

Permalink
Initial implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
HappyTetrahedron committed Feb 26, 2024
0 parents commit 7f20487
Show file tree
Hide file tree
Showing 23 changed files with 919 additions and 0 deletions.
49 changes: 49 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: 🐛 Bug report
description: Create a report to help us improve 🎉
labels:
- bug

body:
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional Context
description: Add any other context about the problem here.
validations:
required: false
- type: textarea
id: logs
attributes:
label: Logs
description: If applicable, add logs to help explain the bug.
render: shell
validations:
required: false
- type: textarea
id: expected_behavior
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: reproduction_steps
attributes:
label: Steps To Reproduce
description: Describe steps to reproduce the behavior
validations:
required: false
- type: textarea
id: version
attributes:
label: Versions
placeholder: v1.2.3 [, Kubernetes 1.21]
validations:
required: true
6 changes: 6 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
blank_issues_enabled: false

contact_links:
- name: ❓ Question
url: https://github.com/appuio/promtool-jsonnet/discussions
about: Ask or discuss with us, we're happy to help 🙋
67 changes: 67 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: 🚀 Feature request
description: Suggest an idea for this project 💡
labels:
- enhancement

body:
- type: textarea
id: summary
attributes:
label: Summary
value: |
**As** role name\
**I want** a feature or functionality\
**So that** I get certain business value
description: This user story helps us to quickly understand what this idea is about.
validations:
required: true
- type: textarea
id: context
attributes:
label: Context
description: Add more information here. You are completely free regarding form and length.
validations:
required: true
- type: textarea
id: out_of_scope
attributes:
label: Out of Scope
description: List aspects that are explicitly not part of this feature
placeholder: |
- ...
- ...
- ...
validations:
required: false
- type: textarea
id: links
attributes:
label: Further links
description: URLs of relevant Git repositories, PRs, Issues, etc.
placeholder: |
- #567
- https://kubernetes.io/docs/reference/
validations:
required: false
- type: textarea
id: acceptance_criteria
attributes:
label: Acceptance Criteria
description: If you already have ideas what the detailed requirements are, please list them below in given-when-then expressions.
placeholder: |
- Given a precondition, when an action happens, then expect a result
```gherkin
Given a precondition
When an action happens
Then expect a result
```
validations:
required: false
- type: textarea
id: implementation_idea
attributes:
label: Implementation Ideas
description: If applicable, shortly list possible implementation ideas
validations:
required: false
19 changes: 19 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Summary

* Short summary of what's included in the PR
* Give special note to breaking changes

## Checklist

- [ ] Categorize the PR by setting a good title and adding one of the labels:
`bug`, `enhancement`, `documentation`, `change`, `breaking`, `dependency`
as they show up in the changelog
- [ ] Update tests.
- [ ] Link this PR to related issues.

<!--
Remove items that do not apply. For completed items, change [ ] to [x].
NOTE: these things are not required to open a PR and can be done afterwards,
while the PR is open.
-->
42 changes: 42 additions & 0 deletions .github/changelog-configuration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"pr_template": "- ${{TITLE}} (#${{NUMBER}})",
"categories": [
{
"title": "## 🚀 Features",
"labels": [
"enhancement"
]
},
{
"title": "## 🛠️ Minor Changes",
"labels": [
"change"
]
},
{
"title": "## 🔎 Breaking Changes",
"labels": [
"breaking"
]
},
{
"title": "## 🐛 Fixes",
"labels": [
"bug"
]
},
{
"title": "## 📄 Documentation",
"labels": [
"documentation"
]
},
{
"title": "## 🔗 Dependency Updates",
"labels": [
"dependency"
]
}
],
"template": "${{CATEGORIZED_COUNT}} changes since ${{FROM_TAG}}\n\n${{CHANGELOG}}"
}
33 changes: 33 additions & 0 deletions .github/common.libsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
local formatLabels = function(labels)
local lf = std.join(', ', std.map(function(l) '%s="%s"' % [l, labels[l]], std.objectFields(labels)));
'{%s}' % [lf];

// returns a series object with correctly formatted labels.
// labels can be modified post creation using `_labels`.
local series = function(name, labels, values) {
_name:: name,
_labels:: labels,
series: self._name + formatLabels(self._labels),
values: values,
};

// returns a test object with the given series and samples. Sample interval is 30s
// the evaluation time is set one hour in the future since all our queries operate on a 1h window
local test = function(name, series, query, samples, interval='30s', eval_time='1h') {
name: name,
interval: interval,
input_series: if std.isArray(series) then series else std.objectValues(series),
promql_expr_test: [
{
expr: query,
eval_time: eval_time,
exp_samples: if std.isArray(samples) then samples else [samples],
},
],
};

{
series: series,
formatLabels: formatLabels,
test: test,
}
32 changes: 32 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Build

on:
pull_request:
branches:
- master
push:
branches:
- master

jobs:
go:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine Go version from go.mod
run: echo "GO_VERSION=$(grep "go 1." go.mod | cut -d " " -f 2)" >> $GITHUB_ENV

- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run build
run: make build
27 changes: 27 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Lint

on:
pull_request: {}

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine Go version from go.mod
run: echo "GO_VERSION=$(grep "go 1." go.mod | cut -d " " -f 2)" >> $GITHUB_ENV

- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run linters
run: make lint
63 changes: 63 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Release

on:
push:
tags:
- "*"

jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Determine Go version from go.mod
run: echo "GO_VERSION=$(grep "go 1." go.mod | cut -d " " -f 2)" >> $GITHUB_ENV

- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build changelog from PRs with labels
id: build_changelog
uses: mikepenz/release-changelog-builder-action@v3
with:
configuration: ".github/changelog-configuration.json"
# PreReleases still get a changelog, but the next full release gets a diff since the last full release,
# combining possible changelogs of all previous PreReleases in between.
# PreReleases show a partial changelog since last PreRelease.
ignorePreReleases: "${{ !contains(github.ref, '-rc') }}"
outputFile: .github/release-notes.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Publish releases
uses: goreleaser/goreleaser-action@v4
with:
args: release --release-notes .github/release-notes.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
32 changes: 32 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Test

on:
pull_request:
branches:
- master
push:
branches:
- master

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine Go version from go.mod
run: echo "GO_VERSION=$(grep "go 1." go.mod | cut -d " " -f 2)" >> $GITHUB_ENV

- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run tests
run: make test
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Goreleaser
dist/
.github/release-notes.md

# Build
promtool-jsonnet
*.out

# Docs
.cache/
.public/
node_modules/

# IDEs
.vscode/

# Generated Manifests
manifests/grafana/grafana.yaml
Loading

0 comments on commit 7f20487

Please sign in to comment.