-
Notifications
You must be signed in to change notification settings - Fork 4
137 lines (129 loc) · 4.71 KB
/
deploy.yml
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
127
128
129
130
131
132
133
134
135
136
137
---
name: Deploy Action
on:
workflow_call:
inputs:
branch:
required: true
type: string
user_name:
required: false
default: hpi-schul-clud-bot
type: string
user_email:
required: false
default: [email protected]
type: string
secrets:
token:
required: true
DEV_VAULT:
required: true
DEV_KUBE_CONFIG:
required: true
TOKEN_INVENTORY:
required: true
env:
tennens: "brb default nbc"
jobs:
create_artifacts_repos:
runs-on: ubuntu-latest
strategy:
matrix:
repos:
- schulcloud-server
- schulcloud-client
- nuxt-client
- superhero-dashboard
- schulcloud-calendar
- antivirus_check_service
- version-aggregator
- schulcloud-synapse-synchronization
- dof_app_deploy
steps:
- run: |
echo "git_ref_name=${{ inputs.branch }}" >> $GITHUB_ENV
echo git_ref_name ${{ inputs.branch }}
- uses: actions/checkout@v3
with:
repository: hpi-schul-cloud/${{ matrix.repos }}
token: ${{ secrets.token }}
path: ${{ matrix.repos }}
fetch-depth: 0
- working-directory: ${{github.workspace }}/${{ matrix.repos }}
shell: bash
run: |
git checkout ${{ env.git_ref_name }} || true
commit_id=$(git rev-parse HEAD)
mkdir -pv ansible/group_vars/all
ansible_varname=$(echo ${{ matrix.repos }} | tr [a-z] [A-Z] | tr - _ | tr \. _ | tr [:blank:] _ )
filename=$(echo ${ansible_varname} | tr [A-Z] [a-z] )
for i in ${{ env.tennens }}; do
mkdir -pv ansible/host_vars/${i}_host
echo "${ansible_varname}_IMAGE_TAG: $commit_id" >> ansible/host_vars/${i}_host/$filename.yml
done
- run: tar -cf ${{ matrix.repos }}.tar ansible
working-directory: ${{github.workspace }}/${{ matrix.repos }}
- uses: actions/upload-artifact@v3
with:
name: ${{ matrix.repos }}
path: ${{github.workspace }}/${{ matrix.repos }}/${{ matrix.repos }}.tar
create_artifacts_workspaces:
runs-on: ubuntu-latest
strategy:
matrix:
tennens: [ brb, default, nbc ]
steps:
- shell: bash
id: make_identifier
run: |
mkdir -pv ansible/host_vars/${{ matrix.tennens }}_host
git_ref_name=${{ inputs.branch }}
echo "git_ref_name=${{ inputs.branch }}" >> $GITHUB_ENV
temp=$(echo $git_ref_name | sed 's@.*/@@' | tr [A-Z] [a-z] | tr _ - | tr \. -)
echo "before" $git_ref_name "after" $temp
echo "id=$temp" >> $GITHUB_OUTPUT
- shell: bash
working-directory: ${{github.workspace }}/ansible/host_vars/${{ matrix.tennens }}_host
run: |
#declare test='${{ steps.make_identifier.outputs.id }}'
echo "NAMESPACE: ${{ matrix.tennens }}-${{ steps.make_identifier.outputs.id }}" > cfg_host.yml
echo "DOMAIN: ${{ matrix.tennens }}-${{ steps.make_identifier.outputs.id }}.cd.dbildungscloud.dev" >> cfg_host.yml
- run: tar -cf ${{ matrix.tennens }}.tar ansible
- uses: actions/upload-artifact@v3
with:
name: ${{ matrix.tennens }}
path: ${{github.workspace }}/${{ matrix.tennens }}.tar
deploy:
needs:
- create_artifacts_repos
- create_artifacts_workspaces
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
- run: mv */*.tar ./
- run: find -name "*.tar" -exec tar -xf {} \;
- run: tar -cf ansible.tar ansible
- uses: actions/upload-artifact@v3
with:
name: ansible
path: ${{github.workspace }}/ansible.tar
- shell: bash
run: |
python3 -m pip install kubernetes
- name: 1Password
working-directory: ${{github.workspace }}/ansible/group_vars
run: |
echo "VAULT: ${{ secrets.DEV_VAULT }}" >> develop/dof_deploy.yml
echo "ONEPASSWORD_OPERATOR_VAULT: ${{ secrets.DEV_VAULT }}" >> develop/dof_deploy.yml
echo "TLS_ENABELD: \"true\"" >> develop/dof_deploy.yml
- run: ansible-galaxy install -r ansible/collections/requirements.yml
- working-directory: ${{github.workspace }}/ansible/roles/sys
run: |
mkdir files
echo "${{ secrets.DEV_KUBE_CONFIG }}" > files/config
- run: ansible-playbook ./playbook.yml --inventory-file hosts -e 'ansible_python_interpreter=/usr/bin/python3'
working-directory: ${{github.workspace }}/ansible
- working-directory: ${{github.workspace }}/ansible/roles/sys/files
run: |
rm -rf /config