forked from ni/actor-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
121 lines (108 loc) · 4.03 KB
/
development-mode-toggle.yml
File metadata and controls
121 lines (108 loc) · 4.03 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
name: "Toggle Development Mode"
on:
# 1) Called by other workflows
workflow_call:
inputs:
mode:
description: "Enable or disable dev mode (reusable)."
type: string
required: true
default: "enable"
# 2) Triggered manually from the Actions tab
workflow_dispatch:
inputs:
mode:
description: "Enable or disable dev mode (manual)."
required: true
default: "enable"
type: choice
options:
- enable
- disable
jobs:
toggle-dev-mode:
#
# -- FULLY DYNAMIC JOB NAME --
#
# If triggered by 'workflow_dispatch', read `github.event.inputs.mode`.
# Otherwise (workflow_call), read `inputs.mode`.
# Then display "Enable Dev Mode" or "Disable Dev Mode."
#
name: ${{
github.event_name == 'workflow_dispatch' &&
(github.event.inputs.mode == 'enable' && 'Enable Dev Mode' || 'Disable Dev Mode') ||
(inputs.mode == 'enable' && 'Enable Dev Mode' || 'Disable Dev Mode') }}
runs-on: [self-hosted, iconeditor]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log context
shell: pwsh
run: |
Write-Host "Actor: ${{ github.actor }}"
Write-Host "Reference: ${{ github.ref }}"
if ("${{ github.event_name }}" -eq "pull_request") {
Write-Host "Pull Request Number: ${{ github.event.pull_request.number }}"
} else {
Write-Host "Not triggered by a pull request."
}
- name: ${{
github.event_name == 'workflow_dispatch' &&
(github.event.inputs.mode == 'enable' && 'Running Set_Development_Mode.ps1' || 'Running RevertDevelopmentMode.ps1') ||
(inputs.mode == 'enable' && 'Running Set_Development_Mode.ps1' || 'Running RevertDevelopmentMode.ps1') }}
id: toggle_dev_mode
shell: pwsh
working-directory: pipeline/scripts
run: |
if ("${{ github.event_name }}" -eq "workflow_dispatch") {
if ('${{ github.event.inputs.mode }}' -eq 'enable') {
./Set_Development_Mode.ps1 -RelativePath $env:GITHUB_WORKSPACE
} else {
./RevertDevelopmentMode.ps1 -RelativePath $env:GITHUB_WORKSPACE
}
}
else {
if ('${{ inputs.mode }}' -eq 'enable') {
./Set_Development_Mode.ps1 -RelativePath $env:GITHUB_WORKSPACE
} else {
./RevertDevelopmentMode.ps1 -RelativePath $env:GITHUB_WORKSPACE
}
}
#
# -- SET OUTPUT (JSON) IF SUCCESS --
# Using multiline syntax to handle multi-line JSON safely
#
- name: Set environment_details output
if: ${{ success() }}
id: set_output
shell: pwsh
run: |
# Determine final mode for the JSON output
if ('${{ github.event_name }}' -eq 'workflow_dispatch') {
$mode = '${{ github.event.inputs.mode }}'
} else {
$mode = '${{ inputs.mode }}'
}
$actor = '${{ github.actor }}'
$timestamp = (Get-Date -Format o) # ISO8601 UTC
$osInfo = [System.Environment]::OSVersion.VersionString
if ('${{ github.event_name }}' -eq 'pull_request') {
$prNumber = '${{ github.event.pull_request.number }}'
} else {
$prNumber = 'N/A'
}
# Pretty-printed JSON (multi-line)
$jsonObject = [ordered]@{
mode = $mode
timestamp = $timestamp
actor = $actor
pr_number = $prNumber
os = $osInfo
} | ConvertTo-Json
Write-Host "JSON Output: $jsonObject"
# Write multiline output to GITHUB_OUTPUT:
echo "environment_details<<EOF" >> $env:GITHUB_OUTPUT
echo "$jsonObject" >> $env:GITHUB_OUTPUT
echo "EOF" >> $env:GITHUB_OUTPUT
outputs:
environment_details: ${{ steps.set_output.outputs.environment_details }}