diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 1354f3aa..3fb1e4bc 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1 +1,4 @@ -{".":"4.2.1"} +{ + ".": "4.2.1", + "installer": "1.7.0" +} diff --git a/.github/release-please-config.json b/.github/release-please-config.json index 25a990ea..b95a0b4e 100644 --- a/.github/release-please-config.json +++ b/.github/release-please-config.json @@ -4,13 +4,30 @@ "include-component-in-tag": false, "pull-request-title-pattern": "chore: Release ${version}", "always-update": true, + "separate-pull-requests": true, "skip-github-release": false, "skip-changelog": false, "skip-pull-request": false, "packages": { ".": { "release-type": "node", - "exclude-paths": ["installer"] + "exclude-paths": [ + "installer" + ] + }, + "installer": { + "component": "installer", + "release-type": "go", + "include-component-in-tag": true, + "pull-request-title-pattern": "chore: Release Installer ${version}", + "always-update": true, + "skip-github-release": false, + "skip-changelog": false, + "skip-pull-request": false, + "extra-files": [ + "get.sh", + "get.ps1" + ] } } -} \ No newline at end of file +} diff --git a/.github/workflows/installer-release.yaml b/.github/workflows/installer-release.yaml deleted file mode 100644 index 7fda3b14..00000000 --- a/.github/workflows/installer-release.yaml +++ /dev/null @@ -1,293 +0,0 @@ -name: Installer Release - -on: - workflow_dispatch: - inputs: - dry_run: - description: 'Perform a dry run (no actual release)' - type: boolean - default: false - required: false - -env: - GO_VERSION: '1.24.2' - -permissions: - contents: write - issues: write - pull-requests: write - -jobs: - calculate-version: - name: Calculate Release Version - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./installer/go - outputs: - version: ${{ steps.semantic.outputs.new_release_version }} - new-release-published: ${{ steps.semantic.outputs.new_release_published }} - - steps: - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Setup Node.js - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: '24' - - - name: Calculate next version - id: semantic - uses: cycjimmy/semantic-release-action@b12c8f6015dc215fe37bc154d4ad456dd3833c90 # v4.1.1 - with: - semantic_version: 23.0.3 - working_directory: ./installer/go - extra_plugins: | - @semantic-release/changelog@6.0.3 - @semantic-release/github@10.0.7 - dry_run: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - build-artifacts: - name: Build Multi-Platform Binaries - runs-on: ubuntu-latest - needs: calculate-version - if: needs.calculate-version.outputs.new-release-published == 'true' || github.event.inputs.dry_run == 'true' - defaults: - run: - working-directory: ./installer/go - - strategy: - fail-fast: false - matrix: - include: - - goos: linux - goarch: amd64 - output: flowfuse-device-installer-linux-amd64 - - goos: linux - goarch: arm64 - output: flowfuse-device-installer-linux-arm64 - - goos: linux - goarch: arm - output: flowfuse-device-installer-linux-arm - - goos: windows - goarch: amd64 - output: flowfuse-device-installer-windows-amd64.exe - - goos: darwin - goarch: amd64 - output: flowfuse-device-installer-darwin-amd64 - - goos: darwin - goarch: arm64 - output: flowfuse-device-installer-darwin-arm64 - - steps: - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up Go - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0 - with: - go-version: ${{ env.GO_VERSION }} - cache-dependency-path: "**/go.sum" - - - name: Download dependencies - run: go mod download - - - name: Build binary for ${{ matrix.goos }}/${{ matrix.goarch }} - env: - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} - VERSION: ${{ needs.calculate-version.outputs.version }} - CGO_ENABLED: 0 - run: | - echo "Building ${{ matrix.output }} for ${{ matrix.goos }}/${{ matrix.goarch }}..." - echo "Using version: ${VERSION:-${{ github.sha }}}" - - # Create output directory structure - mkdir -p artifacts - - # Build with version from semantic-release - go build -ldflags "-X main.instVersion=${VERSION:-${{ github.sha }}} -s -w" -o artifacts/${{ matrix.output }} main.go - - # Verify the binary was created - if [ ! -f "artifacts/${{ matrix.output }}" ]; then - echo "❌ Binary was not created: ${{ matrix.output }}" - exit 1 - fi - - echo "✅ Binary created: ${{ matrix.output }}" - ls -la artifacts/${{ matrix.output }} - - # Test the version output (only for native builds to avoid cross-compilation issues) - if [[ "${{ matrix.goos }}" == "linux" && "${{ matrix.goarch }}" == "amd64" ]]; then - echo "Testing version output:" - ./artifacts/${{ matrix.output }} --version || echo "Version test completed" - fi - - - name: Upload build artifacts - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ matrix.output }} - path: installer/go/artifacts/${{ matrix.output }} - retention-days: 1 - - release: - name: Release - runs-on: ubuntu-latest - needs: [calculate-version, build-artifacts] - if: needs.calculate-version.outputs.new-release-published == 'true' && github.event.inputs.dry_run != 'true' - defaults: - run: - working-directory: ./installer/go - - steps: - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 # Required for semantic-release to analyze full commit history - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Setup Node.js - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: '24' - - - name: Download all artifacts - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - path: artifacts - pattern: flowfuse-device-installer-* - merge-multiple: true - - - name: Prepare artifacts for release - run: | - echo "Preparing release artifacts..." - mkdir -p release-artifacts - - # Move and verify all artifacts - find ../../artifacts -name "flowfuse-device-installer-*" -type f -exec cp {} release-artifacts/ \; - - echo "Available artifacts:" - ls -la release-artifacts/ - - # Verify we have all expected binaries - expected_files=( - "flowfuse-device-installer-linux-amd64" - "flowfuse-device-installer-linux-arm64" - "flowfuse-device-installer-linux-arm" - "flowfuse-device-installer-windows-amd64.exe" - "flowfuse-device-installer-darwin-amd64" - "flowfuse-device-installer-darwin-arm64" - ) - - missing_files=() - for file in "${expected_files[@]}"; do - if [ ! -f "release-artifacts/$file" ]; then - missing_files+=("$file") - fi - done - - if [ ${#missing_files[@]} -ne 0 ]; then - echo "❌ Missing expected artifacts:" - printf '%s\n' "${missing_files[@]}" - exit 1 - fi - - echo "✅ All expected artifacts are present" - - - name: Perform release - uses: cycjimmy/semantic-release-action@b12c8f6015dc215fe37bc154d4ad456dd3833c90 # v4.1.1 - with: - semantic_version: 23.0.3 - working_directory: ./installer/go - extra_plugins: | - @semantic-release/changelog@6.0.3 - @semantic-release/github@10.0.7 - dry_run: false - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - update-installer-scripts: - name: Update Download Scripts - runs-on: ubuntu-latest - needs: [calculate-version, release] - if: needs.calculate-version.outputs.new-release-published == 'true' && github.event.inputs.dry_run != 'true' - - steps: - - name: Generate a token - id: generate_token - uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 - with: - app-id: ${{ secrets.GH_BOT_APP_ID }} - private-key: ${{ secrets.GH_BOT_APP_KEY }} - - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - token: ${{ steps.generate_token.outputs.token }} - - - name: Configure Git - run: | - git config user.name "$GitHub Actions Bot" - git config user.email "github.actions@users.noreply.github.com" - - - name: Update scripts - run: | - VERSION="${{ needs.calculate-version.outputs.version }}" - echo "Updating installer scripts to version: $VERSION" - - # Update scripts - sed -i "s/^RELEASE=.*/RELEASE=\"$VERSION\"/" ./installer/get.sh - sed -i "s/^\$RELEASE = .*/\$RELEASE = \"$VERSION\"/" ./installer/get.ps1 - - # Verify changes - echo "Updated get.sh:" - grep "^RELEASE=" ./installer/get.sh - echo "Updated get.ps1:" - grep "^\$RELEASE = " ./installer/get.ps1 - - - name: Commit and push changes - env: - GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} - run: | - VERSION="${{ needs.calculate-version.outputs.version }}" - - # Ensure there are changes to commit - if git diff --quiet; then - echo "No changes to commit" - exit 0 - fi - - # Stage, commit, and push changes - git add ./installer/get.sh ./installer/get.ps1 - git commit -m "chore: update installer scripts to version $VERSION" - git push origin main - - notify-slack: - name: Notify about release failure - needs: [calculate-version, build-artifacts, release, update-installer-scripts] - if: failure() - runs-on: ubuntu-latest - - steps: - - name: Notify Slack - uses: FlowFuse/github-actions-workflows/actions/slack_notification@slack_notification/v1 - with: - bot-token: ${{ secrets.SLACK_GHBOT_TOKEN }} - mode: channel - blocks: | - [ - { "type": "header", "text": { "type": "plain_text", "text": ":x: ${{ github.workflow }} workflow failed", "emoji": true } }, - { "type": "divider" }, - { "type": "section", "text": { "type": "mrkdwn", "text": "<${{ github.server_url }}/${{ github.repository }}/actions/workflows/installer-release.yaml|${{ github.workflow }}> workflow failed to complete successfully." } }, - { "type": "section", "text": { "type": "mrkdwn", "text": "*Workflow run:*\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View>" } } - ] diff --git a/.github/workflows/installer-scripts-release.yaml b/.github/workflows/installer-scripts-release.yaml deleted file mode 100644 index 0017e9ba..00000000 --- a/.github/workflows/installer-scripts-release.yaml +++ /dev/null @@ -1,55 +0,0 @@ -name: Publish Installer Scripts to GitHub Pages - -on: - push: - branches: [ main ] - paths: - - 'installer/get.ps1' - - 'installer/get.sh' - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - publish: - name: Publish Installer Scripts to GitHub Pages - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - - name: Setup Pages - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 - - - name: Prepare installer scripts for GitHub Pages - run: | - echo "Preparing installer scripts for deployment..." - mkdir -p _site - cp installer/get.ps1 _site/ - cp installer/get.sh _site/ - echo "Files in _site directory:" - ls -la _site/ - - - name: Upload artifact - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 - - - name: Publish to GitHub Pages - id: publish - uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 - - - name: Output deployment URL - run: | - echo "🚀 Installer scripts have been published to GitHub Pages!" - echo "📍 URL: ${{ steps.publish.outputs.page_url }}" - echo "" - echo "📥 Direct download links:" - echo " Linux/macOS: ${{ steps.publish.outputs.page_url }}get.sh" - echo " Windows: ${{ steps.publish.outputs.page_url }}get.ps1" diff --git a/.github/workflows/release-installer.yaml b/.github/workflows/release-installer.yaml new file mode 100644 index 00000000..04d04210 --- /dev/null +++ b/.github/workflows/release-installer.yaml @@ -0,0 +1,178 @@ +name: Installer Release + +on: + push: + tags: + - "installer-v*.*.*" + +env: + GO_VERSION: '1.24.2' + +permissions: + contents: write + +jobs: + build-artifacts: + name: Build Multi-Platform Binaries + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./installer/go + + strategy: + fail-fast: false + matrix: + include: + - goos: linux + goarch: amd64 + ext: '' + - goos: linux + goarch: arm64 + ext: '' + - goos: linux + goarch: arm + ext: '' + - goos: windows + goarch: amd64 + ext: '.exe' + - goos: darwin + goarch: amd64 + ext: '' + - goos: darwin + goarch: arm64 + ext: '' + + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Set up Go + uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0 + with: + go-version: ${{ env.GO_VERSION }} + cache-dependency-path: "**/go.sum" + + - name: Download dependencies + run: go mod download + + - name: Build binary for ${{ matrix.goos }}/${{ matrix.goarch }} + env: + GOOS: ${{ matrix.goos }} + GOARCH: ${{ matrix.goarch }} + CGO_ENABLED: 0 + TAG_NAME: ${{ github.ref_name }} + run: | + VERSION="${TAG_NAME#installer-v}" + ARTIFACT="flowfuse-device-installer-${VERSION}-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.ext }}" + echo "ARTIFACT=${ARTIFACT}" >> "$GITHUB_ENV" + echo "Building ${ARTIFACT}" + + mkdir -p artifacts + go build -ldflags "-X main.instVersion=${VERSION} -s -w" -o "artifacts/${ARTIFACT}" main.go + + ls -la "artifacts/${ARTIFACT}" + + # Smoke-test the version output on the native build only + if [ "${{ matrix.goos }}-${{ matrix.goarch }}" = "linux-amd64" ]; then + "./artifacts/${ARTIFACT}" --version + fi + + - name: Upload artifacts + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ env.ARTIFACT }} + path: installer/go/artifacts/${{ env.ARTIFACT }} + retention-days: 1 + + publish-artifacts: + name: Add Binaries to Release + runs-on: ubuntu-latest + needs: [build-artifacts] + + steps: + - name: Download artifacts + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + path: artifacts + pattern: flowfuse-device-installer-* + merge-multiple: true + + - name: Add artifacts as release assets + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG_NAME: ${{ github.ref_name }} + run: | + ls -la artifacts/ + gh release upload "$TAG_NAME" artifacts/* --clobber --repo "${{ github.repository }}" + + # release-please hardcodes the release name as ": v" and there is no possibility to override it; + # rename it to match the titles used before the release-please adoption + - name: Set release title + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG_NAME: ${{ github.ref_name }} + run: | + VERSION="${TAG_NAME#installer-v}" + gh release edit "$TAG_NAME" --title "Installer v${VERSION}" \ + --repo "${{ github.repository }}" + + + publish-installer-scripts: + name: Publish Installer Scripts to GitHub Pages + runs-on: ubuntu-latest + permissions: + contents: read + pages: write + id-token: write + + steps: + - name: Checkout code + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Setup Pages + uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 + + - name: Prepare installer scripts for GitHub Pages + run: | + echo "Preparing installer scripts for deployment..." + mkdir -p _site + cp installer/get.ps1 _site/ + cp installer/get.sh _site/ + echo "Files in _site directory:" + ls -la _site/ + + - name: Upload artifact + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 + + - name: Publish to GitHub Pages + id: publish + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 + + - name: Output deployment URL + run: | + echo "🚀 Installer scripts have been published to GitHub Pages!" + echo "📍 URL: ${{ steps.publish.outputs.page_url }}" + echo "" + echo "📥 Direct download links:" + echo " Linux/macOS: ${{ steps.publish.outputs.page_url }}get.sh" + echo " Windows: ${{ steps.publish.outputs.page_url }}get.ps1" + + notify-slack: + name: Notify about release failure + needs: [build-artifacts, publish-artifacts, publish-installer-scripts] + if: failure() + runs-on: ubuntu-latest + + steps: + - name: Notify Slack + uses: FlowFuse/github-actions-workflows/actions/slack_notification@slack_notification/v1 + with: + bot-token: ${{ secrets.SLACK_GHBOT_TOKEN }} + mode: channel + blocks: | + [ + { "type": "header", "text": { "type": "plain_text", "text": ":x: ${{ github.workflow }} workflow within ${{ github.repository }} failed", "emoji": true } }, + { "type": "divider" }, + { "type": "section", "text": { "type": "mrkdwn", "text": "<${{ github.server_url }}/${{ github.repository }}/actions/workflows/release-installer.yaml|${{ github.workflow }}> workflow failed to complete successfully." } }, + { "type": "section", "text": { "type": "mrkdwn", "text": "*Workflow run:*\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View>" } } + ] diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml index 5be895f4..8f5e3fc2 100644 --- a/.github/workflows/release-please.yaml +++ b/.github/workflows/release-please.yaml @@ -13,6 +13,7 @@ permissions: jobs: release-please: + name: Run Release Please runs-on: ubuntu-latest steps: - name: Generate a token diff --git a/installer/README.md b/installer/README.md index 6c3a96be..ad1ad737 100644 --- a/installer/README.md +++ b/installer/README.md @@ -230,32 +230,44 @@ make clean ### Commit Message Format -This project uses [Conventional Commits](https://www.conventionalcommits.org/) -with Angular preset for automated versioning and releases. -**All commits that affect the installer must use the `installer` scope** to be included in releases. +This project uses [Conventional Commits](https://www.conventionalcommits.org/) for automated +versioning and releases, driven by [Release Please](https://github.com/googleapis/release-please). + +The installer is configured as a separate Release Please package rooted at `installer/`, so +**changes are assigned to the installer release by the paths they touch, not by the commit scope**. +Any commit that modifies files under `installer/` is picked up for the installer release; commits +touching other paths are excluded from it and feed the Device Agent release instead. #### Commit Message Structure ``` -(installer): +[()]: [optional body] [optional footer(s)] ``` +The scope is optional and does not influence the release. Using `installer` as the scope is still +encouraged, as it makes the changelog entries easier to read. + #### Supported Types and Release Impact | Type | Description | Release Impact | |------|-------------|----------------| -| `feat(installer)` | New feature | Minor version bump | -| `fix(installer)` | Bug fix | Patch version bump | -| `perf(installer)` | Performance improvement | Patch version bump | -| `refactor(installer)` | Code refactoring | Patch version bump | -| `chore(installer)` | Maintenance tasks | Patch version bump | -| `docs(installer)` | Documentation changes | Patch version bump | -| `style(installer)` | Code style changes | Patch version bump | -| `test(installer)` | Test changes | Patch version bump | +| `feat` | New feature | Minor version bump | +| `fix` | Bug fix | Patch version bump | +| `perf` | Performance improvement | Patch version bump | +| `deps` | Dependency update | Patch version bump | +| `refactor` | Code refactoring | No release | +| `docs` | Documentation changes | No release | +| `chore` | Maintenance tasks | No release | +| `style` | Code style changes | No release | +| `test` | Test changes | No release | + +Types marked as "No release" do not trigger a version bump on their own and are hidden from the +changelog. They are still released along with any `feat`/`fix`/`perf` change present in the same +release. #### Breaking Changes @@ -284,20 +296,36 @@ feat(installer)!: change default service user from root to flowfuse BREAKING CHANGE: The default service user has changed from root to flowfuse for improved security ``` -**Important:** Commits without the `installer` scope will not trigger releases or appear in the changelog. - ## Release Process > [!IMPORTANT] -> A release of the Device Agent does not requre a release of the Device Agent Installer. +> A release of the Device Agent does not require a release of the Device Agent Installer. > > The Device Agent Installer release is not coupled in any way with the Device Agent one. -To release a new version of the FlowFuse Device Agent Installer, follow these steps: -1. Ensure all changes are committed and follow the commit message format outlined above. -2. Manually trigger the [Installer Release](https://github.com/FlowFuse/device-agent/actions/workflows/installer-release.yaml) workflow -3. The worflow will: - * Build the installer for all platforms - * Create a new release on GitHub with the changelog - * Upload the built binaries to the release assets - * Updates the `get.sh` and `get.ps1` scripts with the version tag +The installer is released by [Release Please](https://github.com/googleapis/release-please), the +same tool used for the Device Agent package. Both are declared in +[`.github/release-please-config.json`](../.github/release-please-config.json) as separate packages +with separate versions, changelogs and release pull requests, tracked in +[`.github/.release-please-manifest.json`](../.github/.release-please-manifest.json). + +Installer releases are tagged `installer-v` (e.g. `installer-v1.7.0`), while Device Agent +releases use a plain `v` tag. + +### Releasing a new version + +1. Merge changes under `installer/` into `main`, using the commit message format described above. +2. The `Prepare release` workflow ([`release-please.yaml`](../.github/workflows/release-please.yaml)) + runs on every push to `main` and opens (or updates) a `chore: Release Installer ` + pull request containing the version bump, the updated `installer/CHANGELOG.md` and the version + references in `get.sh` and `get.ps1`. +3. Review and merge that pull request when you want to cut the release. Release Please then creates + the `installer-v` tag and the corresponding GitHub release with the changelog. +4. The tag triggers the `Installer Release` workflow + ([`release-installer.yaml`](../.github/workflows/release-installer.yaml)), which: + * builds the installer binaries for all supported platforms and architectures, + * uploads them as assets of the release created by Release Please, + * publishes the `get.sh` and `get.ps1` scripts to GitHub Pages. + +No manual workflow trigger is required. Merging the release pull request is the only step that +starts a release. diff --git a/installer/get.ps1 b/installer/get.ps1 index 9af9f0bf..1dcacb31 100644 --- a/installer/get.ps1 +++ b/installer/get.ps1 @@ -9,7 +9,7 @@ $InstallDir = (Get-Location).Path # GitHub repository information $REPO_OWNER = "FlowFuse" $REPO_NAME = "device-agent" -$RELEASE = "1.7.0" +$RELEASE = "1.7.0" # x-release-please-version $RELEASE_TAG = "installer-v$RELEASE" $BINARY_PREFIX = "flowfuse-device-installer" diff --git a/installer/get.sh b/installer/get.sh index fbab6d5a..cf6e73dc 100755 --- a/installer/get.sh +++ b/installer/get.sh @@ -9,7 +9,7 @@ set -e # GitHub repository information REPO_OWNER="FlowFuse" REPO_NAME="device-agent" -RELEASE="1.7.0" +RELEASE="1.7.0" # x-release-please-version RELEASE_TAG="installer-v$RELEASE" BINARY_PREFIX="flowfuse-device-installer"