Deploy Apps with Specified Workspace #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Apps with Specified Workspace | |
on: | |
workflow_dispatch: | |
inputs: | |
workspace: | |
required: true | |
type: choice | |
description: The specified Workspace to apply | |
options: | |
- default | |
- remote-test | |
project-stack-paths: | |
required: true | |
description: The paths of the Project and Stack in the repository to apply | |
jobs: | |
preview: | |
runs-on: ubuntu-20.04 | |
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.1-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: | |
WORKSPACE_NAME: ${{ github.event.inputs.workspace }} | |
CHANGED_STACKS: ${{ github.event.inputs.project-stack-paths }} | |
OSS_ACCESS_KEY_ID: ${{ secrets.OSS_ACCESS_KEY_ID }} | |
OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} | |
WORKSPACE_FILE_DIR: workspaces | |
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 | |
# switch to the specified workspace | |
kusion workspace switch $WORKSPACE_NAME | |
# 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 Preview Report URL | |
if: ${{ steps.preview.outputs.preview_success == 'true' }} | |
run: | | |
echo "Please check the preview result at: ${{ 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: "liu-hm19" | |
minimum-approvals: 1 | |
issue-title: "[Preview] Deploying ${{ github.event.inputs.project-stack-paths }}" | |
issue-body: "Please check the preview report at: ${{ steps.upload-report.outputs.artifact-url }}" | |
apply: | |
needs: [ preview ] | |
runs-on: ubuntu-20.04 | |
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.1-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 | |
- name: Apply | |
id: apply | |
env: | |
WORKSPACE_NAME: ${{ github.event.inputs.workspace }} | |
CHANGED_STACKS: ${{ github.event.inputs.project-stack-paths }} | |
OSS_ACCESS_KEY_ID: ${{ secrets.OSS_ACCESS_KEY_ID }} | |
OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} | |
WORKSPACE_FILE_DIR: workspaces | |
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 | |
# switch to the specified workspace | |
kusion workspace switch $WORKSPACE_NAME | |
# execute python script for previewing | |
python3 hack/apply_changed_stacks.py | |
- name: Upload Report | |
id: upload-report | |
if: ${{ steps.apply.outputs.apply_success == 'true' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: apply-report | |
path: hack/report/apply-result.zip | |
- name: Echo Apply Report URL | |
if: ${{ steps.apply.outputs.apply_success == 'true' }} | |
run: | | |
echo "Please check the apply result at: ${{ steps.upload-report.outputs.artifact-url }}" |