Skip to content

Deploy Prod

Deploy Prod #40

# Copyright 2024 Flant JSC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Deploy Prod
env:
MODULES_REGISTRY: ${{ vars.PROD_REGISTRY }}
MODULE_SOURCE_NAME: ${{ vars.PROD_MODULE_SOURCE_NAME }}
CI_COMMIT_REF_NAME: ${{ github.ref_name }}
MODULES_MODULE_NAME: ${{ vars.MODULE_NAME }}
RELEASE_CHANNEL: ${{ github.event.inputs.version }}
MODULES_REGISTRY_LOGIN: ${{ vars.PROD_MODULES_REGISTRY_LOGIN }}
MODULES_REGISTRY_PASSWORD: ${{ secrets.PROD_MODULES_REGISTRY_PASSWORD }}
MODULES_MODULE_TAG: ${{ github.event.inputs.tag }}
on:
workflow_dispatch:
inputs:
version:
description: "Select version"
type: choice
default: alpha
options:
- "alpha"
- "beta"
- "early-access"
- "stable"
- "rock-solid"
ce:
type: boolean
description: CE
ee:
type: boolean
description: EE
fe:
type: boolean
description: FE
tag:
description: "Tag of the module, example v1.21.1"
type: string
required: true
enableBuild:
type: boolean
default: true
description: "Set to true if build is required"
jobs:
print-vars:
runs-on: ubuntu-latest
name: Print vars
steps:
- name: PRINT VARS
run: |
echo $MODULES_REGISTRY
echo $MODULE_SOURCE_NAME
echo $CI_COMMIT_REF_NAME
echo $MODULES_MODULE_NAME
echo $RELEASE_CHANNEL
echo $MODULES_MODULE_TAG
shell: bash
job-CE:
name: Edition CE
runs-on: ubuntu-latest
if: github.event.inputs.ce == 'true'
steps:
- run: echo "CE"
- name: SET VAR
run: |
echo "MODULES_MODULE_SOURCE=$MODULES_REGISTRY/$MODULE_SOURCE_NAME/ce/modules" >> "$GITHUB_ENV"
- name: ECHO VAR
run: |
echo $MODULES_MODULE_SOURCE
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Remove unwanted software
if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: ./.github/actions/remove-unwanted-software
- uses: deckhouse/modules-actions/setup@v1
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/build@v1
- uses: deckhouse/modules-actions/deploy@v1
job-EE:
name: Edition EE
runs-on: ubuntu-latest
if: github.event.inputs.ee == 'true'
steps:
- run: echo "EE"
- name: SET VAR
run: |
echo "MODULES_MODULE_SOURCE=$MODULES_REGISTRY/$MODULE_SOURCE_NAME/ee/modules" >> "$GITHUB_ENV"
- name: ECHO VAR
run: |
echo $MODULES_MODULE_SOURCE
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Remove unwanted software
if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: ./.github/actions/remove-unwanted-software
- uses: deckhouse/modules-actions/setup@v1
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/build@v1
- name: Register the module if enableBuild
if: ${{ github.event.inputs.enableBuild == 'true' }}
run: |
echo "✨ Register the module ${MODULES_MODULE_NAME}"
crane append \
--oci-empty-base \
--new_layer "" \
--new_tag "${MODULES_MODULE_SOURCE}:${MODULES_MODULE_NAME}"
shell: bash
- uses: deckhouse/modules-actions/deploy@v1
job-FE:
name: Edition FE
runs-on: ubuntu-latest
if: github.event.inputs.fe == 'true'
steps:
- run: echo "FE"
- name: SET VAR
run: |
echo "MODULES_MODULE_SOURCE=$MODULES_REGISTRY/$MODULE_SOURCE_NAME/fe/modules" >> "$GITHUB_ENV"
- name: ECHO VAR
run: |
echo $MODULES_MODULE_SOURCE
- name: Validation for tag
run: |
echo ${{ github.event.inputs.tag }} | grep -P '^v\d+\.\d+\.\d+'
shell: bash
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Remove unwanted software
if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: ./.github/actions/remove-unwanted-software
- uses: deckhouse/modules-actions/setup@v1
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/build@v1
- uses: deckhouse/modules-actions/deploy@v1