Add gmc build, scan and deploy workflow (#611)
Signed-off-by: Yingchun Guo <yingchun.guo@intel.com>
This commit is contained in:
147
.github/workflows/_gmc-workflow.yml
vendored
Normal file
147
.github/workflows/_gmc-workflow.yml
vendored
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
# Copyright (C) 2024 Intel Corporation
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
name: Build and deploy GMC system on call and manual
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
default: "latest"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: "Tag to apply to images"
|
||||||
|
node:
|
||||||
|
default: "xeon"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: "Hardware to run test"
|
||||||
|
deploy:
|
||||||
|
default: true
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
description: 'Whether to deploy gmc'
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
default: "latest"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: "Tag to apply to images"
|
||||||
|
node:
|
||||||
|
default: "xeon"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: "Hardware to run test"
|
||||||
|
deploy:
|
||||||
|
default: true
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
description: 'Whether to deploy gmc'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
####################################################################################################
|
||||||
|
# Image Build and Scan
|
||||||
|
####################################################################################################
|
||||||
|
image-build:
|
||||||
|
runs-on: "docker-build-${{ inputs.node }}"
|
||||||
|
steps:
|
||||||
|
- name: Checkout GenAIInfra repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: opea-project/GenAIInfra
|
||||||
|
ref: ${{ inputs.tag }}
|
||||||
|
path: GenAIInfra
|
||||||
|
|
||||||
|
- name: Set variables
|
||||||
|
id: set_variables
|
||||||
|
run: |
|
||||||
|
echo "DOCKER_REGISTRY=${OPEA_IMAGE_REPO}opea" >> $GITHUB_ENV
|
||||||
|
echo "IMAGE_REPO=${OPEA_IMAGE_REPO}" >> $GITHUB_OUTPUT
|
||||||
|
echo "VERSION=${{ inputs.tag }}" >> $GITHUB_ENV
|
||||||
|
echo "VERSION=${{ inputs.tag }}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Build image and push
|
||||||
|
run: |
|
||||||
|
cd ${{github.workspace}}/GenAIInfra/microservices-connector
|
||||||
|
make docker.build
|
||||||
|
make docker.push
|
||||||
|
|
||||||
|
- name: Scan gmcmanager
|
||||||
|
if: ${{ inputs.node == 'gaudi' }}
|
||||||
|
uses: opea-project/validation/actions/trivy-scan@main
|
||||||
|
with:
|
||||||
|
image-ref: ${{ env.DOCKER_REGISTRY }}/gmcmanager:${{ env.VERSION }}
|
||||||
|
output: gmcmanager-scan.txt
|
||||||
|
|
||||||
|
- name: Upload gmcmanager scan result
|
||||||
|
if: ${{ inputs.node == 'gaudi' }}
|
||||||
|
uses: actions/upload-artifact@v4.3.4
|
||||||
|
with:
|
||||||
|
name: gmcmanager-scan
|
||||||
|
path: gmcmanager-scan.txt
|
||||||
|
overwrite: true
|
||||||
|
|
||||||
|
- name: Scan gmcrouter
|
||||||
|
if: ${{ inputs.node == 'gaudi' }}
|
||||||
|
uses: opea-project/validation/actions/trivy-scan@main
|
||||||
|
with:
|
||||||
|
image-ref: ${{ env.DOCKER_REGISTRY }}/gmcrouter:${{ env.VERSION }}
|
||||||
|
output: gmcrouter-scan.txt
|
||||||
|
|
||||||
|
- name: Upload gmcrouter scan result
|
||||||
|
if: ${{ inputs.node == 'gaudi' }}
|
||||||
|
uses: actions/upload-artifact@v4.3.4
|
||||||
|
with:
|
||||||
|
name: gmcrouter-scan
|
||||||
|
path: gmcrouter-scan.txt
|
||||||
|
overwrite: true
|
||||||
|
|
||||||
|
- name: Clean up images
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
docker rmi ${{ env.DOCKER_REGISTRY }}/gmcrouter:${{ env.VERSION }}
|
||||||
|
docker rmi ${{ env.DOCKER_REGISTRY }}/gmcmanager:${{ env.VERSION }}
|
||||||
|
|
||||||
|
- name: Clean up GenAIInfra source codes
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
rm -rf ${{github.workspace}}/GenAIInfra
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# GMC Install
|
||||||
|
####################################################################################################
|
||||||
|
gmc-install:
|
||||||
|
needs: image-build
|
||||||
|
if: ${{ fromJSON(inputs.deploy) }}
|
||||||
|
runs-on: "k8s-${{ inputs.node }}"
|
||||||
|
steps:
|
||||||
|
- name: Checkout GenAIInfra repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: opea-project/GenAIInfra
|
||||||
|
ref: ${{ inputs.tag }}
|
||||||
|
path: GenAIInfra
|
||||||
|
|
||||||
|
- name: Set variables
|
||||||
|
run: |
|
||||||
|
echo "SYSTEM_NAMESPACE=opea-system" >> $GITHUB_ENV
|
||||||
|
echo "VERSION=${{ inputs.tag }}" >> $GITHUB_ENV
|
||||||
|
echo "SET_VERSION=true" >> $GITHUB_ENV # to change the tag of microservice images
|
||||||
|
|
||||||
|
- name: Cleanup existing GMC
|
||||||
|
run: |
|
||||||
|
cd GenAIInfra
|
||||||
|
.github/workflows/scripts/e2e/gmc_install.sh cleanup_gmc
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Install GMC
|
||||||
|
run: |
|
||||||
|
cd GenAIInfra
|
||||||
|
.github/workflows/scripts/e2e/gmc_install.sh install_gmc
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Clean up GenAIInfra source codes
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
rm -rf ${{github.workspace}}/GenAIInfra
|
||||||
17
.github/workflows/manual-example-workflow.yml
vendored
17
.github/workflows/manual-example-workflow.yml
vendored
@@ -20,6 +20,11 @@ on:
|
|||||||
description: "Tag to apply to images"
|
description: "Tag to apply to images"
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
deploy_gmc:
|
||||||
|
default: false
|
||||||
|
description: 'Whether to deploy gmc'
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
build:
|
build:
|
||||||
default: true
|
default: true
|
||||||
description: 'Build test required images for Examples'
|
description: 'Build test required images for Examples'
|
||||||
@@ -64,6 +69,18 @@ jobs:
|
|||||||
nodes_json=$(printf '%s\n' "${nodes[@]}" | sort -u | jq -R '.' | jq -sc '.')
|
nodes_json=$(printf '%s\n' "${nodes[@]}" | sort -u | jq -R '.' | jq -sc '.')
|
||||||
echo "nodes=$nodes_json" >> $GITHUB_OUTPUT
|
echo "nodes=$nodes_json" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
build-deploy-gmc:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node: ${{ fromJson(needs.get-test-matrix.outputs.nodes) }}
|
||||||
|
fail-fast: false
|
||||||
|
uses: ./.github/workflows/_gmc-workflow.yml
|
||||||
|
with:
|
||||||
|
node: ${{ matrix.node }}
|
||||||
|
tag: ${{ inputs.tag }}
|
||||||
|
deploy: ${{ fromJSON(inputs.deploy_gmc) }}
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
run-examples:
|
run-examples:
|
||||||
needs: [get-test-matrix]
|
needs: [get-test-matrix]
|
||||||
strategy:
|
strategy:
|
||||||
|
|||||||
Reference in New Issue
Block a user