Add ci task to publish api client

This commit is contained in:
crobibero 2020-09-05 23:32:21 -06:00
parent 6d154041b9
commit 320e3b98ab
6 changed files with 125 additions and 0 deletions

View File

@ -0,0 +1,72 @@
parameters:
- name: LinuxImage
type: string
default: "ubuntu-latest"
- name: GeneratorVersion
type: string
default: "4.3.1"
jobs:
- job: GenerateApiClients
displayName: 'Generate Api Clients'
pool:
vmImage: "${{ parameters.LinuxImage }}"
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download OpenAPI Spec Artifact'
inputs:
source: "specific"
artifact: "OpenAPI Spec"
path: "$(System.ArtifactsDirectory)/openapi"
project: "$(System.TeamProjectId)"
pipeline: "29" # The main server CI build
runVersion: "latestFromBranch"
runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
- task: CmdLine@2
displayName: 'Download OpenApi Generator'
inputs:
scripts: "wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/${{ parameters.GeneratorVersion }}/openapi-generator-cli-${{ parameters.GeneratorVersion }}.jar -O openapi-generator-cli.jar"
# Generate npm api client
# Unstable
- task: npmAuthenticate@0
displayName: 'Authenticate to unstable npm feed'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
- task: CmdLine@2
displayName: 'Build unstable typescript axios client'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
script: 'bash ./apiclient/templates/typescript/unstable.sh axios'
- task: Npm@1
displayName: 'Publish unstable typescript axios client'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
command: publish
publishRegistry: useFeed
publishFeed: jellyfin/unstable
workingDir: ./apiclient/generated/typescript/axios
# Stable
- task: npmAuthenticate@0
displayName: 'Authenticate to stable npm feed'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
- task: CmdLine@2
displayName: 'Build stable typescript axios client'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
script: 'bash ./apiclient/templates/typescript/stable.sh axios'
- task: Npm@1
displayName: 'Publish stable typescript axios client'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
command: publish
publishRegistry: useExternalRegistry
publishEndpoint:
workingDir: ./apiclient/generated/typescript/axios

1
.gitignore vendored
View File

@ -276,3 +276,4 @@ BenchmarkDotNet.Artifacts
web/
web-src.*
MediaBrowser.WebDashboard/jellyfin-web
apiclient/generated

View File

@ -0,0 +1,2 @@
# Prevent generator from creating these files:
git_push.sh

View File

@ -0,0 +1,30 @@
{
"name": "jellyfin-apiclient-{{npmName}}",
"version": "10.7.0{{snapshotVersion}}",
"description": "Jellyfin api client using {{npmName}}",
"author": "Jellyfin Contributors",
"keywords": [
"{{npmName}}",
"typescript",
"jellyfin"
],
"license": "GPL-3.0-only",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"scripts": {
"build": "tsc --outDir dist/",
"prepublishOnly": "npm run build"
},
"dependencies": {
"axios": "^0.19.2"
},
"devDependencies": {
"@types/node": "^12.11.5",
"typescript": "^3.6.4"
}{{#npmRepository}},{{/npmRepository}}
{{#npmRepository}}
"publishConfig": {
"registry": "{{npmRepository}}"
}
{{/npmRepository}}
}

View File

@ -0,0 +1,10 @@
#!/bin/bash
CLIENT=$1
openapi-generator generate \
--input-spec $(System.ArtifactsDirectory)/openapi/openapi.json \
--generator-name typescript-${CLIENT} \
--output ./apiclient/generated/typescript/${CLIENT} \
--template-dir ./apiclient/templates/typescript \
--ignore-file-override ./apiclient/.openapi-generator-ignore \
--additional-properties=useSingleRequestParameter="true",npmName="${CLIENT}"

View File

@ -0,0 +1,10 @@
#!/bin/bash
CLIENT=$1
openapi-generator generate \
--input-spec $(System.ArtifactsDirectory)/openapi/openapi.json \
--generator-name typescript-${CLIENT} \
--output ./apiclient/generated/typescript/${CLIENT} \
--template-dir ./apiclient/templates/typescript \
--ignore-file-override ./apiclient/.openapi-generator-ignore \
--additional-properties=useSingleRequestParameter="true",npmName="${CLIENT}",snapshotVersion="-SNAPSHOT.$(Build.BuildNumber)",npmRepository="https://dev.azure.com/jellyfin-project/jellyfin/_packaging"