Add ci task to publish api client
This commit is contained in:
parent
6d154041b9
commit
320e3b98ab
72
.ci/azure-pipelines-api-client.yml
Normal file
72
.ci/azure-pipelines-api-client.yml
Normal 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
1
.gitignore
vendored
|
@ -276,3 +276,4 @@ BenchmarkDotNet.Artifacts
|
||||||
web/
|
web/
|
||||||
web-src.*
|
web-src.*
|
||||||
MediaBrowser.WebDashboard/jellyfin-web
|
MediaBrowser.WebDashboard/jellyfin-web
|
||||||
|
apiclient/generated
|
||||||
|
|
2
apiclient/.openapi-generator-ignore
Normal file
2
apiclient/.openapi-generator-ignore
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Prevent generator from creating these files:
|
||||||
|
git_push.sh
|
30
apiclient/templates/typescript/package.mustache
Normal file
30
apiclient/templates/typescript/package.mustache
Normal 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}}
|
||||||
|
}
|
10
apiclient/templates/typescript/stable.sh
Normal file
10
apiclient/templates/typescript/stable.sh
Normal 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}"
|
10
apiclient/templates/typescript/unstable.sh
Normal file
10
apiclient/templates/typescript/unstable.sh
Normal 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"
|
Loading…
Reference in New Issue
Block a user