diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml
new file mode 100644
index 000000000..bcac8b371
--- /dev/null
+++ b/.github/workflows/actionlint.yml
@@ -0,0 +1,22 @@
+name: Lint GitHub action workflows
+on:
+  push:
+    paths:
+      - ".github/workflows/**"
+  pull_request :
+    paths:
+      - ".github/workflows/**"
+
+jobs:
+  lint:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+      - name: Download actionlint
+        id: get_actionlint
+        run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
+        shell: bash
+      - name: Check workflow files
+        run: ${{ steps.get_actionlint.outputs.executable }} -color
+        shell: bash
\ No newline at end of file
diff --git a/.github/workflows/changed-files.yaml b/.github/workflows/changed-files.yaml
index 60d3459a6..b9c83667f 100644
--- a/.github/workflows/changed-files.yaml
+++ b/.github/workflows/changed-files.yaml
@@ -22,6 +22,6 @@ jobs:
     - name: get changed files
       id: changed-files
       run: |
-        echo non-markdown-files=$(git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep -iv .md$ | xargs) >> $GITHUB_OUTPUT
+        echo "non-markdown-files=$(git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep -iv .md$ | xargs)" >> "$GITHUB_OUTPUT"
     - run: |
-        echo "${{ steps.changed-files.outputs.non-markdown-files}}"
+        echo "${{ steps.changed-files.outputs.non-markdown-files}}"
\ No newline at end of file
diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml
index 869e22166..24dc6392c 100644
--- a/.github/workflows/checks.yaml
+++ b/.github/workflows/checks.yaml
@@ -24,7 +24,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: '${{ env.golang-version }}'
@@ -54,7 +54,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: '${{ env.golang-version }}'
@@ -84,7 +84,7 @@ jobs:
     steps:
       - uses: actions/checkout@v4
       - name: Import environment variables from file
-        run: cat ".github/env" >> $GITHUB_ENV
+        run: cat ".github/env" >> "$GITHUB_ENV"
       - uses: actions/setup-go@v5
         with:
           go-version: '${{ env.golang-version }}'
@@ -103,7 +103,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: '${{ env.golang-version }}'
@@ -121,7 +121,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: '${{ env.golang-version }}'
@@ -134,7 +134,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: '${{ env.golang-version }}'
diff --git a/.github/workflows/e2e-feature-gated.yaml b/.github/workflows/e2e-feature-gated.yaml
index f25771a45..da1425dab 100644
--- a/.github/workflows/e2e-feature-gated.yaml
+++ b/.github/workflows/e2e-feature-gated.yaml
@@ -25,8 +25,8 @@ jobs:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
       run: |
-        cat ".github/env" >> $GITHUB_ENV
-        echo E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d) >> $GITHUB_ENV
+        cat ".github/env" >> "$GITHUB_ENV"
+        echo "E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d)" >> "$GITHUB_ENV"
     - name: Install Go
       uses: actions/setup-go@v5
       with:
diff --git a/.github/workflows/e2e-prometheus3.yaml b/.github/workflows/e2e-prometheus3.yaml
index 891df033a..224ff9100 100644
--- a/.github/workflows/e2e-prometheus3.yaml
+++ b/.github/workflows/e2e-prometheus3.yaml
@@ -30,8 +30,8 @@ jobs:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
       run: |
-        cat ".github/env" >> $GITHUB_ENV
-        echo E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d) >> $GITHUB_ENV
+        cat ".github/env" >> "$GITHUB_ENV"
+        echo "E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d)" >> "$GITHUB_ENV"
     - name: Install Go
       uses: actions/setup-go@v5
       with:
@@ -39,7 +39,7 @@ jobs:
         check-latest: true
     - name: Build images
       run: |
-        export SHELL=/bin/bash
+        export SHELL="/bin/bash"
         make build image
     - name: Start kind cluster
       uses: helm/kind-action@v1.10.0
diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml
index 4decd4cc3..bf69ceae0 100644
--- a/.github/workflows/e2e.yaml
+++ b/.github/workflows/e2e.yaml
@@ -39,8 +39,8 @@ jobs:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
       run: |
-        cat ".github/env" >> $GITHUB_ENV
-        echo E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d) >> $GITHUB_ENV
+        cat ".github/env" >> "$GITHUB_ENV"
+        echo "E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d)" >> "$GITHUB_ENV"
     - name: Install Go
       uses: actions/setup-go@v5
       with:
@@ -48,7 +48,7 @@ jobs:
         check-latest: true
     - name: Build images
       run: |
-        export SHELL=/bin/bash
+        export SHELL="/bin/bash"
         make build image
     - name: Start kind cluster
       uses: helm/kind-action@v1.10.0
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index 0593fec80..a0a8c0335 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -24,7 +24,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Import environment variables from file
-        run: cat ".github/env" >> $GITHUB_ENV
+        run: cat ".github/env" >> "$GITHUB_ENV"
       - name: Reclaim disk space
         run: |
           docker image prune --force --all
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 0b08fde18..9a36b9f24 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -12,7 +12,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Import environment variables from file
-        run: cat ".github/env" >> $GITHUB_ENV
+        run: cat ".github/env" >> "$GITHUB_ENV"
       - name: Install Go
         uses: actions/setup-go@v5
         with:
diff --git a/.github/workflows/test-prom-version-upgrade.yaml b/.github/workflows/test-prom-version-upgrade.yaml
index d9e195775..b0fe21f4b 100644
--- a/.github/workflows/test-prom-version-upgrade.yaml
+++ b/.github/workflows/test-prom-version-upgrade.yaml
@@ -18,8 +18,8 @@ jobs:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
       run: |
-        cat ".github/env" >> $GITHUB_ENV
-        echo E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d) >> $GITHUB_ENV
+        cat ".github/env" >> "$GITHUB_ENV"
+        echo "E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d)" >> "$GITHUB_ENV"
     - name: Install Go
       uses: actions/setup-go@v5
       with:
diff --git a/.github/workflows/unit.yaml b/.github/workflows/unit.yaml
index b9c3f08f4..e822ed979 100644
--- a/.github/workflows/unit.yaml
+++ b/.github/workflows/unit.yaml
@@ -23,7 +23,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: '${{ env.golang-version }}'
@@ -37,7 +37,7 @@ jobs:
     steps:
     - uses: actions/checkout@v4
     - name: Import environment variables from file
-      run: cat ".github/env" >> $GITHUB_ENV
+      run: cat ".github/env" >> "$GITHUB_ENV"
     - uses: actions/setup-go@v5
       with:
         go-version: ${{ env.golang-version }}