Skip to content

Updated API from documentation release #321

Updated API from documentation release

Updated API from documentation release #321

Workflow file for this run

on:
push:
paths:
- 'api-specs/**'
workflow_dispatch:
name: "SDK Generator"
permissions: {}
jobs:
sdk:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language:
- java
- csharp
- typescript
- php
- postman
include:
- language: java
repository: 'commercetools/commercetools-sdk-java-v2'
apiMixin: true
API_RAML: "../commercetools-api-reference/api-specs/api/api-mixin.raml"
diffFormat: JAVA_MARKDOWN
- language: csharp
repository: 'commercetools/commercetools-dotnet-core-sdk-v2'
apiMixin: true
API_RAML: "../commercetools-api-reference/api-specs/api/api-mixin.raml"
diffFormat: DOTNET_MARKDOWN
- language: typescript
repository: 'commercetools/commercetools-sdk-typescript'
API_RAML: "../commercetools-api-reference/api-specs/api/api.raml"
diffFormat: TS_MARKDOWN
- language: php
repository: 'commercetools/commercetools-sdk-php-v2'
apiMixin: true
makeParams: "-j2"
API_RAML: "../commercetools-api-reference/api-specs/api/api-mixin.raml"
diffFormat: PHP_MARKDOWN
- language: postman
repository: 'commercetools/commercetools-postman-collection'
diffFormat: MARKDOWN
steps:
# Get GitHub token via the CT SDKs App
- name: Generate GitHub token (via CT SDKs App)
id: generate_github_token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.CT_SDKS_APP_ID }}
private-key: ${{ secrets.CT_SDKS_APP_PEM }}
owner: ${{ github.repository_owner }}
- name: Get App user
id: get_app_user
env:
GITHUB_TOKEN: ${{ steps.generate_github_token.outputs.token }}
run: |
export GH_APP_USER=`gh api /users/ct-sdks%5Bbot%5D | jq .id`
echo "email=${GH_APP_USER}+ct-sdks[bot]@users.noreply.github.com" >> "$GITHUB_OUTPUT"
- name: "Checkout api reference"
uses: actions/checkout@v4
with:
path: commercetools-api-reference
# Pass a personal access token (using our CT SDKs App) to be able to trigger other workflows
# https://help.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
# https://github.community/t/action-does-not-trigger-another-on-push-tag-action/17148/8
token: ${{ steps.generate_github_token.outputs.token }}
- name: "Checkout SDK"
uses: actions/checkout@v4
with:
repository: ${{ matrix.repository }}
path: commercetools-sdk
token: ${{ steps.generate_github_token.outputs.token }}
- name: 'Setup Java'
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: '16'
- name: "Install Csharp"
if: ${{ matrix.language == 'csharp' }}
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
3.1.x
7.0.x
- name: "Install PHP with extensions"
if: ${{ matrix.language == 'php' }}
uses: shivammathur/setup-php@v2
with:
php-version: "7.4"
coverage: pcov
extensions: json, mbstring, intl
tools: composer
ini-values: assert.exception=1, zend.assertions=1
- name: Setup Node (uses version in .nvmrc)
if: ${{ matrix.language == 'typescript' }}
uses: actions/setup-node@v2
with:
node-version-file: 'commercetools-sdk/.nvmrc'
- name: "Switch SDK to update branch"
if: github.ref == 'refs/heads/main'
run: |
git fetch --depth=1 origin gen-sdk-updates || true
git checkout -B gen-sdk-updates origin/gen-sdk-updates || true
git checkout -B gen-sdk-updates
git log -1
working-directory: commercetools-sdk
- name: "Switch SDK to update branch"
if: github.ref != 'refs/heads/main'
run: |
git fetch --depth=1 origin ${{ github.ref_name }} || true
git checkout -B gen-sdk-updates origin/${{ github.ref_name }} || true
git checkout -B ${{ github.ref_name }}
git log -1
working-directory: commercetools-sdk
- name: "Apply SDK mixin"
if: ${{ matrix.apiMixin }}
run: |
cp commercetools-sdk/api-${{ matrix.language }}-mixin.raml commercetools-api-reference/api-specs/api/api-mixin.raml
- name: "Update GraphQL schema (CSharp)"
if: ${{ matrix.language == 'csharp' }}
run: |
cp commercetools-api-reference/api-specs/graphql/schema.sdl commercetools-sdk/commercetools.Sdk/commercetools.Sdk.GraphQL.Api/schema.graphqls
sed -i 's/^type Query implements.*/type Query {/' commercetools-sdk/commercetools.Sdk/commercetools.Sdk.GraphQL.Api/schema.graphqls
- name: "Update GraphQL schema (Java)"
if: ${{ matrix.language == 'java' }}
run: |
cp commercetools-api-reference/api-specs/graphql/schema.sdl commercetools-sdk/commercetools/commercetools-graphql-api/src/main/resources/graphql/schema.graphqls
sed -i 's/^type Query implements.*/type Query {/' commercetools-sdk/commercetools/commercetools-graphql-api/src/main/resources/graphql/schema.graphqls
- name: "Generate SDK"
if: ${{ matrix.language != 'postman' }}
run: sudo chmod 777 /usr/local/bin && make ${{ matrix.makeParams }} build
working-directory: commercetools-sdk
env:
RAML_FILE: "../commercetools-api-reference/api-specs/api/api.raml"
API_RAML: ${{ matrix.API_RAML }}
IMPORT_RAML: "../commercetools-api-reference/api-specs/import/api.raml"
ML_RAML: "../commercetools-api-reference/api-specs/ml/api.raml"
HISTORY_RAML: "../commercetools-api-reference/api-specs/history/api.raml"
- name: "Generate postman collections"
if: ${{ matrix.language == 'postman' }}
working-directory: commercetools-sdk
run: |-
sudo chmod 777 /usr/local/bin
make RAML_FILE=../commercetools-api-reference/api-specs/api/postman.raml LIB_NAME=api build
make RAML_FILE=../commercetools-api-reference/api-specs/import/api.raml LIB_NAME=import build
make RAML_FILE=../commercetools-api-reference/api-specs/connect/api.raml LIB_NAME=connect build
jq -r tostring api/collection.json > api/minified.json
mv api/minified.json api/collection.json
- name: "Checkout previous api reference"
uses: actions/checkout@v4
with:
fetch-depth: 0
path: commercetools-api-reference-previous
token: ${{ steps.generate_github_token.outputs.token }}
- name: "Store api reference version"
run: |
if [ ! -f ../commercetools-sdk/reference.txt ]; then
git log --format='%H' --no-merges -n 1 --skip 1 > ../commercetools-sdk/reference.txt
fi
echo "${{ github.sha}}" >> ../commercetools-sdk/references.txt
echo "previous=$(cat ../commercetools-sdk/reference.txt | head -n 1)" >> $GITHUB_ENV
working-directory: commercetools-api-reference-previous
- name: "Switch to previous commit"
run: git checkout ${{ env.previous }}
working-directory: commercetools-api-reference-previous
- name: "Calculate diff (API)"
run: rmf-codegen diff -f ${{ matrix.diffFormat }} -o ./changes_api.md commercetools-api-reference-previous/api-specs/api/api.raml commercetools-api-reference/api-specs/api/api.raml
- name: "Calculate diff (Import API)"
run: rmf-codegen diff -f ${{ matrix.diffFormat }} -o ./changes_import.md commercetools-api-reference-previous/api-specs/import/api.raml commercetools-api-reference/api-specs/import/api.raml
- name: "Calculate diff (History)"
run: rmf-codegen diff -f ${{ matrix.diffFormat }} -o ./changes_history.md commercetools-api-reference-previous/api-specs/history/api.raml commercetools-api-reference/api-specs/history/api.raml
- name: 'TS changesets'
if: ${{ matrix.language == 'typescript' }}
run: |
if [ -f ./changes_api.md ]; then
echo "---" > ./commercetools-sdk/.changeset/changes_api.md
echo '"@commercetools/platform-sdk": minor' >> ./commercetools-sdk/.changeset/changes_api.md
echo "---" >> ./commercetools-sdk/.changeset/changes_api.md
echo "**Api changes**" >> ./commercetools-sdk/.changeset/changes_api.md
echo "" >> ./commercetools-sdk/.changeset/changes_api.md
cat ./changes_api.md >> ./commercetools-sdk/.changeset/changes_api.md
echo "" >> ./commercetools-sdk/.changeset/changes_api.md
fi
if [ -f ./changes_import.md ]; then
echo "---" > ./commercetools-sdk/.changeset/changes_import.md
echo '"@commercetools/importapi-sdk": minor' >> ./commercetools-sdk/.changeset/changes_import.md
echo "---" >> ./commercetools-sdk/.changeset/changes_import.md
echo "**Import changes**" >> ./commercetools-sdk/.changeset/changes_import.md
echo "" >> ./commercetools-sdk/.changeset/changes_import.md
cat ./changes_import.md >> ./commercetools-sdk/.changeset/changes_import.md
echo "" >> ./commercetools-sdk/.changeset/changes_import.md
fi
if [ -f ./changes_history.md ]; then
echo "---" > ./commercetools-sdk/.changeset/changes_history.md
echo '"@commercetools/history-sdk": minor' >> ./commercetools-sdk/.changeset/changes_history.md
echo "---" >> ./commercetools-sdk/.changeset/changes_history.md
echo "**History changes**" >> ./commercetools-sdk/.changeset/changes_history.md
echo "" >> ./commercetools-sdk/.changeset/changes_history.md
cat ./changes_history.md >> ./commercetools-sdk/.changeset/changes_history.md
echo "" >> ./commercetools-sdk/.changeset/changes_history.md
fi
- name: 'Create change file'
run: |
if [ -f ./changes_api.md ]; then
echo "**Api changes**" >> ./changes.md
echo "" >> ./changes.md
cat ./changes_api.md >> ./changes.md
echo "" >> ./changes.md
fi
if [ -f ./changes_import.md ]; then
echo "**Import changes**" >> ./changes.md
echo "" >> ./changes.md
cat ./changes_import.md >> ./changes.md
echo "" >> ./changes.md
fi
if [ -f ./changes_history.md ]; then
echo "**History changes**" >> ./changes.md
echo "" >> ./changes.md
cat ./changes_history.md >> ./changes.md
echo "" >> ./changes.md
fi
if [ -f ./changes.md ]; then
cat ./changes.md
cp ./changes.md ./commercetools-sdk/changes.md
fi
- name: "prettier"
if: ${{ matrix.language == 'typescript' }}
working-directory: commercetools-sdk
run: make prettify
- name: "check pending changes"
run: echo "CHANGES_PENDING=`git status --porcelain -- ':(exclude)*references.txt' | grep -c ^`" >> $GITHUB_ENV
working-directory: commercetools-sdk
- uses: stefanzweifel/git-auto-commit-action@v4
if: env.CHANGES_PENDING != '0' && github.ref == 'refs/heads/main' && matrix.language != 'postman'
with:
repository: commercetools-sdk
branch: gen-sdk-updates
commit_message: "build(codegen): updating SDK"
commit_author: ct-sdks[bot] <${{ steps.get_app_user.outputs.email }}>
commit_user_name: ct-sdks[bot]
commit_user_email: ${{ steps.get_app_user.outputs.email }}
- uses: stefanzweifel/git-auto-commit-action@v4
if: ${{ matrix.language == 'postman' && env.CHANGES_PENDING != '0' && github.ref == 'refs/heads/main' }}
with:
repository: commercetools-sdk
branch: master
commit_message: "TASK: Updating Postman collection"
commit_author: ct-sdks[bot] <${{ steps.get_app_user.outputs.email }}>
commit_user_name: ct-sdks[bot]
commit_user_email: ${{ steps.get_app_user.outputs.email }}
- uses: stefanzweifel/git-auto-commit-action@v4
if: github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/main'
with:
repository: commercetools-sdk
branch: ${{ github.ref_name }}
commit_message: "build(codegen): updating SDK"
commit_author: ct-sdks[bot] <${{ steps.get_app_user.outputs.email }}>
commit_user_name: ct-sdks[bot]
commit_user_email: ${{ steps.get_app_user.outputs.email }}