Skip to content

kd_clients Preview Release (Dry Run) #17

kd_clients Preview Release (Dry Run)

kd_clients Preview Release (Dry Run) #17

Workflow file for this run

name: 🚀Release
run-name: ${{ vars.PROJECT_NAME }} ${{ inputs.release-type }} Release ${{ inputs.dry-run == true && '(Dry Run)' || '' }}
defaults:
run:
shell: pwsh
on:
workflow_dispatch:
inputs:
release-type:
description: The type of release. Choose 'Preview' or 'Production'.
required: true
type: choice
options: [Preview, Production]
dry-run:
required: false
description: If true, the release will not be created.
default: false
type: boolean
jobs:
get_version:
name: Get Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Setup Deno
uses: denoland/setup-deno@v1
with:
deno-version: ${{ vars.DENO_VERSION }}
- uses: actions/checkout@v4
- name: Get Version
id: get_version
run: |
$scriptPath = "${{ github.workspace }}/.github/cicd/scripts/get-version.ts";
deno run --allow-read --allow-write --allow-env `
--no-remote `
--import-map=${{ github.workspace }}/vendor/import_map.json `
"$scriptPath";
validate_release:
name: Validate Workflow Inputs
runs-on: ubuntu-latest
needs: get_version
steps:
- name: Validate Workflow Inputs
run: |
$branch = "${{ github.ref }}".TrimStart('refs/heads/');
$expectedBranch = "${{ vars.PROD_RELEASE_BRANCH }}".Trim();
if ($branch -ne $expectedBranch) {
Write-Host "::error::Releases are only allowed to be run on the '$expectedBranch' branch.";
exit 1;
}
- name: Setup Deno
uses: denoland/setup-deno@v1
with:
deno-version: ${{ vars.DENO_VERSION }}
- uses: actions/checkout@v4
- name: Version Does Not Exist
run: |
$scriptPath = "${{ github.workspace }}/.github/cicd/scripts/version-checker.ts";
deno run `
--allow-net `
--no-remote `
--import-map=${{ github.workspace }}/vendor/import_map.json `
"$scriptPath" `
"${{ vars.ORGANIZATION_NAME }}" `
"${{ vars.PROJECT_NAME }}" `
"${{ inputs.release-type }}" `
"${{ needs.get_version.outputs.version }}" `
"${{ secrets.CICD_TOKEN }}";
- name: Release Notes Exist
run: |
$scriptPath = "${{ github.workspace }}/.github/cicd/scripts/check-release-notes.ts";
deno run `
--allow-read `
--no-remote `
--import-map=${{ github.workspace }}/vendor/import_map.json `
"$scriptPath" `
"${{ inputs.release-type }}" `
"${{ needs.get_version.outputs.version }}";
release:
name: Run ${{ inputs.release-type }} Release
runs-on: ubuntu-latest
needs: [get_version, validate_release]
steps:
- name: Setup Deno
uses: denoland/setup-deno@v1
with:
deno-version: ${{ vars.DENO_VERSION }}
- uses: actions/checkout@v4
- name: Run Build
run: deno run --allow-read --allow-run ./.github/cicd/scripts/deno-check.ts
- name: Run Lint
run: deno lint
- name: Run Tests
run: deno test
- name: Creating ${{ inputs.release-type }} GitHub Release
if: ${{ inputs.dry-run == false }}
uses: softprops/action-gh-release@v1
with:
name: "🚀${{ inputs.release-type }} Release - ${{ needs.get_version.outputs.version }}"
body_path: "${{ github.workspace }}/ReleaseNotes/${{ inputs.release-type }}Releases/Release-Notes-${{ needs.get_version.outputs.version }}.md"
files: "${{ github.workspace }}/ReleaseNotes/${{ inputs.release-type }}Releases/Release-Notes-${{ needs.get_version.outputs.version }}.md"
tag_name: "${{ needs.get_version.outputs.version }}"
prerelease: ${{ inputs.release-type == 'Preview' }}
draft: false
- name: Close Milestone
if: ${{ inputs.dry-run == false }}
run: |
$scriptUrl = "${{ vars.SCRIPT_BASE_URL }}/${{ vars.CICD_SCRIPTS_VERSION }}/${{ vars.SCRIPT_RELATIVE_DIR_PATH }}";
$scriptUrl = $scriptUrl.Replace("\", "/").Replace("//", "/");
$scriptUrl = $scriptUrl.EndsWith("/") ? $scriptUrl.Substring(0, $scriptUrl.Length - 1) : $scriptUrl;
$scriptUrl = "$scriptUrl/close-milestone.ts";
Write-Host "::notice::Close milestone script URL: $scriptUrl";
<# Deno Args:
1. Project name
2. Milestone name - This is the version
3. PAT
#>
deno run `
--allow-read --allow-net `
"$scriptUrl" `
"${{ vars.PROJECT_NAME }}" `
"${{ needs.get_version.outputs.version }}" `
"${{ secrets.CICD_TOKEN }}";