on: repository_dispatch: types: [embedded_ui_refresh] workflow_dispatch: inputs: asset_name: description: Release asset name required: true default: embedded-ui repository: description: Source repository required: true default: ydb-platform/ydb-embedded-ui tag_name: description: Release tag required: true name: Embedded UI Refresh jobs: main: runs-on: ubuntu-latest permissions: contents: write pull-requests: write env: ASSET_NAME: ${{ github.event.inputs && github.event.inputs.asset_name || github.event.client_payload.asset_name }} REPOSITORY: ${{ github.event.inputs && github.event.inputs.repository || github.event.client_payload.repository }} TAG_NAME: ${{ github.event.inputs && github.event.inputs.tag_name || github.event.client_payload.tag_name }} TEMP_ASSET_DIR: /tmp/asset steps: - uses: actions/checkout@v4 - name: Asset Download env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh release download $TAG_NAME --repo $REPOSITORY --pattern $ASSET_NAME.zip --dir $TEMP_ASSET_DIR - name: Asset Placement env: START_POINTER: "# GENERATED MONITORING RESOURCES START" END_POINTER: "# GENERATED MONITORING RESOURCES END" TARGET_DIR: ydb/core/viewer/monitoring YA_MAKE_FILE: ydb/core/viewer/ya.make run: | unzip $TEMP_ASSET_DIR/$ASSET_NAME.zip -d $TEMP_ASSET_DIR rm -rf $TARGET_DIR mkdir $TARGET_DIR mv -vf $TEMP_ASSET_DIR/$ASSET_NAME/* $TARGET_DIR # List of files in the target directory. NEW_RESOURCES=$(find $TARGET_DIR -type f | sort) # Current indentation of the start pointer line. INDENTATION=$(grep -e "$START_POINTER" $YA_MAKE_FILE | perl -lane 's/^(\s+)(.*)+$/$1/e; print') # Replacing resources list between start and end pointers with saving the current indentation. perl -0777 -pi -e "s/\s+$START_POINTER.*$END_POINTER/ $INDENTATION$START_POINTER ${INDENTATION}RESOURCE( $(echo "$NEW_RESOURCES" | perl -e "while (<>) {chomp; print \"$INDENTATION \$_ \$_\\n\";}" | sed -E 's/\//\\\//g') $INDENTATION) $INDENTATION$END_POINTER/s" $YA_MAKE_FILE - name: Pull Request uses: peter-evans/create-pull-request@v5 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "build: refresh Embedded UI (${{ env.TAG_NAME }})" branch: embedded-ui-refresh-${{ env.TAG_NAME }} delete-branch: true title: "build: refresh Embedded UI (${{ env.TAG_NAME }})" body: | ### Embedded UI Refresh Embedded UI [${{ env.TAG_NAME }}](https://github.com/${{ env.REPOSITORY }}/releases/tag/${{ env.TAG_NAME }}) ([CHANGELOG.md](https://github.com/${{ env.REPOSITORY }}/blob/${{ env.TAG_NAME }}/CHANGELOG.md)).