Skip to content

Commit

Permalink
chore: Apply Go project template (#21)
Browse files Browse the repository at this point in the history
- Enable CI jobs for linting, testing, building
- Auto-release on new tags
- Add issue templates

Signed-off-by: Manuel Hutter <[email protected]>
  • Loading branch information
mhutter authored Aug 10, 2023
1 parent e9ed735 commit cb8ea63
Show file tree
Hide file tree
Showing 11 changed files with 298 additions and 39 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
7 changes: 7 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
blank_issues_enabled: false

# TODO: Redirect support questions
contact_links:
- name: ❓ Question
url: https://github.com/vshn/appcat-cli/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}}"
}
20 changes: 20 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Build

on:
pull_request: {}
push:
branches:
- master

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

- uses: actions/setup-go@v4
with:
go-version-file: go.mod

- name: Run build
run: go build -v ./...
27 changes: 0 additions & 27 deletions .github/workflows/dockerbuild.yml

This file was deleted.

17 changes: 17 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Lint

on:
pull_request: {}

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

- uses: actions/setup-go@v4
with:
go-version-file: go.mod

- name: golangci-lint
uses: golangci/golangci-lint-action@v3
65 changes: 65 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Release

on:
push:
tags:
- "v*"

env:
ghcr_latest_tag: "${{ github.ref_type == 'tag' && ',ghcr.io/vshn/appcat-cli:latest' || '' }}"

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

- uses: actions/setup-go@v3
with:
go-version-file: go.mod

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

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

- name: Login to ghcr.io
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Docker build
uses: docker/build-push-action@v4
with:
# Without this the .git directory is not present and our tests fail
build-args: BUILDKIT_CONTEXT_KEEP_GIT_DIR=true
push: true
tags: "ghcr.io/vshn/appcat-cli:${{ github.ref_name }}${{ env.ghcr_latest_tag }}"

- 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 }}
23 changes: 12 additions & 11 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
name: 'Tests'
name: Test

on:
pull_request: {}
push:
branches: ["master"]
pull_request:
branches: ["master"]
branches:
- master

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: Test
run: go test -v ./...
- uses: actions/checkout@v3

- uses: actions/setup-go@v4
with:
go-version-file: go.mod

- name: Run tests
run: go test -v -race ./...
1 change: 0 additions & 1 deletion internal/util/argParser.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ func FormatInputArguments(arguments []string) []string {
if isParameterValuePair(argument) {
if value != "" {
fixedArguments = append(fixedArguments, value)
value = ""
}

param, cutValue, _ := strings.Cut(argument, PARAM_VALUE_INFIX)
Expand Down

0 comments on commit cb8ea63

Please sign in to comment.