Skip to content

Deploy Prod

Deploy Prod #59

# 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 }}
SOURCE_REPO: "${{secrets.SOURCE_REPO}}"
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 (also build CE ans SEPlus)
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"
echo "MODULE_EDITION=CE" >> "$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
- name: Login to PROD_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.PROD_REGISTRY }}
registry_login: ${{ vars.PROD_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.PROD_MODULES_REGISTRY_PASSWORD }}
- name: Login to DEV_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.DEV_REGISTRY }}
registry_login: ${{ vars.DEV_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.DEV_MODULES_REGISTRY_PASSWORD }}
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/[email protected]
with:
module_source: "$MODULES_MODULE_SOURCE"
module_name: ${{ vars.MODULE_NAME }}
module_tag: ${{ github.ref_name }}
secondary_repo: "${{ vars.DEV_MODULE_SOURCE }}/${{ vars.MODULE_NAME }}"
- 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"
echo "MODULE_EDITION=EE" >> "$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
- name: Login to PROD_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.PROD_REGISTRY }}
registry_login: ${{ vars.PROD_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.PROD_MODULES_REGISTRY_PASSWORD }}
- name: Login to DEV_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.DEV_REGISTRY }}
registry_login: ${{ vars.DEV_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.DEV_MODULES_REGISTRY_PASSWORD }}
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/[email protected]
with:
module_source: "$MODULES_MODULE_SOURCE"
module_name: ${{ vars.MODULE_NAME }}
module_tag: ${{ github.ref_name }}
secondary_repo: "${{ vars.DEV_MODULE_SOURCE }}/${{ vars.MODULE_NAME }}"
- uses: deckhouse/modules-actions/deploy@v1
job-SE-Plus:
name: Edition SE Plus
needs: job-EE
runs-on: ubuntu-latest
steps:
- run: echo "SE Plus"
- name: SET VAR
run: |
echo "MODULES_MODULE_SOURCE=$MODULES_REGISTRY/$MODULE_SOURCE_NAME/se-plus/modules" >> "$GITHUB_ENV"
echo "MODULE_EDITION=EE" >> "$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
- name: Login to PROD_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.PROD_REGISTRY }}
registry_login: ${{ vars.PROD_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.PROD_MODULES_REGISTRY_PASSWORD }}
- name: Login to DEV_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.DEV_REGISTRY }}
registry_login: ${{ vars.DEV_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.DEV_MODULES_REGISTRY_PASSWORD }}
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/[email protected]
with:
module_source: "$MODULES_MODULE_SOURCE"
module_name: ${{ vars.MODULE_NAME }}
module_tag: ${{ github.ref_name }}
secondary_repo: "${{ vars.DEV_MODULE_SOURCE }}/${{ vars.MODULE_NAME }}"
- uses: deckhouse/modules-actions/deploy@v1
job-FE:
name: Edition FE
needs: job-EE
runs-on: ubuntu-latest
steps:
- run: echo "FE"
- name: SET VAR
run: |
echo "MODULES_MODULE_SOURCE=$MODULES_REGISTRY/$MODULE_SOURCE_NAME/fe/modules" >> "$GITHUB_ENV"
echo "MODULE_EDITION=EE" >> "$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
- name: Login to PROD_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.PROD_REGISTRY }}
registry_login: ${{ vars.PROD_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.PROD_MODULES_REGISTRY_PASSWORD }}
- name: Login to DEV_REGISTRY
uses: deckhouse/modules-actions/[email protected]
with:
registry: ${{ vars.DEV_REGISTRY }}
registry_login: ${{ vars.DEV_MODULES_REGISTRY_LOGIN }}
registry_password: ${{ secrets.DEV_MODULES_REGISTRY_PASSWORD }}
- if: ${{ github.event.inputs.enableBuild == 'true' }}
uses: deckhouse/modules-actions/[email protected]
with:
module_source: "$MODULES_MODULE_SOURCE"
module_name: ${{ vars.MODULE_NAME }}
module_tag: ${{ github.ref_name }}
secondary_repo: "${{ vars.DEV_MODULE_SOURCE }}/${{ vars.MODULE_NAME }}"
- uses: deckhouse/modules-actions/deploy@v1