Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: "Bug Report"
description: Report a problem with porkbun-ddns
title: "[Bug] "
labels: bug
body:
- type: markdown
attributes:
value: |
Thank you for reporting a bug! To help us reproduce and fix the issue, please provide detailed information below.

- type: dropdown
id: usage-method
attributes:
label: How are you using porkbun-ddns?
options:
- Docker run
- Docker Compose
- Python CLI
- Python module (import in script)
validations:
required: true

- type: textarea
id: execution-details
attributes:
label: Execution Setup
description: |
Please describe **how** you run the program depending on your usage method:
- For Docker run: Share the full `docker run` command.
- For Python CLI: Share your command-line and (if used) the config file contents.
- For Python module: Paste a minimal example of your script showing how you use the package.
placeholder: |
docker run -e DOMAIN=... -e APIKEY=... ...
OR
porkbun-ddns -c ./myconfig.json domain.com subdomain
OR
from porkbun_ddns import ...
...
validations:
required: true

- type: textarea
id: describe-the-bug
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
placeholder: What happened? What did you expect?
validations:
required: true

- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to Reproduce
description: What are the exact steps to reproduce the issue?
placeholder: |
1. Run ...
2. Observe ...
validations:
required: true

- type: textarea
id: logs
attributes:
label: Relevant Logs or Output
description: Paste any error logs or command output here.
render: shell
validations:
required: true

- type: input
id: porkbun-version
attributes:
label: porkbun-ddns Version
placeholder: e.g. v1.1.13 or latest Docker tag
validations:
required: true

- type: input
id: os-arch
attributes:
label: Operating System and Architecture
placeholder: e.g. Ubuntu 24.04 x86_64 / Windows 11 x86_64 / macOS arm64 / debian 12 armv6
validations:
required: true

- type: input
id: python-version
attributes:
label: Python Version (only for Python users)
placeholder: e.g. 3.13.3
validations:
required: false

- type: textarea
id: docker-compose-stack
attributes:
label: Docker Compose Stack (if applicable)
description: |
Share any other relevant services or containers in your Docker Compose file that interact with porkbun-ddns.
placeholder: |
services:
porkbun-ddns:
...
other-service:
...
validations:
required: false
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
blank_issues_enabled: false
contact_links: []
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: "Feature Request"
description: Suggest an idea or enhancement for porkbun-ddns
title: "[Feature] "
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Got an idea to improve porkbun-ddns? Let me know!
- type: textarea
id: describe-feature
attributes:
label: Describe the feature
description: A clear and concise description of the feature you'd like to see.
placeholder: I wish the tool could...
validations:
required: true
- type: textarea
id: usecase
attributes:
label: Use case
description: Why do you need this feature? What problem does it solve for you?
placeholder: It would help me because...
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Have you tried workarounds or other solutions?
89 changes: 89 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: "General Question / Help"
description: Ask about usage, configuration, or behavior you don’t understand
title: "[Question] "
labels: [question]
body:
- type: markdown
attributes:
value: |
Have a question about `porkbun-ddns`? You're in the right place!
Please provide as much detail as possible so we can help you effectively.

- type: dropdown
id: usage-method
attributes:
label: How are you using porkbun-ddns?
options:
- Docker run
- Docker Compose
- Python CLI
- Python module (import in script)
validations:
required: true

- type: textarea
id: question-details
attributes:
label: What's your question?
description: Describe what you're trying to achieve, and what you're unsure about.
placeholder: |
I'm trying to update only the AAAA record using Docker Compose, but it's not working as expected. Is this the correct configuration?
validations:
required: true

- type: textarea
id: execution-details
attributes:
label: Execution Setup
description: |
Please describe how you're using the project:
- For Docker run: Paste your `docker run` command.
- For Docker Compose: Relevant parts of your `docker-compose.yml`.
- For Python CLI: Command used and config file (if any).
- For Python module: A snippet of your script.
placeholder: |
docker run -e DOMAIN=... -e APIKEY=... ...
OR
from porkbun_ddns import ...
...
validations:
required: false

- type: input
id: porkbun-version
attributes:
label: porkbun-ddns Version
placeholder: e.g. v1.1.13 or latest Docker tag
validations:
required: false

- type: input
id: os-arch
attributes:
label: Operating System and Architecture
placeholder: e.g. Ubuntu 24.04 x86_64 / Windows 11 / macOS arm64
validations:
required: false

- type: input
id: python-version
attributes:
label: Python Version (only if using Python CLI or module)
placeholder: e.g. 3.12.2
validations:
required: false

- type: textarea
id: docker-compose-stack
attributes:
label: Docker Compose Stack (if applicable)
description: |
If you're using Docker Compose, paste your stack if it's relevant.
placeholder: |
services:
porkbun-ddns:
...
other-service:
...
validations:
required: false
2 changes: 1 addition & 1 deletion .github/workflows/auto-merge-dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- uses: actions/create-github-app-token@v1
- uses: actions/create-github-app-token@v2
id: generate-token
with:
app-id: ${{ secrets.APP_ID }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
LATEST_TAG=$(curl -s "https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/latest" | jq -r '.name')
URL='https://gist.githubusercontent.com/mietzen/cd33efb65f91619201a45ac50dcfc29e/raw/bump-version'
echo "version=v$(wget -qO - ${URL} | bash -s ${LATEST_TAG} bug)" >> $GITHUB_OUTPUT
- uses: actions/create-github-app-token@v1
- uses: actions/create-github-app-token@v2
id: generate-token
with:
app-id: ${{ secrets.APP_ID }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
build_matrix: ${{ steps.set-matrix.outputs.build_matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Setup Matrix-Jobs
Expand Down Expand Up @@ -45,7 +45,7 @@ jobs:
${{ insert }}: ${{ fromJson(needs.Setup.outputs.build_matrix) }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
Expand Down Expand Up @@ -130,7 +130,7 @@ jobs:
- Setup
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Login to Docker Hub
uses: docker/login-action@v3
Expand Down
54 changes: 54 additions & 0 deletions .github/workflows/feedback-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Feedback Label Automation

on:
issue_comment:
types: [created]

permissions:
issues: write

jobs:
manage-feedback-label:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Determine commenter role
id: determine-role
run: |
AUTHOR="${{ github.event.comment.author_association }}"
if [[ "$AUTHOR" == "OWNER" || "$AUTHOR" == "MEMBER" || "$AUTHOR" == "COLLABORATOR" ]]; then
echo "IS_MAINTAINER=true" >> $GITHUB_ENV
else
echo "IS_MAINTAINER=false" >> $GITHUB_ENV
fi

ISSUE_STATE="${{ github.event.issue.state }}"
HAS_ENHANCEMENT_LABEL=false
for label in "${{ toJson(github.event.issue.labels) }}" ; do
if [[ "$label" == *"enhancement"* ]]; then
HAS_ENHANCEMENT_LABEL=true
break
fi
done

if [[ "$ISSUE_STATE" == "open" && "$HAS_ENHANCEMENT_LABEL" == "false" ]]; then
echo "IS_ELIGIBLE=true" >> $GITHUB_ENV
else
echo "IS_ELIGIBLE=false" >> $GITHUB_ENV
fi

- name: Add 'feedback required' label
if: env.IS_MAINTAINER == 'true' && env.IS_ELIGIBLE == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh issue edit ${{ github.event.issue.number }} --add-label "Feedback needed"

- name: Remove 'feedback required' label
if: env.IS_MAINTAINER == 'false' && env.IS_ELIGIBLE == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh issue edit ${{ github.event.issue.number }} --remove-label "Feedback needed"
4 changes: 2 additions & 2 deletions .github/workflows/lint_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ jobs:
fail-fast: false

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
version: ${{ steps.set-version.outputs.version }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Get Version
Expand All @@ -33,9 +33,9 @@ jobs:
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Install dependencies
Expand Down
4 changes: 2 additions & 2 deletions Docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.13.2-slim
FROM python:3.13.7-slim

ARG PORKBUN_DDNS_VERSION=0.0.0

Expand All @@ -7,7 +7,7 @@ COPY . /tmp/porkbun-ddns
RUN cd /tmp/porkbun-ddns \
&& mv ./Docker/entrypoint.py /entrypoint.py \
&& export VERSION=${PORKBUN_DDNS_VERSION} \
&& pip install setuptools \
&& pip install setuptools xdg-base-dirs \
&& python setup.py install \
&& rm -rf /tmp/porkbun-ddns

Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,10 @@ Instead of passing API keys as environment variables, you can use **Docker Secre

### 1. Create the Secret Files


Save your API keys to a secure location:


```sh
echo "your-api-key" > /path/to/secrets/PORKBUN_API_KEY
echo "your-secret-api-key" > /path/to/secrets/PORKBUN_SECRET_API_KEY
Expand Down
Loading