-
Notifications
You must be signed in to change notification settings - Fork 32
109 lines (91 loc) · 3.74 KB
/
preview.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
name: Preview
on:
pull_request:
branches:
- "main"
jobs:
get-changed-project-stack:
runs-on: ubuntu-20.04
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install Pytest Html
run: python3 -m pip install pytest-html pyyaml -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
- name: Git Diff
id: git-diff
uses: technote-space/get-diff-action@v6
- name: Get Changed Projects and Stacks
id: get-changed-projects-and-stacks
env:
CHANGED_PATHS: ${{ steps.git-diff.outputs.diff }}
run: |
export CHANGED_PATHS="${{ steps.git-diff.outputs.diff }}"
python3 hack/get_changed_projects_and_stacks.py
- name: Print Changed Projects and Stacks
run: |
echo "Changed projects: ${{ steps.get-changed-projects-and-stacks.outputs.changed_projects }}"
echo "Changed stacks: ${{ steps.get-changed-projects-and-stacks.outputs.changed_stacks }}"
outputs:
changed_projects: ${{ steps.get-changed-projects-and-stacks.outputs.changed_projects }}
changed_stacks: ${{ steps.get-changed-projects-and-stacks.outputs.changed_stacks }}
preview:
needs: [ get-changed-project-stack ]
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Kusion
run: curl https://www.kusionstack.io/scripts/install.sh | sh -s 0.12.0-rc.2
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install Pytest Html
run: python3 -m pip install pytest-html pyyaml -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
- name: Setup K3d&K3s
uses: nolar/setup-k3d-k3s@v1
with:
version: v1.25.15+k3s1
- name: Preview
id: preview
env:
CHANGED_STACKS: ${{ needs.get-changed-project-stack.outputs.changed_stacks }}
OSS_ACCESS_KEY_ID: '${{ secrets.OSS_ACCESS_KEY_ID }}'
OSS_ACCESS_KEY_SECRET: '${{ secrets.OSS_ACCESS_KEY_SECRET }}'
WORKSPACE_FILE_DIR: workspaces
AWS_REGION: us-east-1
run: |
# manually source kusion env file
source "$HOME/.kusion/.env"
# setup remote backend for kusion cli
kusion config set backends.oss_test '{"type":"oss","configs":{"bucket":"kusion-test","endpoint":"oss-cn-shanghai.aliyuncs.com"}}'
kusion config set backends.current oss_test
# execute python script for previewing
python3 hack/preview_changed_stacks.py
- name: Upload report
id: upload-report
if: ${{ steps.preview.outputs.preview_success == 'true' }}
uses: actions/upload-artifact@v4
with:
name: preview-report
path: hack/report/preview-result.zip
- name: Echo URL
if: ${{ steps.preview.outputs.preview_success == 'true' }}
run: echo "${{ steps.upload-report.outputs.artifact-url }}"
- name: Approve preview
if: ${{ steps.preview.outputs.preview_success == 'true' }}
uses: trstringer/manual-approval@v1
with:
secret: ${{ secrets.PACKAGE_TOKEN }}
approvers: ${{ github.event.pull_request.user.login }}
minimum-approvals: 1
issue-title: "Deploying ${{ needs.get-changed-project-stack.outputs.changed_stacks }}"
issue-body: "Please check the preview report at: ${{ steps.upload-report.outputs.artifact-url }}"