Release MCUs from Branch to Test #42
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: Release MCUs from Branch to Test | |
on: | |
workflow_dispatch: | |
inputs: | |
release_branch: | |
type: string | |
description: Which Branch to release MCUs from? (change last number to desired number) | |
default: "new-feature/mcus/1" | |
release_version: | |
type: string | |
description: Tag to use for script run (i.e. v1.0.7) | |
default: "latest" | |
jobs: | |
upload_mcu_assets_test: | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
contents: write | |
packages: write | |
actions: read | |
steps: | |
- name: Authorize Mikroe Actions App | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ vars.MIKROE_ACTIONS }} | |
private-key: ${{ secrets.MIKROE_ACTIONS_KEY_AUTHORIZE }} | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.release_branch }} # Dynamically using the branch input | |
token: ${{ steps.app-token.outputs.token }} | |
- name: Add GitHub Actions credentials | |
run: | | |
git config user.name github-actions | |
git config user.email github-actions@github.com | |
- name: Fetch Main Branch | |
run: git fetch origin main | |
- name: Merge Main into ${{ github.event.inputs.release_branch }} | |
run: | | |
git merge origin/main --allow-unrelated-histories | |
# Check if there are changes to commit after the merge | |
if [ -n "$(git status --porcelain)" ]; then | |
echo "Merging main into ${{ github.event.inputs.release_branch }} branch created changes, committing them." | |
git add . | |
git commit -m "Merge main into ${{ github.event.inputs.release_branch }}" | |
git push | |
else | |
echo "No changes to commit after merging main." | |
fi | |
continue-on-error: false # Ensure the workflow stops if there's a conflict | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Cache Python packages | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Install Dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r scripts/requirements/shared.txt | |
pip install -r scripts/requirements/databases.txt | |
pip install -r scripts/requirements/support.txt | |
sudo apt-get install p7zip-full | |
- name: Update database for packaging | |
run: | | |
python -u scripts/reupload_databases.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ secrets.PROG_DEBUG_CODEGRIP }} ${{ secrets.PROG_DEBUG_MIKROPROG }} ${{ github.event.inputs.release_version }} "latest" "Test" "--mcus_only" "True" | |
- name: Upload MCUs Asset | |
env: | |
DB_PATH: ${{ secrets.DB_PATH }} | |
ES_HOST: ${{ secrets.ES_HOST }} | |
ES_USER: ${{ secrets.ES_USER }} | |
ES_PASSWORD: ${{ secrets.ES_PASSWORD }} | |
ES_INDEX: ${{ secrets.ES_INDEX_LIVE }} | |
ES_INDEX_LIVE: ${{ secrets.ES_INDEX_LIVE }} | |
run: python -u scripts/release_mcus.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.event.inputs.release_version }} | |
- name: Update and upload new database | |
run: | | |
python -u scripts/reupload_databases.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ secrets.PROG_DEBUG_CODEGRIP }} ${{ secrets.PROG_DEBUG_MIKROPROG }} ${{ github.event.inputs.release_version }} "latest" "Test" | |
- name: Run Index Script | |
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: | | |
echo "Indexing to Test." | |
python -u scripts/index.py ${{ github.repository }} ${{ secrets.GITHUB_TOKEN }} ${{ secrets.ES_INDEX_TEST }} "False" ${{ github.event.inputs.release_version }} "False" "False" | |
- name: Notify Mattermost - Test ready | |
env: | |
MATTERMOST_WEBHOOK_URL_SDK: ${{ secrets.MATTERMOST_WEBHOOK_URL_SDK }} | |
run: | | |
CURRENT_DATE=$(date +'%Y-%m-%d') # Get current date in YYYY-MM-DD format | |
MESSAGE="**MCU package update ready to test for $CURRENT_DATE.**\n> Test using latest NECTO dev\n + [LIN](https://software-update.mikroe.com/NECTOStudio7/development/necto/linux/NECTOInstaller.zip)\n + [MAC](https://software-update.mikroe.com/NECTOStudio7/development/necto/macos/NECTOInstaller.dmg)\n + [WIN](https://software-update.mikroe.com/NECTOStudio7/development/necto/win/NECTOInstaller.zip)" | |
curl -X POST -H 'Content-Type: application/json' \ | |
--data "{\"text\": \"$MESSAGE\"}" \ | |
$MATTERMOST_WEBHOOK_URL_SDK |