Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

meshtasticd-debian: Fix Beta promotions, deb versioning compliance, add OBS #5785

Merged
merged 1 commit into from
Jan 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/build_debian_src.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down
10 changes: 0 additions & 10 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,3 @@ jobs:
uses: trunk-io/trunk-action@782e83f803ca6e369f035d64c6ba2768174ba61b
with:
trunk-token: ${{ secrets.TRUNK_TOKEN }}
package-ppa:
strategy:
fail-fast: false
matrix:
series: [plucky, oracular, noble, jammy]
uses: ./.github/workflows/package_ppa.yml
with:
ppa_repo: daily
series: ${{ matrix.series }}
secrets: inherit
37 changes: 37 additions & 0 deletions .github/workflows/nightly_debian.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Nightly Debian Packaging
on:
schedule:
- cron: 0 9 * * *
workflow_dispatch:
push:
branches:
- master
paths:
- debian/**
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will run nightly and whenever a change is made to the debian packaging itself.

- .github/workflows/nightly_debian.yml
- .github/workflows/build_debian_src.yml
- .github/workflows/package_ppa.yml
- .github/workflows/package_obs.yml

permissions:
contents: write
packages: write

jobs:
package-ppa:
strategy:
fail-fast: false
matrix:
series: [plucky, oracular, noble, jammy]
uses: ./.github/workflows/package_ppa.yml
with:
ppa_repo: daily
series: ${{ matrix.series }}
secrets: inherit

package-obs:
uses: ./.github/workflows/package_obs.yml
with:
obs_repo: meshtasticd
series: unstable
secrets: inherit
103 changes: 103 additions & 0 deletions .github/workflows/package_obs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
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

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: 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/oscrc
# echo -e "user = $OBS_USERNAME" >> ~/.config/osc/oscrc
# echo -e "pass = $OBS_PASSWORD" >> ~/.config/osc/oscrc
# echo -e "aliases = obs" >> ~/.config/osc/oscrc
# # 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"
6 changes: 4 additions & 2 deletions .github/workflows/package_ppa.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Package Launchpad PPA
name: Package for Launchpad PPA

on:
workflow_call:
Expand All @@ -14,7 +14,6 @@ on:
description: Ubuntu series to target
required: true
type: string
workflow_dispatch:

permissions:
contents: write
Expand All @@ -26,6 +25,7 @@ jobs:
secrets: inherit
with:
series: ${{ inputs.series }}
build_location: ppa

package-ppa:
runs-on: ubuntu-24.04
Expand Down Expand Up @@ -55,6 +55,8 @@ jobs:
working-directory: meshtasticd
run: |
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
env:
BUILD_LOCATION: ppa
id: version

- name: Download artifacts
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/release_channels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Trigger release workflows upon Publish

on:
release:
types: [published]
types: [published, released]
Copy link
Member Author

@vidplace7 vidplace7 Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should correctly capture Beta "promotions", as the released event is triggered when an existing build is changed from a pre-release to a release.


permissions: read-all

Expand 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
9 changes: 5 additions & 4 deletions bin/readprops.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"""
Expand All @@ -11,8 +12,8 @@ def readProps(prefsLoc):
version = dict(config.items("VERSION"))
verObj = dict(
short="{}.{}.{}".format(version["major"], version["minor"], version["build"]),
deb="unset",
long="unset",
deb="unset",
)

# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
Expand All @@ -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))
2 changes: 1 addition & 1 deletion debian/changelog
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
meshtasticd (2.5.19) UNRELEASED; urgency=medium
meshtasticd (2.5.19.0) UNRELEASED; urgency=medium

* Initial packaging

Expand Down
2 changes: 1 addition & 1 deletion debian/ci_changelog.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Loading