From 09da01accbec68caf61231a675bdc3ad669c7f94 Mon Sep 17 00:00:00 2001 From: borislavr Date: Tue, 19 May 2026 09:05:56 +0300 Subject: [PATCH 1/3] refactor: update configuration files and workflows for Docker and Helm releases --- config/linters/eslint.config.mjs | 54 +++++++++--------- workflow-templates/docker-release.yaml | 54 ++++++------------ workflow-templates/helm-charts-release.yaml | 62 ++++++++------------- 3 files changed, 67 insertions(+), 103 deletions(-) diff --git a/config/linters/eslint.config.mjs b/config/linters/eslint.config.mjs index 92b8e05..6f75d96 100644 --- a/config/linters/eslint.config.mjs +++ b/config/linters/eslint.config.mjs @@ -1,28 +1,28 @@ -// eslint.config.mjs -import js from "@eslint/js"; -import tseslint from "@typescript-eslint/eslint-plugin"; -import tsParser from "@typescript-eslint/parser"; - -export default [ - { - ignores: [ - "dist/**", - ] - }, - - js.configs.recommended, - - { - files: ["**/*.ts", "**/*.tsx"], - languageOptions: { - parser: tsParser, - }, - plugins: { - "@typescript-eslint": tseslint, - }, - rules: { - "no-undef": "warn", - "n/no-missing-import": "warn", - }, - }, +// eslint.config.mjs +import js from "@eslint/js"; +import tseslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; + +export default [ + { + ignores: [ + "dist/**", + ] + }, + + js.configs.recommended, + + { + files: ["**/*.ts", "**/*.tsx"], + languageOptions: { + parser: tsParser, + }, + plugins: { + "@typescript-eslint": tseslint, + }, + rules: { + "no-undef": "warn", + "n/no-missing-import": "warn", + }, + }, ]; \ No newline at end of file diff --git a/workflow-templates/docker-release.yaml b/workflow-templates/docker-release.yaml index 7301095..863e4c0 100644 --- a/workflow-templates/docker-release.yaml +++ b/workflow-templates/docker-release.yaml @@ -8,6 +8,7 @@ # The workflow requires several configuration files: # - Docker build configuration file: `.qubership/docker-build-config.cfg` # Example: config/examples/docker.cfg +# Full description of configuration file can be found in docs https://github.com/Netcracker/qubership-workflow-hub/tree/main/actions/docker-config-resolver # - GitHub release drafter configuration file: `.github/release-drafter-config.yml` # Example: config/examples/release-drafter-config.yml @@ -27,6 +28,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +env: + CONFIG_FILE: '.qubership/docker-build-config.cfg' + jobs: check-tag: name: "Check if tag exists" @@ -43,49 +47,27 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - load-docker-build-components: - needs: [check-tag] - name: "Load Docker Build Components Configuration" + load-config: runs-on: ubuntu-latest + permissions: + packages: read outputs: - component: ${{ steps.load_component.outputs.components }} - platforms: ${{ steps.load_component.outputs.platforms }} - env: - CONFIG_FILE: .qubership/docker-build-config.cfg + packages: ${{ steps.config.outputs.config }} steps: - - name: "Checkout code" + - name: Checkout repository uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - name: "Load Docker Configuration" - id: load_component - run: | - verify=$(cat "$GITHUB_WORKSPACE/${CONFIG_FILE}" | jq ' - def verify_structure: - .components as $components - | .platforms as $platforms - | ($components | type == "array") - and (all($components[]; has("name") and has("file") and has("context"))) - and ($platforms | type == "string"); - verify_structure - | if . then true else false end - ') - if [ ${verify} == 'true' ]; then - echo "✅ $GITHUB_WORKSPACE/${CONFIG_FILE} file is valid" - components=$(jq -c ".components" "$GITHUB_WORKSPACE/${CONFIG_FILE}") - platforms=$(jq -c ".platforms" "$GITHUB_WORKSPACE/${CONFIG_FILE}") - else - echo "❗ $GITHUB_WORKSPACE/${CONFIG_FILE} file is invalid" - echo "❗ $GITHUB_WORKSPACE/${CONFIG_FILE} file is invalid" >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "components=${components}" >> $GITHUB_OUTPUT - echo "platforms=${platforms}" >> $GITHUB_OUTPUT + - name: Get Configuration File + uses: netcracker/qubership-workflow-hub/actions/docker-config-resolver@e64a1ee2fc2f68ab44a4ef416c27d83ce36ba8e1 #v2.2.1 + id: config + with: + file-path: "${{ env.CONFIG_FILE }}" create-tag: name: "Create Release Tag" - needs: [load-docker-build-components] + needs: [load-config] runs-on: ubuntu-latest permissions: contents: write @@ -102,7 +84,7 @@ jobs: docker-build: name: "${{ matrix.component.name }}" - needs: [load-docker-build-components, create-tag] + needs: [load-config, create-tag] permissions: contents: read packages: write @@ -110,7 +92,7 @@ jobs: strategy: fail-fast: true matrix: - component: ${{ fromJson(needs.load-docker-build-components.outputs.component) }} + component: ${{ fromJson(needs.load-config.outputs.packages) }} steps: - name: "Get version for current component" id: get-version @@ -124,7 +106,7 @@ jobs: download-artifact: false dry-run: false component: ${{ toJson(matrix.component) }} - platforms: ${{ needs.load-docker-build-components.outputs.platforms }} + platforms: ${{ matrix.component.platforms }} env: GITHUB_TOKEN: ${{ github.token }} diff --git a/workflow-templates/helm-charts-release.yaml b/workflow-templates/helm-charts-release.yaml index 8627fa0..2c6af91 100644 --- a/workflow-templates/helm-charts-release.yaml +++ b/workflow-templates/helm-charts-release.yaml @@ -12,6 +12,7 @@ # Example: config/examples/helm-charts-release-config.yaml # - Docker build configuration file: `.qubership/docker-build-config.cfg` # Example: config/examples/docker.cfg +# Full description of configuration file can be found in docs https://github.com/Netcracker/qubership-workflow-hub/tree/main/actions/docker-config-resolver # - Assets configuration file: `.qubership/assets-config.yml` # Example: config/examples/assets-config.yml # - GitHub release drafter configuration file: `.github/release-drafter-config.yml` @@ -34,6 +35,11 @@ run-name: ${{ github.repository }} Release ${{ github.event.inputs.release }} concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true + +env: + CHART_RELEASE_CONFIG_FILE: '.qubership/helm-charts-release-config.yaml' + DOCKER_CONFIG_FILE: '.qubership/docker-build-config.cfg' + jobs: check-tag: runs-on: ubuntu-latest @@ -48,43 +54,24 @@ jobs: check-tag: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + load-docker-build-components: runs-on: ubuntu-latest + permissions: + packages: read outputs: - component: ${{ steps.load_component.outputs.components }} - platforms: ${{ steps.load_component.outputs.platforms }} - env: - CONFIG_FILE: .qubership/docker-build-config.cfg + packages: ${{ steps.config.outputs.config }} steps: - - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - name: Checkout repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - name: Load Docker Configuration - id: load_component - run: | - verify=$(cat "$GITHUB_WORKSPACE/${CONFIG_FILE}" | jq ' - def verify_structure: - .components as $components - | .platforms as $platforms - | ($components | type == "array") - and (all($components[]; has("name") and has("file") and has("context"))) - and ($platforms | type == "string"); - verify_structure - | if . then true else false end - ') - if [ ${verify} == 'true' ]; then - echo "✅ $GITHUB_WORKSPACE/${CONFIG_FILE} file is valid" - components=$(jq -c ".components" "$GITHUB_WORKSPACE/${CONFIG_FILE}") - platforms=$(jq -c ".platforms" "$GITHUB_WORKSPACE/${CONFIG_FILE}") - else - echo "❗ $GITHUB_WORKSPACE/${CONFIG_FILE} file is invalid" - echo "❗ $GITHUB_WORKSPACE/${CONFIG_FILE} file is invalid" >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "components=${components}" >> $GITHUB_OUTPUT - echo "platforms=${platforms}" >> $GITHUB_OUTPUT + - name: Get Configuration File + uses: netcracker/qubership-workflow-hub/actions/docker-config-resolver@e64a1ee2fc2f68ab44a4ef416c27d83ce36ba8e1 #v2.2.1 + id: config + with: + file-path: "${{ env.DOCKER_CONFIG_FILE }}" docker-check-build: needs: [load-docker-build-components, check-tag] @@ -93,12 +80,8 @@ jobs: strategy: fail-fast: true matrix: - component: ${{ fromJson(needs.load-docker-build-components.outputs.component) }} + component: ${{ fromJson(needs.load-docker-build-components.outputs.packages) }} steps: - - name: Get version for current component - id: get-version - run: | - echo "IMAGE=${{ matrix.component.name }}" >> $GITHUB_ENV - name: Docker build uses: netcracker/qubership-workflow-hub/actions/docker-action@5a557213e92e3d22d0292330c4817c82af6704d2 #v2.1.2 with: @@ -106,8 +89,7 @@ jobs: download-artifact: false dry-run: true component: ${{ toJson(matrix.component) }} - platforms: ${{ needs.load-docker-build-components.outputs.platforms }} - tags: "${{ env.IMAGE_VERSION }}" + platforms: ${{ matrix.component.platforms }} env: GITHUB_TOKEN: ${{ github.token }} @@ -138,7 +120,7 @@ jobs: uses: netcracker/qubership-workflow-hub/actions/charts-values-update-action@5a557213e92e3d22d0292330c4817c82af6704d2 #v2.1.2 with: release-version: ${{ inputs.release }} - config-file: .qubership/helm-charts-release-config.yaml + config-file: ${{ env.CHART_RELEASE_CONFIG_FILE }} default-tag: ${{ inputs.release }} package-charts: true publish-charts: true @@ -160,7 +142,7 @@ jobs: strategy: fail-fast: true matrix: - component: ${{ fromJson(needs.load-docker-build-components.outputs.component) }} + component: ${{ fromJson(needs.load-docker-build-components.outputs.packages) }} steps: - name: Get version for current component id: get-version @@ -176,7 +158,7 @@ jobs: download-artifact: false dry-run: false component: ${{ toJson(matrix.component) }} - platforms: ${{ needs.load-docker-build-components.outputs.platforms }} + platforms: ${{ matrix.component.platforms }} tags: "${{ env.IMAGE_VERSION }},latest" env: GITHUB_TOKEN: ${{ github.token }} From 225f731c2d167bf6e5920ca2a774f254047ac0c3 Mon Sep 17 00:00:00 2001 From: borislavr Date: Tue, 19 May 2026 09:10:52 +0300 Subject: [PATCH 2/3] chore: add newline at end of eslint.config.mjs --- config/linters/eslint.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/linters/eslint.config.mjs b/config/linters/eslint.config.mjs index 6f75d96..b3ae099 100644 --- a/config/linters/eslint.config.mjs +++ b/config/linters/eslint.config.mjs @@ -25,4 +25,4 @@ export default [ "n/no-missing-import": "warn", }, }, -]; \ No newline at end of file +]; From 9957a20981bf78e53de6d304791be720760c4cbe Mon Sep 17 00:00:00 2001 From: borislavr Date: Tue, 19 May 2026 09:27:31 +0300 Subject: [PATCH 3/3] chore: update Docker configuration file path in release workflow --- workflow-templates/docker-release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflow-templates/docker-release.yaml b/workflow-templates/docker-release.yaml index ad5b898..0aabb6b 100644 --- a/workflow-templates/docker-release.yaml +++ b/workflow-templates/docker-release.yaml @@ -29,7 +29,7 @@ concurrency: cancel-in-progress: true env: - CONFIG_FILE: '.qubership/docker-build-config.cfg' + CONFIG_FILE: '.qubership/docker.cfg' jobs: check-tag: @@ -65,7 +65,7 @@ jobs: id: resolve uses: netcracker/qubership-workflow-hub/actions/docker-config-resolver@e64a1ee2fc2f68ab44a4ef416c27d83ce36ba8e1 # v2.2.1 with: - file-path: .qubership/docker.cfg + file-path: ${{ env.CONFIG_FILE }} create-tag: name: "Create Release Tag"