Update library zip and submodules #179
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 library zip and submodules | |
on: | |
push: | |
branches: | |
- master | |
schedule: | |
- cron: '0 1 * * 0' | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
steps: | |
# check out the repo | |
- uses: actions/checkout@v2 | |
with: | |
ref: master | |
submodules: false | |
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token | |
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo | |
- name: Restore or Cache pip | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cache/pip | |
# if requirements.txt hasn't changed, then it will be a "cache hit" and pip will be restored | |
# if requirements.txt HAS changed, it will be a "cache miss" and a new cache of pip will be created if the job completes successfully | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: ${{ runner.os }}-pip- | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
# Semantic version range syntax or exact version of a Python version | |
python-version: '2.7' | |
- name: Install git-archive | |
run: pip install -U git-archive-all | |
- name: Install submodules | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "SRGDamia1" | |
git config --global push.default simple | |
git submodule init | |
git status | |
git submodule update --remote --recursive | |
git status | |
- name: Queue changes in submodules for commit | |
run: | | |
git add -A | |
git status | |
- name: Create submodule_status file | |
run: | | |
echo "::debug::Creating a new submodule status file.\n" | |
git submodule status --recursive > submodule_status.txt | |
git status | |
echo "::debug::Checking for changes in the submodule status file." | |
git diff HEAD -- submodule_status.txt | |
echo "::debug::Setting a new environment variable" | |
echo "submod_updated=$(git diff --name-only HEAD -- submodule_status.txt)" >> $GITHUB_ENV | |
echo "::debug::submodules updated = $submod_updated" | |
- name: Check env variable | |
run: echo submodules updated = $submod_updated | |
- name: Zip submodules | |
if: ${{ env.submod_updated }} | |
run: | | |
echo "::debug::Archiving Submodules." | |
git-archive-all --force-submodules libraries.zip | |
git status | |
- name: Remove git folders and files from zip | |
if: ${{ env.submod_updated }} | |
continue-on-error: true | |
run: | | |
echo "::debug::Deleting extra files to decrease size of zip" | |
echo "::debug::Removing Git folders" | |
zip -d -q libraries "*/.gitattributes" "*/.gitignore" "*/.gitmodules" "*/.github/*" "*.sh" "*/Doxyfile" "*/.travis.yml" | |
- name: Remove pdfs from the zip | |
if: ${{ env.submod_updated }} | |
continue-on-error: true | |
run: | | |
echo "::debug::Removing other pdfs" | |
zip -d -q libraries "*/doc/*.pdf" | |
- name: Remove TinyGSM extras from the zip | |
if: ${{ env.submod_updated }} | |
continue-on-error: true | |
run: | | |
echo "::debug::Removing TinyGSM extras" | |
zip -d -q libraries "*/TinyGSM/extras/*" | |
- name: Remove YosemitechModbus extras from the zip | |
if: ${{ env.submod_updated }} | |
continue-on-error: true | |
run: | | |
echo "::debug::Removing YosemitechModbus extras" | |
zip -d -q libraries "*/YosemitechModbus/doc/*" | |
- name: Remove SDFat extras from the zip | |
if: ${{ env.submod_updated }} | |
continue-on-error: true | |
run: | | |
echo "::debug::Removing SDFat extras" | |
zip -d -q libraries "*/SdFat/extras/*" | |
- name: Queue zip | |
if: ${{ env.submod_updated }} | |
run: | | |
echo "::debug::Queueing changes for commit" | |
git add -A; | |
echo "::debug::Git status" | |
git status | |
echo "::debug::Setting a new environment variable" | |
git diff --name-only HEAD -- libraries.zip | |
echo "is_changed=$(git diff --name-only HEAD -- libraries.zip)" >> $GITHUB_ENV | |
echo "::debug::zip changed = $is_changed" | |
- name: Check env variable | |
run: echo zip changed = $is_changed | |
- name: Commit changes to master | |
if: ${{ env.is_changed }} | |
run: | | |
git commit -m "Updated submodules and zip via Github Action (${{ github.workflow }} ${{ github.event_name }} ${{ github.run_number }} ) [ci skip]"; | |
- name: Push changes to master | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.SARA_PUSH_TOKEN }} | |
branch: master | |
- name: Checkout platformio branch | |
run: | | |
echo "::debug::Stashing changes before switching branches" | |
git stash | |
echo "::debug::Checking out the platformio branch" | |
git checkout platformio | |
git status | |
echo "::debug::Checking out the library manifest from the master branch" | |
git checkout master -- library.json | |
git status | |
echo "::debug::Queueing changes to the manifest for commit" | |
git add library.json | |
git status | |
echo "::debug::Setting a new environment variable" | |
git diff --name-only HEAD -- library.json | |
echo "manifest_changed=$(git diff --name-only HEAD -- library.json)" >> $GITHUB_ENV | |
echo "::debug::manifest changed = $manifest_changed" | |
- name: Check env variable | |
run: echo manifest changed = $manifest_changed | |
- name: Commit changes to platformio branch | |
if: ${{ env.manifest_changed }} | |
run: git commit -m "Updated library.json via Github Action (${{ github.workflow }} ${{ github.event_name }} ${{ github.run_number }} ) [ci skip]"; | |
- name: Push to platformio branch | |
if: ${{ env.manifest_changed }} | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.SARA_PUSH_TOKEN }} | |
branch: platformio |