-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathdev_module_build-and-registration.yml
More file actions
126 lines (110 loc) · 4.23 KB
/
dev_module_build-and-registration.yml
File metadata and controls
126 lines (110 loc) · 4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# 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 Dev
env:
MODULES_REGISTRY: ${{ vars.DEV_REGISTRY }}
CI_COMMIT_REF_NAME: ${{ github.event.inputs.tag }}
WERF_EXPERIMENTAL_IMPORT_BY_SOURCE_IMAGE_TAG: "true"
MODULES_MODULE_NAME: ${{ vars.MODULE_NAME }}
MODULES_MODULE_SOURCE: ${{ vars.DEV_MODULE_SOURCE }}
MODULES_REGISTRY_LOGIN: ${{ vars.DEV_MODULES_REGISTRY_LOGIN }}
MODULES_REGISTRY_PASSWORD: ${{ secrets.DEV_MODULES_REGISTRY_PASSWORD }}
RELEASE_CHANNEL: ${{ github.event.inputs.channel }}
MODULES_MODULE_TAG: ${{ github.event.inputs.tag }}
SOURCE_REPO: "${{secrets.SOURCE_REPO}}"
DECKHOUSE_PRIVATE_REPO: "${{secrets.DECKHOUSE_PRIVATE_REPO}}"
GO_VERSION: "1.25.10"
MODULE_EDITION: "EE"
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+.*"
workflow_dispatch:
inputs:
tag:
description: |
Allow input tag vX.Y.Z (release tag) or vX.Y.Z-rc.N (release candidate tag).
Example: v1.0.0 or v1.0.0-rc.1
type: string
required: true
enableBuild:
type: boolean
default: true
description: "Set to true if build is required"
defaults:
run:
shell: bash
concurrency:
group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
cancel-in-progress: true
jobs:
deploy-dev:
runs-on: [self-hosted, large]
name: Deploy dev
steps:
- name: Setup Docker config
run: |
echo "DOCKER_CONFIG=$(mktemp -d)" >> $GITHUB_ENV
- name: PRINT VARS
run: |
echo MODULES_REGISTRY=$MODULES_REGISTRY
echo MODULES_MODULE_SOURCE=$MODULES_MODULE_SOURCE
echo CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME
echo MODULES_MODULE_NAME=$MODULES_MODULE_NAME
echo RELEASE_CHANNEL=$RELEASE_CHANNEL
echo MODULE_EDITION=$MODULE_EDITION
echo DOCKER_CONFIG=$DOCKER_CONFIG
shell: bash
- name: Validation and set MODULES_MODULE_TAG
id: get-tag
run: |
TAG="${{ github.event.inputs.tag }}"
echo "Processing tag: $TAG"
# Check if tag matches vX.Y.Z pattern (release)
if echo "$TAG" | grep -P '^v\d+\.\d+\.\d+$' > /dev/null; then
echo "Release tag detected"
echo "MODULES_MODULE_TAG=${TAG}" >> $GITHUB_OUTPUT
# Check if tag matches vX.Y.Z-rc.N pattern (release candidate)
elif echo "$TAG" | grep -P '^v\d+\.\d+\.\d+-rc\.\d+$' > /dev/null; then
echo "Release candidate tag detected"
echo "MODULES_MODULE_TAG=$TAG" >> $GITHUB_OUTPUT
else
echo "Error: Invalid tag format. Use format vX.Y.Z or vX.Y.Z-rc.N"
exit 1
fi
shell: bash
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get specified tag
run: git fetch --tags
- name: Checkout specified tag
run: git checkout tags/${{ github.event.inputs.tag }}
- uses: deckhouse/modules-actions/setup@v2
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/build@v4
with:
module_source: ${{ vars.DEV_MODULE_SOURCE}}
module_name: ${{ vars.MODULE_NAME }}
module_tag: ${{ steps.get-tag.outputs.MODULES_MODULE_TAG }}
source_repo: ${{secrets.DECKHOUSE_PRIVATE_3P_REPO }}
source_repo_ssh_key: ${{ secrets.SOURCE_REPO_SSH_KEY }}
secondary_repo: "${{ vars.DEV_MODULE_SOURCE }}/${{ vars.MODULE_NAME }}"
- name: Cleanup Docker config
run: |
rm -rf $DOCKER_CONFIG