diff --git a/.dockerignore b/.dockerignore index c5e82d7..81c00f7 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1 @@ -bin \ No newline at end of file +dyndns-client diff --git a/.editorconfig b/.editorconfig index b53e68c..f8c94d9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,12 +1,13 @@ +# Editor configuration, see http://editorconfig.org root = true [*] -indent_style = space -indent_size = 2 -end_of_line = lf charset = utf-8 -trim_trailing_whitespace = true +end_of_line = lf +indent_size = 2 +indent_style = space insert_final_newline = false +trim_trailing_whitespace = true -[Makefile] -indent_style = tab \ No newline at end of file +[{Makefile,*.go}] +indent_style = tab diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 5d3e3d0..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -**/Makefile eol=lf diff --git a/.gitea/workflows/golangci-lint.yaml b/.gitea/workflows/golang-linters.yaml similarity index 68% rename from .gitea/workflows/golangci-lint.yaml rename to .gitea/workflows/golang-linters.yaml index 3748842..af61dec 100644 --- a/.gitea/workflows/golangci-lint.yaml +++ b/.gitea/workflows/golang-linters.yaml @@ -1,4 +1,4 @@ -name: Golang CI lint +name: "Lint Golang files" on: pull_request: @@ -6,22 +6,24 @@ on: push: branches: [ '**' ] tags-ignore: [ '**' ] + workflow_dispatch: {} permissions: contents: read jobs: golangci: + name: "Run golang CI linter" runs-on: ${{ matrix.os }} strategy: matrix: go: [ stable ] os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v4.3.0 - uses: actions/setup-go@v5.5.0 with: go-version: ${{ matrix.go }} - uses: golangci/golangci-lint-action@v8.0.0 with: - version: v2.1 \ No newline at end of file + version: v2.3.0 # renovate: datasource=github-releases depName=golangci/golangci-lint diff --git a/.gitea/workflows/golang-tests.yaml b/.gitea/workflows/golang-tests.yaml index 413cc33..a689b4a 100644 --- a/.gitea/workflows/golang-tests.yaml +++ b/.gitea/workflows/golang-tests.yaml @@ -1,4 +1,4 @@ -name: Golang Tests +name: "Run Golang tests" on: pull_request: @@ -6,16 +6,34 @@ on: push: branches: [ '**' ] tags-ignore: [ '**' ] + workflow_dispatch: {} jobs: - unittest: + # integration-test: + # name: "Run integration tests" + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # go: [ stable ] + # os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] + # steps: + # - uses: actions/checkout@v4.3.0 + # - uses: actions/setup-go@v5.5.0 + # with: + # go-version: ${{ matrix.go }} + # - env: + # GOPROXY: ${{ vars.GOPROXY }} + # run: make test/integration + + unit-test: + name: "Run unit tests" runs-on: ${{ matrix.os }} strategy: matrix: go: [ stable ] os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v4.3.0 - uses: actions/setup-go@v5.5.0 with: go-version: ${{ matrix.go }} diff --git a/.gitea/workflows/markdown-linters.yaml b/.gitea/workflows/markdown-linters.yaml index ced3fcc..7ce9fce 100644 --- a/.gitea/workflows/markdown-linters.yaml +++ b/.gitea/workflows/markdown-linters.yaml @@ -1,19 +1,19 @@ -name: Markdown linter +name: "Lint Markdown files" on: pull_request: types: [ "opened", "reopened", "synchronize" ] push: - branches: [ '**' ] - tags-ignore: [ '**' ] + branches: [ '*' ] + tags-ignore: [ '*' ] workflow_dispatch: {} jobs: markdown-lint: - runs-on: - - ubuntu-latest + name: "Run markdown linter" + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v4.3.0 - uses: DavidAnson/markdownlint-cli2-action@v20.0.0 with: - globs: '**/*.md' \ No newline at end of file + globs: '**/*.md' diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index fe15f67..9b8fe64 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -1,4 +1,4 @@ -name: Release +name: "Release" on: push: @@ -9,15 +9,15 @@ permissions: jobs: release: - runs-on: - - ubuntu-latest + name: "Release application" + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v4.3.0 - uses: docker/setup-qemu-action@v3.6.0 - uses: actions/setup-go@v5.5.0 with: go-version: stable - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: registry: git.cryptic.systems username: ${{ github.repository_owner }} @@ -28,10 +28,11 @@ jobs: GOPROXY: ${{ vars.GOPROXY }} uses: goreleaser/goreleaser-action@v6.3.0 with: - version: "~> v2" + version: v2.11.2 # renovate: datasource=github-releases depName=goreleaser/goreleaser args: release --clean sync-to-hub-docker-io: + name: "Upload Images to docker.io" needs: - release runs-on: ubuntu-latest diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..9e02d10 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,13 @@ +version: "2" +linters: + default: standard + enable: + - errname + - gosec + + exclusions: + rules: [] + warn-unused: true + +run: + tests: true diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..34c4081 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,136 @@ +# markdownlint YAML configuration +# https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml + +# Default state for all rules +default: true + +# Path to configuration file to extend +extends: null + +# MD003/heading-style/header-style - Heading style +MD003: + # Heading style + style: "atx" + +# MD004/ul-style - Unordered list style +MD004: + style: "dash" + +# MD007/ul-indent - Unordered list indentation +MD007: + # Spaces for indent + indent: 2 + # Whether to indent the first level of the list + start_indented: false + +# MD009/no-trailing-spaces - Trailing spaces +MD009: + # Spaces for line break + br_spaces: 2 + # Allow spaces for empty lines in list items + list_item_empty_lines: false + # Include unnecessary breaks + strict: false + +# MD010/no-hard-tabs - Hard tabs +MD010: + # Include code blocks + code_blocks: true + +# MD012/no-multiple-blanks - Multiple consecutive blank lines +MD012: + # Consecutive blank lines + maximum: 1 + +# MD013/line-length - Line length +MD013: + # Number of characters + line_length: 120 + # Number of characters for headings + heading_line_length: 120 + # Number of characters for code blocks + code_block_line_length: 120 + # Include code blocks + code_blocks: false + # Include tables + tables: false + # Include headings + headings: true + # Strict length checking + strict: false + # Stern length checking + stern: false + +# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines +MD022: + # Blank lines above heading + lines_above: 1 + # Blank lines below heading + lines_below: 1 + +# MD025/single-title/single-h1 - Multiple top-level headings in the same document +MD025: + # Heading level + level: 1 + # RegExp for matching title in front matter + front_matter_title: "^\\s*title\\s*[:=]" + +# MD026/no-trailing-punctuation - Trailing punctuation in heading +MD026: + # Punctuation characters + punctuation: ".,;:!。,;:!" + +# MD029/ol-prefix - Ordered list item prefix +MD029: + # List style + style: "one_or_ordered" + +# MD030/list-marker-space - Spaces after list markers +MD030: + # Spaces for single-line unordered list items + ul_single: 1 + # Spaces for single-line ordered list items + ol_single: 1 + # Spaces for multi-line unordered list items + ul_multi: 1 + # Spaces for multi-line ordered list items + ol_multi: 1 + +# MD033/no-inline-html - Inline HTML +MD033: + # Allowed elements + allowed_elements: [] + +# MD035/hr-style - Horizontal rule style +MD035: + # Horizontal rule style + style: "---" + +# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading +MD036: + # Punctuation characters + punctuation: ".,;:!?。,;:!?" + +# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading +MD041: + # Heading level + level: 1 + # RegExp for matching title in front matter + front_matter_title: "^\\s*title\\s*[:=]" + +# MD044/proper-names - Proper names should have the correct capitalization +MD044: + # List of proper names + names: [] + # Include code blocks + code_blocks: false + +# MD046/code-block-style - Code block style +MD046: + # Block style + style: "fenced" + +# MD048/code-fence-style - Code fence style +MD048: + # Code fence syle + style: "backtick" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f74a7a0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM scratch AS build + +COPY dyndns-client-* /usr/bin/app + +ENTRYPOINT [ "/usr/bin/dyndns-client" ]