Skip to content

Commit

Permalink
feat: update application deployment workflow (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
liu-hm19 authored Aug 2, 2024
1 parent 5700240 commit 4b90651
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 97 deletions.
238 changes: 142 additions & 96 deletions .github/workflows/apply.yml
Original file line number Diff line number Diff line change
@@ -1,96 +1,142 @@
# name: Apply
# on:
# push:
# branches:
# - "main"

# jobs:
# get-changed-project-stack:
# runs-on: ubuntu-latest
# 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 }}

# apply:
# 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.1

# - 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:
# 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
# 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 applying
# 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 URL
# if: ${{ steps.apply.outputs.apply_success == 'true' }}
# run: |
# echo "Please check the apply result at: ${{ steps.upload-report.outputs.artifact-url }}"
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 }}"
4 changes: 3 additions & 1 deletion .github/workflows/preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:

jobs:
get-changed-project-stack:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- name: Checkout Code
uses: actions/checkout@v4
Expand Down Expand Up @@ -64,6 +64,8 @@ jobs:

- name: Setup K3d&K3s
uses: nolar/setup-k3d-k3s@v1
with:
version: v1.25.15+k3s1

- name: Preview
id: preview
Expand Down

0 comments on commit 4b90651

Please sign in to comment.