Skip to content

Commit

Permalink
Add publish-internal workflow from main branch
Browse files Browse the repository at this point in the history
  • Loading branch information
exyi committed Dec 1, 2024
1 parent 5e3945e commit c78dbd8
Show file tree
Hide file tree
Showing 2 changed files with 169 additions and 0 deletions.
26 changes: 26 additions & 0 deletions .github/pack/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: setup
description: Packs a .NET project

inputs:
project:
description: Path to a .NET project
required: true

runs:
using: composite
steps:
- run: dotnet build --nologo -c Release --no-restore --no-incremental "${{ inputs.project }}"
shell: pwsh
env:
DOTVVM_ROOT: ${{ github.workspace }}
DOTNET_NOLOGO: "1"
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "1"
DOTNET_CLI_TELEMETRY_OPTOUT: "1"

- run: dotnet pack -c Release --no-build "${{ inputs.project }}"
shell: pwsh
env:
DOTVVM_ROOT: ${{ github.workspace }}
DOTNET_NOLOGO: "1"
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "1"
DOTNET_CLI_TELEMETRY_OPTOUT: "1"
143 changes: 143 additions & 0 deletions .github/workflows/publish-internal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
name: publish-internal

on:
workflow_dispatch:
inputs:
release-type:
type: choice
options:
- InternalPreview
- PublicPreview
- Stable
default: InternalPreview
description: The type of release (determines version format)
required: false
version-core:
type: string
default: "4.0.0"
description: The core part of the version string
required: false
prerelease-version:
type: string
default: preview01
description: The prerelease suffix appended after the core version
required: false
prerelease-suffix:
type: string
default: ""
description: Additional prerelease suffix appended after the build number
required: false
signature-type:
type: choice
options:
- DotNetFoundation
- Riganti
default: DotNetFoundation
description: The signature to be used to sign the packages.
required: false

jobs:
read-input:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- id: set-version
run: >
if [[ "${{ inputs.release-type }}" == 'InternalPreview' ]]; then
VERSION="${{ inputs.version-core}}-${{ inputs.prerelease-version }}-${{ github.run_id }}";
elif [[ "${{ inputs.release-type }}" == 'PublicPreview' ]]; then
VERSION="${{ inputs.version-core}}-${{ inputs.prerelease-version }}-final";
elif [[ "${{ inputs.release-type }}" == 'Stable' ]]; then
VERSION="${{ inputs.version-core}}";
else
echo "Unknown release type '${{ inputs.release-type }}'.";
exit 1;
fi;
if [[ ( "${{ inputs.release-type }}" == 'InternalPreview' || "${{ inputs.release-type }}" == 'PublicPreview' ) && -n "${{ inputs.prerelease-suffix }}" ]]; then
VERSION="${VERSION}-${{ inputs.prerelease-suffix }}";
fi;
echo "$VERSION";
echo "version=$VERSION" >> $GITHUB_OUTPUT;
outputs:
version: ${{ steps.set-version.outputs.version }}

publish-nuget-packages:
runs-on: windows-2022
needs: read-input
steps:

- uses: actions/checkout@v3

- name: Set up
uses: ./.github/setup

- name: Add internal NuGet feed
run: ./ci/scripts/Add-InternalNuGetFeed.ps1 `
-internalFeed "${{ secrets.AZURE_ARTIFACTS_FEED }}" `
-internalFeedUser "${{ secrets.AZURE_ARTIFACTS_USERNAME }}" `
-internalFeedPat "${{ secrets.AZURE_ARTIFACTS_PAT }}"

- name: Publish NuGet packages (.NET Foundation)
if: ${{ inputs.signature-type == 'DotNetFoundation' }}
run: ./ci/scripts/Publish-NuGetPackages.ps1 `
-root "${{ github.workspace }}" `
-version "${{ needs.read-input.outputs.version }}" `
-signatureType "DotNetFoundation" `
-dnfUrl "${{ secrets.SIGN_DNF_KEYVAULT_URL }}" `
-dnfClientId "${{ secrets.SIGN_DNF_CLIENT_ID }}" `
-dnfTenantId "${{ secrets.SIGN_DNF_TENANT_ID }}" `
-dnfSecret "${{ secrets.SIGN_DNF_SECRET }}" `
-dnfCertificate "${{ secrets.SIGN_DNF_CERTIFICATE_NAME }}"

- name: Publish NuGet packages (Riganti)
if: ${{ inputs.signature-type == 'Riganti' }}
run: ./ci/scripts/Publish-NuGetPackages.ps1 `
-root "${{ github.workspace }}" `
-version "${{ needs.read-input.outputs.version }}" `
-signatureType "Riganti" `
-rigantiUrl "${{ secrets.SIGN_RIGANTI_KEYVAULT_URL }}" `
-rigantiClientId "${{ secrets.SIGN_RIGANTI_CLIENT_ID }}" `
-rigantiTenantId "${{ secrets.SIGN_RIGANTI_TENANT_ID }}" `
-rigantiSecret "${{ secrets.SIGN_RIGANTI_SECRET }}" `
-rigantiCertificate "${{ secrets.SIGN_RIGANTI_CERTIFICATE_NAME }}"

publish-dotvvm-types:
runs-on: windows-2022
needs: read-input
steps:
- uses: actions/checkout@v3

- name: Set up
uses: ./.github/setup

- name: Build Framework
uses: ./.github/pack
with:
project: src/Framework/Framework

- name: Build dotvvm-types
run: npm run tsc-types
working-directory: src/Framework/Framework

- name: Compose dotvvm-types
run: >
mkdir types;
cp "${{ github.workspace }}/src/Framework/Framework/obj/typescript-types/dotvvm.d.ts" types/index.d.ts;
npm version "${{ needs.read-input.outputs.version }}" --no-git-tag-version;
cat "${{ github.workspace }}/ci/scripts/npm/dotvvm-types/package.json";
working-directory: ci/scripts/npm/dotvvm-types

- name: Set internal npm registry
run: >
./ci/scripts/Set-NpmRegistry.ps1 `
-targetDirectory "./ci/scripts/npm/dotvvm-types" `
-registry "${{ secrets.INTERNAL_NPM_REGISTRY }}" `
-pat "${{ secrets.INTERNAL_NPM_PAT }}" `
-username "${{ secrets.INTERNAL_NPM_USERNAME }}" `
-email "${{ secrets.INTERNAL_NPM_EMAIL }}"
- name: Publish dotvvm-types
run: npm publish
working-directory: ci/scripts/npm/dotvvm-types

0 comments on commit c78dbd8

Please sign in to comment.