diff --git a/.github/workflows/create-release-on-tag.yml b/.github/workflows/create-release-on-tag.yml new file mode 100644 index 0000000..970cd14 --- /dev/null +++ b/.github/workflows/create-release-on-tag.yml @@ -0,0 +1,96 @@ +name: Build and create a release when tag is pushed + +# Only deploy when a new tag is pushed +on: + push: + tags: + - "v*.*-alpha" + - "v*.*.*" + # branches: [ master ] + # pull_request: + # branches: [ master ] + +# Must match the project() name in CMakeLists.txt +env: + APP_NAME: sms + +# Allow this workflow to write back to the repository +permissions: + contents: write + +# Build binary and send to releases +jobs: + build-release: + runs-on: ubuntu-latest + name: Build and release + steps: + + - name: Install dependencies + run: | + sudo apt update && \ + sudo apt install -y git python3 && \ + sudo apt install -y cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential libusb-1.0-0-dev + + - name: Check out this repository + uses: actions/checkout@v3 + + - name: Print Working directory + run: echo $HOME && pwd && ls -la + + - name: Update line containing pico_set_program_version() in CMakelists.txt with tag name. + run: | + # Extract the tag name that triggered the event and remove the 'refs/tags/' prefix + input_string=${{ github.ref }} + prefix="refs/tags/" + tag="No versioninfo found" + if [[ $input_string == $prefix* ]]; then + echo "The string starts with 'refs/tags/'." + tag="${input_string#$prefix}" + echo "Tag is ${tag}" + sed -i "s/^[[:space:]]*pico_set_program_version(.*/pico_set_program_version(${{ env.APP_NAME }} \"$tag\")/" CMakeLists.txt + else + echo "The string does not start with 'refs/tags/'." + fi + grep "pico_set_program_version" CMakeLists.txt + + - name: Install Pico SDk + run: | + cd $HOME && \ + git clone https://github.com/raspberrypi/pico-sdk.git --branch master && \ + cd pico-sdk/ && \ + git submodule update --init + + - name: Install picotool + run: | + cd $HOME && \ + export PICO_SDK_PATH=$HOME/pico-sdk && \ + git clone https://github.com/raspberrypi/picotool.git --branch master && \ + cd picotool/ && \ + mkdir build && \ + cd build && \ + cmake .. && \ + make + + - name: Build the project + run: | + export PICO_SDK_PATH=$HOME/pico-sdk && \ + mkdir build && cd build && \ + cmake .. && \ + make + + - name: Show release info using picotool + run: | + export PICO_SDK_PATH=$HOME/pico-sdk && \ + $HOME/picotool/build/picotool info build/${{ env.APP_NAME }}.uf2 && \ + echo "-----------------------------" + + - name: Create release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + build/${{ env.APP_NAME }}.uf2 + + body_path: CHANGELOG.md + +