chore: setup CI (#1)

This commit is contained in:
Julian Tölle 2024-05-05 00:37:08 +02:00 committed by GitHub
parent ab668ce310
commit 2db1c01a62
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 181 additions and 0 deletions

12
.github/release-please-config.json vendored Normal file
View file

@ -0,0 +1,12 @@
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"include-component-in-tag": false,
"include-v-in-tag": true,
"packages": {
".": {
"release-type": "go",
"package-name": "hcloud-upload-image",
"extra-files": ["internal/version/version.go"]
}
}
}

1
.github/release-please-manifest.json vendored Normal file
View file

@ -0,0 +1 @@
{".":"0.0.1"}

67
.github/workflows/ci.yaml vendored Normal file
View file

@ -0,0 +1,67 @@
name: ci
on:
push:
branches: [main]
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Run golangci-lint (CLI)
uses: golangci/golangci-lint-action@v5
with:
version: v1.57.2 # renovate: datasource=github-releases depName=golangci/golangci-lint
args: --timeout 5m
- name: Run golangci-lint (Lib)
uses: golangci/golangci-lint-action@v5
with:
version: v1.57.2 # renovate: datasource=github-releases depName=golangci/golangci-lint
args: --timeout 5m
working-directory: hcloudimages
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Run tests
run: go test -v -race -coverpkg=./...,./hcloudimages/... ./... ./hcloudimages/...
go-mod-tidy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Run go mod tidy
run: go mod tidy
- name: Check uncommitted changes
run: git diff --exit-code
- if: failure()
run: echo "::error::Check failed, please run 'go mod tidy' and commit the changes."

18
.github/workflows/release-please.yaml vendored Normal file
View file

@ -0,0 +1,18 @@
name: release-please
on:
push:
branches: [main]
jobs:
release-please:
# Do not run on forks.
if: github.repository == 'apricote/hcloud-upload-image'
runs-on: ubuntu-latest
steps:
- uses: google-github-actions/release-please-action@v4
with:
token: ${{ secrets.RELEASE_PLEASE_GH_TOKEN }}
config-file: .github/release-please-config.json
manifest-file: .github/release-please-manifest.json

26
.github/workflows/release.yaml vendored Normal file
View file

@ -0,0 +1,26 @@
name: release
on:
push:
tags:
- "v*.*.*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
dist/

32
.goreleaser.yaml Normal file
View file

@ -0,0 +1,32 @@
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
version: 1
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
archives:
- format: tar.gz
# this name template makes the OS and Arch compatible with the results of `uname`.
name_template: >-
{{ .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}
# use zip for windows archives
format_overrides:
- goos: windows
format: zip
changelog:
# Generated by release-please
disable: true

23
renovate.json Normal file
View file

@ -0,0 +1,23 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
":semanticCommits",
":semanticCommitTypeAll(chore)",
":semanticCommitScope(deps)",
":enableVulnerabilityAlerts"
],
"postUpdateOptions": [
"gomodTidy",
"gomodUpdateImportPaths"
],
"customManagers": [
{
"customType": "regex",
"fileMatch": ["^\\.github\\/(?:workflows|actions)\\/.+\\.ya?ml$"],
"matchStrings": [
"(?:version|VERSION): (?<currentValue>.+) # renovate: datasource=(?<datasource>[a-z-]+) depName=(?<depName>.+)(?: lookupName=(?<lookupName>.+))?(?: versioning=(?<versioning>[a-z-]+))?"
]
}
]
}