Skip to content

trigger-workflow-update-database-from-sdk #573

trigger-workflow-update-database-from-sdk

trigger-workflow-update-database-from-sdk #573

name: Update Latest Database From mikroSDK
on:
repository_dispatch:
types: [trigger-workflow-update-database-from-sdk]
jobs:
Update-Database-From-mikroSDK:
runs-on: ubuntu-latest
steps:
- name: Authorize Mikroe Actions App
uses: actions/create-github-app-token@v2
id: app-token
with:
app-id: ${{ vars.MIKROE_ACTIONS }}
private-key: ${{ secrets.MIKROE_ACTIONS_KEY_AUTHORIZE }}
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ github.event.client_payload.branch }}
token: ${{ steps.app-token.outputs.token }}
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r scripts/requirements/shared.txt
pip install -r scripts/requirements/databases.txt
sudo apt-get install p7zip-full
- name: Extract payload version
id: mikrosdk_payload
run: |
echo "tag_version=${{ github.event.client_payload.version }}" >> $GITHUB_OUTPUT
echo "index=${{ github.event.client_payload.index }}" >> $GITHUB_OUTPUT
- name: Upload new database asset
run: |
if [[ ${{ steps.mikrosdk_payload.outputs.index }} == "Live" ]]; then
python -u scripts/reupload_databases.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ secrets.PROG_DEBUG_CODEGRIP_LIVE }} ${{ secrets.PROG_DEBUG_MIKROPROG }} ${{ secrets.PROG_DEBUG_JLINK }} "latest" ${{ steps.mikrosdk_payload.outputs.tag_version }} ${{ steps.mikrosdk_payload.outputs.index }}
else
python -u scripts/reupload_databases.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ secrets.PROG_DEBUG_CODEGRIP_TEST }} ${{ secrets.PROG_DEBUG_MIKROPROG }} ${{ secrets.PROG_DEBUG_JLINK }} "latest" ${{ steps.mikrosdk_payload.outputs.tag_version }} ${{ steps.mikrosdk_payload.outputs.index }}
fi
- name: Add GitHub Actions credentials
run: |
git config user.name github-actions
git config user.email github-actions@github.com
- name: Commit and Push Changes
run: |
if [[ ${{ steps.mikrosdk_payload.outputs.index }} == "Live" ]]; then
DB_NAME="necto_db.db"
else
DB_NAME="necto_db_dev.db"
fi
STATUS=$(git status --short "$DB_NAME")
if [ -z "$STATUS" ]; then
echo "No changes made to $DB_NAME";
else
echo "Updating with new $DB_NAME";
echo "test"
git pull
git add $DB_NAME
git commit -m "Updated $DB_NAME with latest merged release."
git push
if [[ ${{ steps.mikrosdk_payload.outputs.index }} == "Live" ]]; then
curl --location --request POST '${{ secrets.ERP_DB_IMPORT_API }}' \
--header 'Authorization: Basic ${{ secrets.ERP_DB_IMPORT_KEY }}'
fi
fi
- name: Upload and re-index Schemas
env:
ES_HOST: ${{ secrets.ES_HOST }}
ES_USER: ${{ secrets.ES_USER }}
ES_PASSWORD: ${{ secrets.ES_PASSWORD }}
ES_INDEX_TEST: ${{ secrets.ES_INDEX_TEST }}
ES_INDEX_LIVE: ${{ secrets.ES_INDEX_LIVE }}
run: |
if [[ ${{ steps.mikrosdk_payload.outputs.index }} == "Live" ]]; then
echo "Uploading and indexing to Live."
python -u scripts/update_schemas.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} "latest" ${{ secrets.ES_INDEX_LIVE }} "False"
else
echo "Uploading and indexing to Test and Live."
python -u scripts/update_schemas.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} "latest" ${{ secrets.ES_INDEX_TEST }} "False"
fi
# Create a pull request using the GitHub API
- name: Create Pull Request
id: create_pr
if: ${{ github.event.client_payload.branch != 'main' && steps.mikrosdk_payload.outputs.index == 'Live' }}
run: |
PR_RESPONSE=$(curl -s -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/${{ github.repository }}/pulls \
-d "{\"title\":\"Merge branch ${{ github.event.client_payload.branch }} into main\",\"head\":\"${{ github.event.client_payload.branch }}\",\"base\":\"main\",\"body\":\"Automatically created pull request to merge branch ${{ github.event.client_payload.branch }} into main\"}")
echo "$PR_RESPONSE" > pr_response.json
PR_NUMBER=$(jq '.number' pr_response.json)
echo "PR NUMBER IS: ${PR_NUMBER}"
rm pr_response.json
echo "Pull request number is $PR_NUMBER"
echo "pull_request_number=$PR_NUMBER" >> $GITHUB_OUTPUT
- name: Run Index Script
env:
ES_HOST: ${{ secrets.ES_HOST }}
ES_USER: ${{ secrets.ES_USER }}
ES_PASSWORD: ${{ secrets.ES_PASSWORD }}
run: |
if [[ ${{ steps.mikrosdk_payload.outputs.index }} == "Test" ]]; then
echo "Indexing database to TEST."
python -u scripts/index.py ${{ github.repository }} ${{ secrets.GITHUB_TOKEN }} ${{ secrets.ES_INDEX_TEST }} ${{ secrets.PROG_DEBUG_CODEGRIP_TEST }} "True" "latest" "True" "False"
fi
if [[ ${{ steps.mikrosdk_payload.outputs.index }} == "Live" ]]; then
echo "Indexing database to LIVE."
python -u scripts/index.py ${{ github.repository }} ${{ secrets.GITHUB_TOKEN }} ${{ secrets.ES_INDEX_LIVE }} ${{ secrets.PROG_DEBUG_CODEGRIP_LIVE }} "True" "latest" "True" "False"
fi