test: refactor image tests + add keystone
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5522a9d..8d5e9df 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -6,44 +6,45 @@
cancel-in-progress: true
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.3
- 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'
- - run: echo PROJECT_REF=$(cat images/prometheus-ethtool-exporter/ref) >> $GITHUB_ENV
- 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=${{ env.PROJECT_REF }}
- tags: |
- quay.io/vexxhost/ethtool-exporter:${{ env.PROJECT_REF }}
+ # 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'
+ # - run: echo PROJECT_REF=$(cat images/prometheus-ethtool-exporter/ref) >> $GITHUB_ENV
+ # 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=${{ env.PROJECT_REF }}
+ # tags: |
+ # quay.io/vexxhost/ethtool-exporter:${{ env.PROJECT_REF }}
molecule:
runs-on: ubuntu-latest
# needs:
+ # - build-prometheus-ethtool-exporter
# - build-openstack-images
steps:
- uses: actions/checkout@v3.0.2
diff --git a/ci/image_tags_test.go b/ci/image_tags_test.go
index 7478560..75025d6 100644
--- a/ci/image_tags_test.go
+++ b/ci/image_tags_test.go
@@ -1,29 +1,50 @@
package linters
import (
+ "fmt"
"os"
"strings"
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"gopkg.in/yaml.v3"
)
-func TestPrometheusEthtoolExporterTag(t *testing.T) {
- imageFile, err := os.ReadFile("../images/prometheus-ethtool-exporter/ref")
- assert.NoError(t, err)
+func getImageTag(t *testing.T, file string) string {
+ imageFile, err := os.ReadFile(file)
+ require.NoError(t, err)
- imageTag := strings.TrimSpace(string(imageFile))
+ return strings.TrimSpace(string(imageFile))
+}
- data, err := os.ReadFile("../roles/prometheus_ethtool_exporter/defaults/main.yml")
- assert.NoError(t, err)
+func getAnsibleTag(t *testing.T, role string) string {
+ path := fmt.Sprint("../roles/", role, "/defaults/main.yml")
+ data, err := os.ReadFile(path)
+ require.NoError(t, err)
defaults := make(map[interface{}]interface{})
err = yaml.Unmarshal(data, &defaults)
- assert.NoError(t, err)
+ require.NoError(t, err)
- ansibleTag, ok := defaults["prometheus_ethtool_exporter_image_tag"]
- if assert.True(t, ok) {
- assert.Equal(t, imageTag, ansibleTag)
- }
+ key := fmt.Sprint(role, "_image_tag")
+ ansibleTag, ok := defaults[key]
+ require.True(t, ok)
+
+ return ansibleTag.(string)
+}
+
+func assertImageTag(t *testing.T, imageTagFile string, ansibleRole string) {
+ imageTag := getImageTag(t, imageTagFile)
+ ansibleTag := getAnsibleTag(t, ansibleRole)
+
+ assert.Equal(t, imageTag, ansibleTag)
+}
+
+func TestPrometheusEthtoolExporterTag(t *testing.T) {
+ assertImageTag(t, "../images/prometheus-ethtool-exporter/ref", "prometheus_ethtool_exporter")
+}
+
+func TestOpenstackHelmKeystoneTag(t *testing.T) {
+ assertImageTag(t, "../images/openstack/projects/keystone/wallaby/ref", "openstack_helm_keystone")
}