diff --git a/.github/workflows/build_debian_src.yml b/.github/workflows/build_debian_src.yml index b2fcb52624..714542047b 100644 --- a/.github/workflows/build_debian_src.yml +++ b/.github/workflows/build_debian_src.yml @@ -7,7 +7,11 @@ on: required: true inputs: series: - description: Ubuntu series to target + description: Ubuntu/Debian series to target + required: true + type: string + build_location: + description: Location where build will execute required: true type: string @@ -47,6 +51,8 @@ jobs: working-directory: meshtasticd run: | echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT + env: + BUILD_LOCATION: ${{ inputs.build_location }} id: version - name: Fetch libdeps, package debian source diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b7cf4bfc65..656a9287fb 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -27,3 +27,10 @@ jobs: ppa_repo: daily series: ${{ matrix.series }} secrets: inherit + + package-obs: + uses: ./.github/workflows/package_obs.yml + with: + obs_repo: meshtasticd + series: unstable + secrets: inherit diff --git a/.github/workflows/package_obs.yml b/.github/workflows/package_obs.yml new file mode 100644 index 0000000000..7e8cde5620 --- /dev/null +++ b/.github/workflows/package_obs.yml @@ -0,0 +1,110 @@ +name: Package for OpenSUSE Build Service + +on: + workflow_call: + secrets: + PPA_GPG_PRIVATE_KEY: + required: true + inputs: + obs_repo: + description: Meshtastic OBS repo to target + required: true + type: string + series: + description: Debian series to target + required: true + type: string + workflow_dispatch: + +permissions: + contents: write + packages: write + +jobs: + build-debian-src: + uses: ./.github/workflows/build_debian_src.yml + secrets: inherit + with: + series: ${{ inputs.series }} + build_location: obs + + package-obs: + runs-on: ubuntu-24.04 + needs: build-debian-src + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + path: meshtasticd + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - name: Install OpenSUSE Build Service deps + shell: bash + run: | + echo 'deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/openSUSE:Tools.list + curl -fsSL https://download.opensuse.org/repositories/openSUSE:Tools/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/openSUSE_Tools.gpg > /dev/null + sudo apt-get update -y --fix-missing + sudo apt-get install -y osc + + - name: Import GPG key + uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }} + id: gpg + + - name: Get release version string + working-directory: meshtasticd + run: | + echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT + env: + BUILD_LOCATION: obs + id: version + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src + merge-multiple: true + + - name: Display structure of downloaded files + run: ls -lah + + # - name: Configure osc + # shell: bash + # env: + # OBS_USERNAME: ${{ secrets.OBS_USERNAME }} + # OBS_PASSWORD: ${{ secrets.OBS_PASSWORD }} + # run: | + # mkdir -p ~/.config/osc + # echo -e "[https://api.opensuse.org]\n" > ~/.config/osc/osrc + # echo -e "user = $OBS_USERNAME" >> ~/.config/osc/osrc + # echo -e "pass = $OBS_PASSWORD" >> ~/.config/osc/osrc + # echo -e "aliases = obs" >> ~/.config/osc/osrc + # # Authenticate to OBS + # osc meta prj -v + + # - name: Upload Package to OBS + # shell: bash + # run: | + # # Define your OBS project and repository + # OBS_PROJECT="application:meshtastic" + # OBS_REPO="${{ inputs.obs_repo }}" + + # # Create a temporary directory for osc + # mkdir -p /tmp/osc/$OBS_PROJECT/$OBS_REPO + # cd /tmp/osc/$OBS_PROJECT/$OBS_REPO + + # # Initialize the package directory + # osc checkout $OBS_PROJECT $OBS_REPO + + # # Copy package files to the osc directory + # cp $GITHUB_WORKSPACE/*.dsc . + # cp $GITHUB_WORKSPACE/*.tar.xz . + + # # Add files to osc + # osc addremove + + # # Commit and push the changes + # osc commit -m "Automated upload from GitHub Actions" diff --git a/.github/workflows/package_ppa.yml b/.github/workflows/package_ppa.yml index 5705c6d49e..4145c9c2df 100644 --- a/.github/workflows/package_ppa.yml +++ b/.github/workflows/package_ppa.yml @@ -1,4 +1,4 @@ -name: Package Launchpad PPA +name: Package for Launchpad PPA on: workflow_call: @@ -26,6 +26,7 @@ jobs: secrets: inherit with: series: ${{ inputs.series }} + build_location: ppa package-ppa: runs-on: ubuntu-24.04 @@ -55,6 +56,8 @@ jobs: working-directory: meshtasticd run: | echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT + env: + BUILD_LOCATION: ppa id: version - name: Download artifacts diff --git a/.github/workflows/release_channels.yml b/.github/workflows/release_channels.yml index d572568de8..cdde74b2e9 100644 --- a/.github/workflows/release_channels.yml +++ b/.github/workflows/release_channels.yml @@ -2,7 +2,7 @@ name: Trigger release workflows upon Publish on: release: - types: [published] + types: [published, released] permissions: read-all @@ -18,3 +18,10 @@ jobs: ${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }} series: ${{ matrix.series }} secrets: inherit + + # package-obs: + # uses: ./.github/workflows/package_obs.yml + # with: + # obs_repo: meshtasticd + # series: ${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }} + # secrets: inherit diff --git a/bin/readprops.py b/bin/readprops.py index 8a1d3dc473..b6be67a39a 100644 --- a/bin/readprops.py +++ b/bin/readprops.py @@ -2,6 +2,7 @@ import subprocess import os run_number = os.getenv('GITHUB_RUN_NUMBER', '0') +build_location = os.getenv('BUILD_LOCATION', 'local') def readProps(prefsLoc): """Read the version of our project as a string""" @@ -30,15 +31,15 @@ def readProps(prefsLoc): # # short for 'dirty', we want to keep our verstrings source for protobuf reasons # suffix = sha + "-d" verObj["long"] = "{}.{}".format(verObj["short"], suffix) - verObj["deb"] = "{}-{}~ppa{}".format(verObj["short"], run_number, sha) + verObj["deb"] = "{}.{}~{}{}".format(verObj["short"], run_number, build_location, sha) except: # print("Unexpected error:", sys.exc_info()[0]) # traceback.print_exc() verObj["long"] = verObj["short"] - verObj["deb"] = "{}-{}~ppa".format(verObj["short"], run_number) + verObj["deb"] = "{}.{}~{}".format(verObj["short"], run_number, build_location) # print("firmware version " + verStr) return verObj -# print("path is" + ','.join(sys.path)) +# print("path is" + ','.join(sys.path)) \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 79c444aca8..035d5f0341 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -meshtasticd (2.5.19) UNRELEASED; urgency=medium +meshtasticd (2.5.19.0) UNRELEASED; urgency=medium * Initial packaging diff --git a/debian/ci_changelog.sh b/debian/ci_changelog.sh index 7925ad5eba..f7e875977a 100755 --- a/debian/ci_changelog.sh +++ b/debian/ci_changelog.sh @@ -2,6 +2,6 @@ export DEBEMAIL="github-actions[bot]@users.noreply.github.com" PKG_VERSION=$(python3 bin/buildinfo.py short) -dch --newversion "$PKG_VERSION-1" \ +dch --newversion "$PKG_VERSION.0" \ --distribution UNRELEASED \ "GitHub Actions Automatic version bump"