Compare commits

..

1 Commits

Author SHA1 Message Date
GitHub Action 97a78b4bf0 build 2024-12-09 22:15:39 +00:00
27 changed files with 969 additions and 1375 deletions
+4 -4
View File
@@ -16,7 +16,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7
with: with:
# We must fetch at least the immediate parents so that if this is # We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head. # a pull request then we can checkout the head.
@@ -24,7 +24,7 @@ jobs:
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 #v3.28.15 uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd #v3.27.0
# Override language selection by uncommenting this and choosing your languages # Override language selection by uncommenting this and choosing your languages
# with: # with:
# languages: go, javascript, csharp, python, cpp, java # languages: go, javascript, csharp, python, cpp, java
@@ -32,7 +32,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@45775bd8235c68ba998cffa5171334d58593da47 #v3.28.15 uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd #v3.27.0
# ️ Command-line programs to run using the OS shell. # ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl # 📚 https://git.io/JvXDl
@@ -46,4 +46,4 @@ jobs:
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 #v3.28.15 uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd #v3.27.0
+2 -2
View File
@@ -13,7 +13,7 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job # Steps represent a sequence of tasks that will be executed as part of the job
steps: steps:
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 - uses: actions/stale@v9
name: Setting issue as idle name: Setting issue as idle
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -24,7 +24,7 @@ jobs:
operations-per-run: 100 operations-per-run: 100
exempt-issue-labels: 'backlog' exempt-issue-labels: 'backlog'
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 - uses: actions/stale@v9
name: Setting PR as idle name: Setting PR as idle
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@v4
- name: install deps - name: install deps
run: npm install run: npm install
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,22 +31,22 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.24.0
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,22 +31,22 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.31.2
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,22 +31,22 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.31.2
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,24 +31,23 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.24.0
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
- name: Install linkerd and add controlplane to cluster - name: Install linkerd and add controlplane to cluster
run: | run: |
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
export PATH=$PATH:/home/runner/.linkerd2/bin
curl -sL https://linkerd.github.io/linkerd-smi/install | sh curl -sL https://linkerd.github.io/linkerd-smi/install | sh
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml export PATH=$PATH:/home/runner/.linkerd2/bin
linkerd install --crds | kubectl apply -f - linkerd install --crds | kubectl apply -f -
linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f - linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f -
@@ -57,7 +56,7 @@ jobs:
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,22 +31,22 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.24.0
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,21 +31,23 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.24.0
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh
export PATH=$PATH:/home/runner/.linkerd2/bin - name: Install linkerd and add controlplane to cluster
run: |
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
curl -sL https://linkerd.github.io/linkerd-smi/install | sh curl -sL https://linkerd.github.io/linkerd-smi/install | sh
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml export PATH=$PATH:/home/runner/.linkerd2/bin
linkerd install --crds | kubectl apply -f - linkerd install --crds | kubectl apply -f -
linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f - linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f -
@@ -54,7 +56,7 @@ jobs:
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -11,7 +11,7 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
@@ -19,7 +19,7 @@ jobs:
contents: read contents: read
id-token: write id-token: write
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -30,13 +30,13 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- name: Azure login - name: Azure login
uses: azure/login@v2.3.0 uses: azure/login@v2.2.0
with: with:
client-id: ${{ secrets.AZURE_CLIENT_ID }} client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- name: Create private AKS cluster and set context - name: Create private AKS cluster and set context
@@ -51,7 +51,7 @@ jobs:
run: | run: |
az aks command invoke --resource-group ${{ env.NAMESPACE }} --name ${{ env.NAMESPACE }} --command "kubectl create ns ${{ env.NAMESPACE }}" az aks command invoke --resource-group ${{ env.NAMESPACE }} --name ${{ env.NAMESPACE }} --command "kubectl create ns ${{ env.NAMESPACE }}"
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
@@ -13,12 +13,12 @@ on:
jobs: jobs:
run-integration-test: run-integration-test:
name: Run Minikube Integration Tests name: Run Minikube Integration Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-latest
env: env:
KUBECONFIG: /home/runner/.kube/config KUBECONFIG: /home/runner/.kube/config
NAMESPACE: test-${{ github.run_id }} NAMESPACE: test-${{ github.run_id }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -31,22 +31,22 @@ jobs:
- name: Build - name: Build
run: ncc build src/run.ts -o lib run: ncc build src/run.ts -o lib
- uses: Azure/setup-kubectl@3e0aec4d80787158d308d7b364cb1b702e7feb7f # v4.0.0 - uses: Azure/setup-kubectl@v4
name: Install Kubectl name: Install Kubectl
- id: setup-minikube - id: setup-minikube
name: Setup Minikube name: Setup Minikube
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19 uses: medyagh/setup-minikube@latest
with: with:
minikube-version: 1.34.0 minikube-version: 1.24.0
kubernetes-version: 1.31.0 kubernetes-version: 1.22.3
driver: 'none' driver: 'none'
timeout-minutes: 3 timeout-minutes: 3
- name: Create namespace to run tests - name: Create namespace to run tests
run: kubectl create ns ${{ env.NAMESPACE }} run: kubectl create ns ${{ env.NAMESPACE }}
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # 5.5.0 - uses: actions/setup-python@v5
name: Install Python name: Install Python
with: with:
python-version: '3.x' python-version: '3.x'
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
name: Run Unit Tests name: Run Unit Tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@v4
- run: | - run: |
npm install npm install
npm test npm test
-12
View File
@@ -1,17 +1,5 @@
# Changelog # Changelog
## [5.0.3] - 2025-04-16
### Added
- #398 case-insensitive resource type
## [5.0.2] - 2025-04-15
### Added
- #396 Update new resource-type input for action
## [5.0.1] - 2024-03-12 ## [5.0.1] - 2024-03-12
### Added ### Added
-4
View File
@@ -80,10 +80,6 @@ inputs:
skip-tls-verify: skip-tls-verify:
description: True if the insecure-skip-tls-verify option should be used. Input should be 'true' or 'false'. description: True if the insecure-skip-tls-verify option should be used. Input should be 'true' or 'false'.
default: false default: false
resource-type:
description: Either Microsoft.ContainerService/managedClusters or Microsoft.ContainerService/fleets'.
required: false
default: 'Microsoft.ContainerService/managedClusters'
branding: branding:
color: 'green' color: 'green'
+234 -583
View File
File diff suppressed because it is too large Load Diff
+488 -481
View File
File diff suppressed because it is too large Load Diff
+9 -9
View File
@@ -15,11 +15,11 @@
"@actions/core": "^1.11.1", "@actions/core": "^1.11.1",
"@actions/exec": "^1.0.0", "@actions/exec": "^1.0.0",
"@actions/io": "^1.1.3", "@actions/io": "^1.1.3",
"@actions/tool-cache": "2.0.2", "@actions/tool-cache": "2.0.1",
"@babel/preset-env": "^7.26.9", "@babel/preset-env": "^7.26.0",
"@babel/preset-typescript": "^7.27.0", "@babel/preset-typescript": "^7.26.0",
"@octokit/core": "^6.1.4", "@octokit/core": "^6.1.2",
"@octokit/plugin-retry": "^7.2.0", "@octokit/plugin-retry": "^7.1.2",
"@types/minipass": "^3.3.5", "@types/minipass": "^3.3.5",
"js-yaml": "4.1.0", "js-yaml": "4.1.0",
"minimist": "^1.2.8" "minimist": "^1.2.8"
@@ -28,11 +28,11 @@
"@types/jest": "^29.5.14", "@types/jest": "^29.5.14",
"@types/js-yaml": "^4.0.9", "@types/js-yaml": "^4.0.9",
"@types/minimist": "^1.2.5", "@types/minimist": "^1.2.5",
"@types/node": "^22.14.0", "@types/node": "^22.8.7",
"@vercel/ncc": "^0.38.3", "@vercel/ncc": "^0.38.3",
"jest": "^29.7.0", "jest": "^29.7.0",
"prettier": "^3.5.3", "prettier": "^3.3.3",
"ts-jest": "^29.3.1", "ts-jest": "^29.2.5",
"typescript": "5.8.3" "typescript": "5.6.3"
} }
} }
+17 -4
View File
@@ -13,15 +13,17 @@ import {
} from '../strategyHelpers/deploymentHelper' } from '../strategyHelpers/deploymentHelper'
import {DeploymentStrategy} from '../types/deploymentStrategy' import {DeploymentStrategy} from '../types/deploymentStrategy'
import {parseTrafficSplitMethod} from '../types/trafficSplitMethod' import {parseTrafficSplitMethod} from '../types/trafficSplitMethod'
import {ClusterType} from '../inputUtils'
export const ResourceTypeManagedCluster = export const ResourceTypeManagedCluster =
'Microsoft.ContainerService/managedClusters' 'Microsoft.ContainerService/managedClusters'
export const ResourceTypeFleet = 'Microsoft.ContainerService/fleets' export const ResourceTypeFleet = 'Microsoft.ContainerService/fleets'
export type ClusterType =
| typeof ResourceTypeManagedCluster
| typeof ResourceTypeFleet
export async function deploy( export async function deploy(
kubectl: Kubectl, kubectl: Kubectl,
manifestFilePaths: string[], manifestFilePaths: string[],
deploymentStrategy: DeploymentStrategy, deploymentStrategy: DeploymentStrategy
resourceType: ClusterType
) { ) {
// update manifests // update manifests
const inputManifestFiles: string[] = updateManifestFiles(manifestFilePaths) const inputManifestFiles: string[] = updateManifestFiles(manifestFilePaths)
@@ -43,6 +45,8 @@ export async function deploy(
// check manifest stability // check manifest stability
core.startGroup('Checking manifest stability') core.startGroup('Checking manifest stability')
const resourceTypeInput =
core.getInput('resource-type') || ResourceTypeManagedCluster
const resourceTypes: Resource[] = getResources( const resourceTypes: Resource[] = getResources(
deployedManifestFiles, deployedManifestFiles,
models.DEPLOYMENT_TYPES.concat([ models.DEPLOYMENT_TYPES.concat([
@@ -50,7 +54,16 @@ export async function deploy(
]) ])
) )
await checkManifestStability(kubectl, resourceTypes, resourceType) if (
resourceTypeInput !== ResourceTypeManagedCluster &&
resourceTypeInput !== ResourceTypeFleet
) {
let errMsg = `Invalid resource type: ${resourceTypeInput}. Supported resource types are: ${ResourceTypeManagedCluster} (default), ${ResourceTypeFleet}`
core.setFailed(errMsg)
throw new Error(errMsg)
}
await checkManifestStability(kubectl, resourceTypes, resourceTypeInput)
core.endGroup() core.endGroup()
// print ingresses // print ingresses
+14 -9
View File
@@ -38,20 +38,19 @@ import {
TrafficSplitMethod TrafficSplitMethod
} from '../types/trafficSplitMethod' } from '../types/trafficSplitMethod'
import {parseRouteStrategy, RouteStrategy} from '../types/routeStrategy' import {parseRouteStrategy, RouteStrategy} from '../types/routeStrategy'
import {ClusterType} from '../inputUtils' import {ResourceTypeFleet, ResourceTypeManagedCluster} from './deploy'
export async function promote( export async function promote(
kubectl: Kubectl, kubectl: Kubectl,
manifests: string[], manifests: string[],
deploymentStrategy: DeploymentStrategy, deploymentStrategy: DeploymentStrategy
resourceType: ClusterType
) { ) {
switch (deploymentStrategy) { switch (deploymentStrategy) {
case DeploymentStrategy.CANARY: case DeploymentStrategy.CANARY:
await promoteCanary(kubectl, manifests) await promoteCanary(kubectl, manifests)
break break
case DeploymentStrategy.BLUE_GREEN: case DeploymentStrategy.BLUE_GREEN:
await promoteBlueGreen(kubectl, manifests, resourceType) await promoteBlueGreen(kubectl, manifests)
break break
default: default:
throw Error('Invalid promote deployment strategy') throw Error('Invalid promote deployment strategy')
@@ -141,11 +140,7 @@ async function promoteCanary(kubectl: Kubectl, manifests: string[]) {
core.endGroup() core.endGroup()
} }
async function promoteBlueGreen( async function promoteBlueGreen(kubectl: Kubectl, manifests: string[]) {
kubectl: Kubectl,
manifests: string[],
resourceType: ClusterType
) {
// update container images and pull secrets // update container images and pull secrets
const inputManifestFiles: string[] = updateManifestFiles(manifests) const inputManifestFiles: string[] = updateManifestFiles(manifests)
const manifestObjects: BlueGreenManifests = const manifestObjects: BlueGreenManifests =
@@ -172,6 +167,8 @@ async function promoteBlueGreen(
// checking stability of newly created deployments // checking stability of newly created deployments
core.startGroup('Checking manifest stability') core.startGroup('Checking manifest stability')
const resourceType =
core.getInput('resource-type') || ResourceTypeManagedCluster
const deployedManifestFiles = deployResult.manifestFiles const deployedManifestFiles = deployResult.manifestFiles
const resources: Resource[] = getResources( const resources: Resource[] = getResources(
deployedManifestFiles, deployedManifestFiles,
@@ -179,6 +176,14 @@ async function promoteBlueGreen(
models.DiscoveryAndLoadBalancerResource.SERVICE models.DiscoveryAndLoadBalancerResource.SERVICE
]) ])
) )
if (
resourceType !== ResourceTypeManagedCluster &&
resourceType !== ResourceTypeFleet
) {
const errMsg = `Invalid resource type: ${resourceType}. Supported resource types are: ${ResourceTypeManagedCluster} (default), fleet`
core.setFailed(errMsg)
throw new Error(errMsg)
}
await KubernetesManifestUtility.checkManifestStability( await KubernetesManifestUtility.checkManifestStability(
kubectl, kubectl,
resources, resources,
-34
View File
@@ -1,34 +0,0 @@
import {parseResourceTypeInput} from './inputUtils'
import {
ClusterType,
ResourceTypeFleet,
ResourceTypeManagedCluster
} from './actions/deploy'
describe('InputUtils', () => {
describe('parseResourceTypeInput', () => {
it('should extract fleet exact match resource type', () => {
expect(
parseResourceTypeInput('Microsoft.ContainerService/fleets')
).toEqual(ResourceTypeFleet)
})
it('should match fleet case-insensitively', () => {
expect(
parseResourceTypeInput('Microsoft.containerservice/fleets')
).toEqual(ResourceTypeFleet)
})
it('should match managed cluster case-insensitively', () => {
expect(
parseResourceTypeInput('Microsoft.containerservice/MAnaGedClusterS')
).toEqual(ResourceTypeManagedCluster)
})
it('should error on unexpected values', () => {
expect(() => {
parseResourceTypeInput('icrosoft.ContainerService/ManagedCluster')
}).toThrow()
expect(() => {
parseResourceTypeInput('wrong-value')
}).toThrow()
})
})
})
-16
View File
@@ -1,6 +1,5 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import {parseAnnotations} from './types/annotations' import {parseAnnotations} from './types/annotations'
import {ResourceTypeFleet, ResourceTypeManagedCluster} from './actions/deploy'
export const inputAnnotations = parseAnnotations( export const inputAnnotations = parseAnnotations(
core.getInput('annotations', {required: false}) core.getInput('annotations', {required: false})
@@ -15,18 +14,3 @@ export function getBufferTime(): number {
return inputBufferTime return inputBufferTime
} }
export function parseResourceTypeInput(rawInput: string): ClusterType {
switch (rawInput.toLowerCase()) {
case ResourceTypeFleet.toLowerCase():
return ResourceTypeFleet
case ResourceTypeManagedCluster.toLowerCase():
return ResourceTypeManagedCluster
}
throw new Error(
`Invalid resource type: ${rawInput}. Supported resource types are: ${ResourceTypeManagedCluster} (default), ${ResourceTypeFleet}`
)
}
export type ClusterType =
| typeof ResourceTypeManagedCluster
| typeof ResourceTypeFleet
+3 -19
View File
@@ -1,18 +1,12 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import {getKubectlPath, Kubectl} from './types/kubectl' import {getKubectlPath, Kubectl} from './types/kubectl'
import { import {deploy} from './actions/deploy'
deploy,
ResourceTypeFleet,
ResourceTypeManagedCluster
} from './actions/deploy'
import {ClusterType} from './inputUtils'
import {promote} from './actions/promote' import {promote} from './actions/promote'
import {reject} from './actions/reject' import {reject} from './actions/reject'
import {Action, parseAction} from './types/action' import {Action, parseAction} from './types/action'
import {parseDeploymentStrategy} from './types/deploymentStrategy' import {parseDeploymentStrategy} from './types/deploymentStrategy'
import {getFilesFromDirectoriesAndURLs} from './utilities/fileUtils' import {getFilesFromDirectoriesAndURLs} from './utilities/fileUtils'
import {PrivateKubectl} from './types/privatekubectl' import {PrivateKubectl} from './types/privatekubectl'
import {parseResourceTypeInput} from './inputUtils'
export async function run() { export async function run() {
// verify kubeconfig is set // verify kubeconfig is set
@@ -42,16 +36,6 @@ export async function run() {
const resourceName = core.getInput('name') || '' const resourceName = core.getInput('name') || ''
const skipTlsVerify = core.getBooleanInput('skip-tls-verify') const skipTlsVerify = core.getBooleanInput('skip-tls-verify')
let resourceType: ClusterType
try {
// included in the trycatch to allow raw input to go out of scope after parsing
const resourceTypeInput = core.getInput('resource-type')
resourceType = parseResourceTypeInput(resourceTypeInput)
} catch (e) {
core.setFailed(e)
return
}
const kubectl = isPrivateCluster const kubectl = isPrivateCluster
? new PrivateKubectl( ? new PrivateKubectl(
kubectlPath, kubectlPath,
@@ -65,11 +49,11 @@ export async function run() {
// run action // run action
switch (action) { switch (action) {
case Action.DEPLOY: { case Action.DEPLOY: {
await deploy(kubectl, fullManifestFilePaths, strategy, resourceType) await deploy(kubectl, fullManifestFilePaths, strategy)
break break
} }
case Action.PROMOTE: { case Action.PROMOTE: {
await promote(kubectl, fullManifestFilePaths, strategy, resourceType) await promote(kubectl, fullManifestFilePaths, strategy)
break break
} }
case Action.REJECT: { case Action.REJECT: {
+1 -1
View File
@@ -35,7 +35,7 @@ import {
} from '../utilities/githubUtils' } from '../utilities/githubUtils'
import {getDeploymentConfig} from '../utilities/dockerUtils' import {getDeploymentConfig} from '../utilities/dockerUtils'
import {DeployResult} from '../types/deployResult' import {DeployResult} from '../types/deployResult'
import {ClusterType} from '../inputUtils' import {ClusterType} from '../actions/deploy'
export async function deployManifests( export async function deployManifests(
files: string[], files: string[],
+3 -4
View File
@@ -3,8 +3,7 @@ import * as KubernetesConstants from '../types/kubernetesTypes'
import {Kubectl, Resource} from '../types/kubectl' import {Kubectl, Resource} from '../types/kubectl'
import {checkForErrors} from './kubectlUtils' import {checkForErrors} from './kubectlUtils'
import {sleep} from './timeUtils' import {sleep} from './timeUtils'
import {ResourceTypeFleet} from '../actions/deploy' import {ClusterType, ResourceTypeFleet} from '../actions/deploy'
import {ClusterType} from '../inputUtils'
const IS_SILENT = false const IS_SILENT = false
const POD = 'pod' const POD = 'pod'
@@ -12,10 +11,10 @@ const POD = 'pod'
export async function checkManifestStability( export async function checkManifestStability(
kubectl: Kubectl, kubectl: Kubectl,
resources: Resource[], resources: Resource[],
resourceType: ClusterType clusterTyper: ClusterType
): Promise<void> { ): Promise<void> {
// Skip if resource type is microsoft.containerservice/fleets // Skip if resource type is microsoft.containerservice/fleets
if (resourceType === ResourceTypeFleet) { if (clusterTyper === ResourceTypeFleet) {
core.info(`Skipping checkManifestStability for ${ResourceTypeFleet}`) core.info(`Skipping checkManifestStability for ${ResourceTypeFleet}`)
return return
} }