Update GitHub Actions #80
Workflow file for this run
This file contains hidden or 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: linux | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| release: | |
| types: [published] | |
| env: | |
| ARTIFACTORY_ACCESS_TOKEN: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} | |
| build_dir: "Build" | |
| package: EphysSocket-linux | |
| jobs: | |
| check-semver: | |
| runs-on: ubuntu-22.04 | |
| if: github.event_name != 'release' | |
| steps: | |
| - name: Checkout current version | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Find previous release | |
| id: previous-release | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| echo "RELEASE_NAME=$(gh release list -L 1 --json tagName -q .[0].tagName)" >> $GITHUB_OUTPUT | |
| - name: Verify release name | |
| id: verify-release | |
| if: steps.previous-release.outputs.RELEASE_NAME == '' | |
| run: | | |
| echo "No previous releases found. Skipping the semver check." | |
| exit 0 | |
| - name: Checkout last release version | |
| if: steps.previous-release.outputs.RELEASE_NAME != '' | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ steps.previous-release.outputs.RELEASE_NAME }} | |
| path: last-release | |
| sparse-checkout: | | |
| Source/OpenEphysLib.cpp | |
| sparse-checkout-cone-mode: false | |
| - name: Extract Versions | |
| if: steps.previous-release.outputs.RELEASE_NAME != '' | |
| id: extract-versions | |
| run: | | |
| echo "CURRENT_VERSION=$(cat ./Source/OpenEphysLib.cpp | grep -w -e 'info->libVersion' | grep -Eo "[0-9]+.[0-9]+.[0-9]+")" >> $GITHUB_OUTPUT | |
| echo "PREVIOUS_VERSION=$(cat ./last-release/Source/OpenEphysLib.cpp | grep -w -e 'info->libVersion' | grep -Eo "[0-9]+.[0-9]+.[0-9]+")" >> $GITHUB_OUTPUT | |
| - name: Setup Python | |
| if: steps.previous-release.outputs.RELEASE_NAME != '' | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10.12" | |
| - name: Install semver | |
| if: steps.previous-release.outputs.RELEASE_NAME != '' | |
| run: python -m pip install semver | |
| - name: Compare Versions | |
| if: steps.previous-release.outputs.RELEASE_NAME != '' | |
| run: | | |
| version_current=${{ steps.extract-versions.outputs.CURRENT_VERSION }} | |
| version_release=${{ steps.extract-versions.outputs.PREVIOUS_VERSION }} | |
| echo "Current Version: $version_current" | |
| echo "Release Version: $version_release" | |
| if [ ! $(python -c "import semver; print(semver.compare(\"$version_current\", \"$version_release\"))") == 1 ]; then | |
| echo "::error title=Invalid version number::Version number must be increased" | |
| exit 1 | |
| fi | |
| build-linux: | |
| needs: [check-semver] | |
| if: always() && !failure() && !cancelled() | |
| runs-on: [ubuntu-22.04] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup | |
| run: | | |
| sudo apt update | |
| cd ../.. | |
| git clone https://github.com/open-ephys/plugin-GUI.git --branch main | |
| sudo ./plugin-GUI/Resources/Scripts/install_linux_dependencies.sh | |
| cd plugin-GUI/$build_dir && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .. | |
| - name: build | |
| id: build | |
| run: | | |
| cd $build_dir | |
| cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .. | |
| make | |
| - name: Collect artifact | |
| uses: actions/upload-artifact@v4 | |
| if: steps.build.outcome == 'success' && always() | |
| with: | |
| name: Artifact | |
| if-no-files-found: error | |
| path: ${{ env.build_dir }} | |
| deploy-linux: | |
| needs: [build-linux] | |
| runs-on: ubuntu-22.04 | |
| if: github.event_name == 'release' && always() && !failure() && !cancelled() | |
| steps: | |
| - name: Download build folder | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Artifact | |
| path: ${{ env.build_dir }} | |
| - name: deploy | |
| run: | | |
| plugin_api=$(grep -rnw ../../plugin-GUI/Source -e '#define PLUGIN_API_VER' | grep -Eo "[0-9]*" | tail -1) | |
| tag=$(grep -w Source/OpenEphysLib.cpp -e 'info->libVersion' | grep -Eo "[0-9]+.[0-9]+.[0-9]+") | |
| new_plugin_ver=$tag-API$plugin_api | |
| mkdir plugins | |
| cp -r $build_dir/*.so plugins | |
| zipfile=${package}_${new_plugin_ver}.zip | |
| zip -r -X $zipfile plugins | |
| curl -H "X-JFrog-Art-Api:$ARTIFACTORY_ACCESS_TOKEN" -T $zipfile "https://openephys.jfrog.io/artifactory/EphysSocket-plugin/linux/$zipfile" |