Update SDKs #269
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Update SDKs | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ "main" ] | |
paths-ignore: | |
- '**/README.md' | |
- README.md | |
- LICENSE | |
- .github/CODEOWNERS | |
permissions: | |
contents: read | |
concurrency: | |
group: ci-sdk-automation | |
jobs: | |
generate: | |
strategy: | |
matrix: | |
project: [ go, php, java, node, dotnet, python, ruby ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
- name: Clone ${{ matrix.project }} repository | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }} | |
repository: Adyen/adyen-${{ matrix.project }}-api-library | |
path: ${{ matrix.project }}/repo | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
- name: Override properties | |
if: matrix.project == 'node' | |
run: cp ${{ matrix.project }}/gradle.properties buildSrc | |
- name: Generate code for ${{ matrix.project }} | |
run: ./gradlew ${{ matrix.project }}:services | |
- name: OpenAPI diffs | |
id: openapi-diffs | |
run: | | |
cd schema | |
COMMIT_HASH=$(git rev-parse HEAD) | |
COMMIT_HASH_BEFORE=$(git rev-parse HEAD^) | |
echo "Generate OpenAPI diff between commits [$COMMIT_HASH_BEFORE, $COMMIT_HASH]" | |
# save commit that has triggered the OpenAPI generation | |
echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV | |
# Fetch files modified by the commit | |
files=$(git diff-tree --no-commit-id --name-only -r $COMMIT_HASH) | |
for file in $files; do | |
if [[ $file == *.json ]]; then | |
# get filename | |
filename="${file%.*}" | |
# checkout file before the commit | |
temp_before_name="${filename}_before.json" | |
git show $COMMIT_HASH_BEFORE:$file > $temp_before_name | |
# checkout file after the commit | |
temp_after_name="${filename}_after.json" | |
git show $COMMIT_HASH:$file > $temp_after_name | |
docker run -v "$(pwd):/specs" --rm -t tufin/oasdiff diff \ | |
-f markup \ | |
/specs/$temp_before_name \ | |
/specs/$temp_after_name \ | |
>> "oas_diff_${filename//\//_}.md" | |
echo "$filename ✅" | |
fi | |
done | |
# upload generated openapi-diff markdowns as artifacts | |
- uses: actions/upload-artifact@v4 | |
# only for first project (the artifact is always the same) | |
if: matrix.project == 'java' | |
id: artifact-upload-step | |
with: | |
name: openapi-diff files (commit ${{ env.COMMIT_HASH }}) | |
path: | | |
schema/oas_diff_*.md | |
- name: Save artifact URL | |
env: | |
REPO: ${{ github.repository }} | |
RUN_ID: ${{ github.run_id }} | |
run: echo "ARTIFACT_URL=https://github.com/$REPO/actions/runs/$RUN_ID" >> $GITHUB_ENV | |
- name: Set PR variables | |
id: vars | |
run: | | |
cd schema | |
echo pr_title="Update all services" >> "$GITHUB_OUTPUT" | |
echo pr_body="OpenAPI spec or templates produced changes on $(date +%d-%m-%Y) \ | |
by [commit](https://github.com/Adyen/adyen-openapi/commit/$(git rev-parse HEAD)). \ | |
Download [OpenAPI diffs](${{ env.ARTIFACT_URL }}) to view the changes." >> "$GITHUB_OUTPUT" | |
- name: Create Pull Request | |
uses: peter-evans/create-pull-request@v7 | |
with: | |
path: ${{ matrix.project }}/repo | |
token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }} | |
committer: ${{ secrets.ADYEN_AUTOMATION_BOT_EMAIL }} | |
author: ${{ secrets.ADYEN_AUTOMATION_BOT_EMAIL }} | |
branch: sdk-automation/models | |
title: ${{ steps.vars.outputs.pr_title }} | |
body: ${{ steps.vars.outputs.pr_body }} | |
commit-message: | | |
${{ contains(fromJSON('["go", "php", "node"]'), matrix.project) && '[reformat]' }}[adyen-sdk-automation] automated change |