build(ethtool): add job to build and publish image
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index e831222..dd1d5b8 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -3,6 +3,39 @@
pull_request: {}
jobs:
+ build-prometheus-ethtool-exporter:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3.0.2
+ with:
+ fetch-depth: 0
+ - uses: tj-actions/changed-files@v29.0.2
+ id: changed-files
+ with:
+ files: images/prometheus-ethtool-exporter/*
+ - uses: docker/setup-qemu-action@v2.0.0
+ if: steps.changed-files.outputs.any_changed == 'true'
+ - uses: docker/setup-buildx-action@v2.0.0
+ if: steps.changed-files.outputs.any_changed == 'true'
+ - uses: docker/login-action@v2.0.0
+ if: steps.changed-files.outputs.any_changed == 'true'
+ with:
+ registry: quay.io
+ username: ${{ secrets.QUAY_USERNAME }}
+ password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+ - uses: docker/build-push-action@v3.1.1
+ if: steps.changed-files.outputs.any_changed == 'true'
+ with:
+ context: images/prometheus-ethtool-exporter
+ cache-from: type=gha,scope=prometheus-ethtool-exporter
+ cache-to: type=gha,mode=max,scope=prometheus-ethtool-exporter
+ platforms: linux/amd64,linux/arm64
+ push: true
+ build-args: |
+ PROJECT_REF=$(cat images/prometheus-ethtool-exporter/ref)
+ tags: |
+ quay.io/vexxhost/ethtool-exporter:$(cat images/prometheus-ethtool-exporter/ref)
+
build-image-strategy:
runs-on: ubuntu-latest
steps:
diff --git a/images/prometheus-ethtool-exporter/.dockerignore b/images/prometheus-ethtool-exporter/.dockerignore
new file mode 100644
index 0000000..72e8ffc
--- /dev/null
+++ b/images/prometheus-ethtool-exporter/.dockerignore
@@ -0,0 +1 @@
+*
diff --git a/images/prometheus-ethtool-exporter/Dockerfile b/images/prometheus-ethtool-exporter/Dockerfile
new file mode 100644
index 0000000..b413b93
--- /dev/null
+++ b/images/prometheus-ethtool-exporter/Dockerfile
@@ -0,0 +1,26 @@
+# syntax=docker/dockerfile:1.4
+
+FROM python:3
+
+# Install binary dependencies
+RUN <<EOF
+ apt-get update
+ apt-get install -y --no-install-recommends \
+ ethtool
+ apt-get clean
+ rm -rfv /var/lib/apt/lists/*
+EOF
+
+# Install Python dependencies
+RUN --mount=type=cache,target=/root/.cache <<EOF
+ pip install prometheus-client==0.14.1
+EOF
+
+# Install exporter
+ARG PROJECT_REF
+ADD --chmod=755 \
+ https://raw.githubusercontent.com/Showmax/prometheus-ethtool-exporter/${PROJECT_REF}/ethtool-exporter.py \
+ /usr/local/bin/ethtool-exporter
+
+# Set annotations
+ENTRYPOINT ["/usr/local/bin/ethtool-exporter"]
diff --git a/images/prometheus-ethtool-exporter/ref b/images/prometheus-ethtool-exporter/ref
new file mode 100644
index 0000000..59f3562
--- /dev/null
+++ b/images/prometheus-ethtool-exporter/ref
@@ -0,0 +1 @@
+5f05120a743a71adcbceb9f8ee1d43ecc7c4183a