aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorGus Power <gus@infinitesidequests.com>2025-05-12 15:59:16 +0100
committerGus Power <gus@infinitesidequests.com>2025-05-12 15:59:16 +0100
commit65746b829b8247ab366182ea028dc1eb0d21522a (patch)
treec461ea26229177d74e0708bacc739c07892f6d1b /.github
parent1d6fd8359fddbae8aeac17b90ed50d41143ffbb6 (diff)
add github template stuff as per https://rust-github.github.io/
Diffstat (limited to '.github')
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md44
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml1
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md28
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md12
-rw-r--r--.github/dependabot.yml15
-rw-r--r--.github/workflows/audit.yml24
-rw-r--r--.github/workflows/cd.yml111
-rw-r--r--.github/workflows/ci.yml64
8 files changed, 299 insertions, 0 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..24f432f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,44 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: bug
+assignees: ''
+
+---
+
+## Bug description
+
+<!-- A clear and concise description of what the bug is. -->
+
+- Would you like to work on a fix? [y/n]
+
+## To Reproduce
+
+Steps to reproduce the behavior:
+
+1. ...
+2. ...
+3. ...
+4. ...
+
+<!-- Make sure you are able to reproduce the bug in the main branch, too. -->
+
+## Expected behavior
+
+<!-- A clear and concise description of what you expected to happen. -->
+
+## Screenshots
+
+<!-- If applicable, add screenshots to help explain your problem. -->
+
+## Environment
+
+<!-- Please fill the following information. -->
+
+- OS: [e.g. Ubuntu 20.04]
+- multiwan-dyndns version: [e.g. 0.1.0]
+
+## Additional context
+
+<!-- Add any other context about the problem here. -->
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..0086358
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: true
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..3b54884
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,28 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: enhancement
+assignees: ''
+
+---
+
+## Motivations
+
+<!--
+If your feature request is related to a problem, please describe it.
+-->
+
+- Would you like to implement this feature? [y/n]
+
+## Solution
+
+<!-- Describe the solution you'd like. -->
+
+## Alternatives
+
+<!-- Describe any alternative solutions or features you've considered. -->
+
+## Additional context
+
+<!-- Add any other context or screenshots about the feature request here. -->
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..b5aa17b
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,12 @@
+<!-- Please explain the changes you made -->
+
+<!--
+Please, make sure:
+- you have read the contributing guidelines:
+ https://github.com/guspower/multiwan-dyndns/blob/main/docs/CONTRIBUTING.md
+- you have formatted the code using rustfmt:
+ https://github.com/rust-lang/rustfmt
+- you have checked that all tests pass, by running `cargo test --workspace`
+- you have updated the changelog (if needed):
+ https://github.com/guspower/multiwan-dyndns/blob/main/CHANGELOG.md
+-->
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..e669886
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,15 @@
+version: 2
+updates:
+ - package-ecosystem: "cargo"
+ # Look for `Cargo.toml` and `Cargo.lock` in the root directory
+ directory: "/"
+ # Check for updates every Monday
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ # Check for updates every Monday
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml
new file mode 100644
index 0000000..562d5e0
--- /dev/null
+++ b/.github/workflows/audit.yml
@@ -0,0 +1,24 @@
+name: Security audit
+
+on:
+ schedule:
+ # Runs at 00:00 UTC everyday
+ - cron: '0 0 * * *'
+ push:
+ paths:
+ - '**/Cargo.toml'
+ - '**/Cargo.lock'
+ pull_request:
+
+jobs:
+ audit:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - uses: Swatinem/rust-cache@v2
+ - name: Run security audit
+ uses: rustsec/audit-check@v2.0.0
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
new file mode 100644
index 0000000..d0c827d
--- /dev/null
+++ b/.github/workflows/cd.yml
@@ -0,0 +1,111 @@
+name: CD # Continuous Deployment
+
+on:
+ push:
+ tags:
+ - '[v]?[0-9]+.[0-9]+.[0-9]+'
+
+jobs:
+
+ publish:
+ name: Publishing for ${{ matrix.job.os-name }}-${{ matrix.job.architecture }}
+ runs-on: ${{ matrix.job.os }}
+ permissions:
+ contents: write
+ strategy:
+ fail-fast: false
+ matrix:
+ rust: [stable]
+ job:
+ - os: macos-latest
+ os-name: macos
+ target: x86_64-apple-darwin
+ architecture: x86_64
+ - os: macos-latest
+ os-name: macos
+ target: aarch64-apple-darwin
+ architecture: arm64
+ - os: ubuntu-latest
+ os-name: linux
+ target: x86_64-unknown-linux-gnu
+ architecture: x86_64
+ - os: windows-latest
+ os-name: windows
+ target: x86_64-pc-windows-msvc
+ architecture: x86_64
+ - os: ubuntu-latest
+ os-name: linux
+ target: aarch64-unknown-linux-gnu
+ architecture: arm64
+ - os: ubuntu-latest
+ os-name: linux
+ target: i686-unknown-linux-gnu
+ architecture: i686
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ toolchain: ${{ matrix.rust }}
+ target: ${{ matrix.job.target }}
+ - name: Install cross
+ uses: taiki-e/install-action@v2
+ with:
+ tool: cross
+ - name: Build release binary
+ run: cross build --locked --release --target ${{ matrix.job.target }}
+
+ - name: install strip command
+ if: matrix.job.target == 'aarch64-unknown-linux-gnu'
+ shell: bash
+ run: |
+ sudo apt update
+ sudo apt-get install -y binutils-aarch64-linux-gnu
+ - name: Packaging final binary
+ shell: bash
+ run: |
+ BINARY=target/${{ matrix.job.target }}/release/multiwan-dyndns
+ if [[ ${{ runner.os }} == 'Windows' ]]; then
+ BINARY=$BINARY.exe
+ fi
+
+ ####### reduce binary size by removing debug symbols #######
+ if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then
+ GCC_PREFIX="aarch64-linux-gnu-"
+ else
+ GCC_PREFIX=""
+ fi
+ "$GCC_PREFIX"strip $BINARY
+
+ ########## create tar.gz ##########
+ mkdir assets
+ RELEASE_NAME=multiwan-dyndns-${GITHUB_REF/refs\/tags\//}-${{ matrix.job.os-name }}-${{ matrix.job.architecture }}
+ tar czvf assets/$RELEASE_NAME.tar.gz $BINARY
+
+ ########## create sha256 ##########
+ if [[ ${{ runner.os }} == 'Windows' ]]; then
+ certutil -hashfile assets/$RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > assets/$RELEASE_NAME.sha256
+ else
+ shasum -a 256 assets/$RELEASE_NAME.tar.gz > assets/$RELEASE_NAME.sha256
+ fi
+ - name: Releasing assets
+ uses: softprops/action-gh-release@v2
+ with:
+ files: assets/*
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ publish-cargo:
+ name: Publishing to Cargo
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+ - uses: Swatinem/rust-cache@v2
+ - run: cargo publish
+ env:
+ CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..56067a6
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,64 @@
+name: CI # Continuous Integration
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+jobs:
+
+ test:
+ name: Test Suite
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+ - uses: Swatinem/rust-cache@v2
+ - name: Run tests
+ run: cargo test --all-features --workspace
+
+ rustfmt:
+ name: Rustfmt
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ components: rustfmt
+ - uses: Swatinem/rust-cache@v2
+ - name: Check formatting
+ run: cargo fmt --all --check
+
+ clippy:
+ name: Clippy
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ components: clippy
+ - uses: Swatinem/rust-cache@v2
+ - name: Clippy check
+ run: cargo clippy --all-targets --all-features --workspace -- -D warnings
+
+ docs:
+ name: Docs
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+ - uses: Swatinem/rust-cache@v2
+ - name: Check documentation
+ env:
+ RUSTDOCFLAGS: -D warnings
+ run: cargo doc --no-deps --document-private-items --all-features --workspace --examples
+