mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Complete redesign of Subsurface version numbers
- for now all versions start with v6.0 - CICD builds use the monolithic build number as patch level, e.g. v6.0.12345 - local builds use the following algorithm - find the newest commit with a CICD build number that is included in the working tree - count the number of commits in the working tree since that commit - if there are no commits since the last CICD build, the local build version will be v6.0.12345-local - if there are N commits since the last CICD build, it will be v6.0.12345-N-local - test builds in the CICD that don't create artifacts simply use a dummy release in order to not incorrectly increment the build number and also not to waste time and resources by manually checking out the nightly-build repo for each of these builds. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8a2dd8db74
commit
62477d8c65
24 changed files with 295 additions and 126 deletions
21
.github/workflows/android.yml
vendored
21
.github/workflows/android.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
|||
uses: actions/checkout@v1
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: build_nr
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
|
@ -31,6 +31,16 @@ jobs:
|
|||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: store dummy version and build number for pull request
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: run build
|
||||
id: build
|
||||
|
@ -59,15 +69,6 @@ jobs:
|
|||
curl -q https://raw.githubusercontent.com/subsurface/nightly-builds/main/latest-subsurface-buildnumber > buildnr.dat
|
||||
OUTPUT_DIR=$GITHUB_WORKSPACE bash -x ./subsurface/packaging/android/qmake-build.sh
|
||||
|
||||
- name: create version number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
gitversion=$(bash scripts/get-version win)
|
||||
latest=$(cat ../nightly-builds/latest-subsurface-buildnumber)
|
||||
version="$gitversion-$latest"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
# only publish a 'release' on push events (those include merging a PR)
|
||||
- name: upload binaries
|
||||
if: github.event_name == 'push'
|
||||
|
|
2
.github/workflows/coverity-scan.yml
vendored
2
.github/workflows/coverity-scan.yml
vendored
|
@ -44,5 +44,5 @@ jobs:
|
|||
email: glance@acc.umu.se
|
||||
command: subsurface/scripts/build.sh -desktop -build-with-webkit
|
||||
working-directory: ${{ github.workspace }}/..
|
||||
version: $(/scripts/get-version linux)
|
||||
version: $(/scripts/get-version)
|
||||
description: Automatic scan on github actions
|
||||
|
|
21
.github/workflows/fedora-copr-build.yml
vendored
21
.github/workflows/fedora-copr-build.yml
vendored
|
@ -15,6 +15,25 @@ jobs:
|
|||
- name: Check out sources
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||
# that way the script doesn't need the password
|
||||
git clone -b main https://github.com/subsurface/nightly-builds
|
||||
cd nightly-builds
|
||||
git remote set-url origin "$url"
|
||||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup API token for copr-cli
|
||||
env:
|
||||
API_TOKEN: ${{ secrets.COPR_TOKEN }}
|
||||
|
@ -43,4 +62,4 @@ jobs:
|
|||
run: |
|
||||
cd ..
|
||||
bash -x subsurface/packaging/copr/make-package.sh post
|
||||
|
||||
|
||||
|
|
9
.github/workflows/ios.yml
vendored
9
.github/workflows/ios.yml
vendored
|
@ -13,16 +13,25 @@ jobs:
|
|||
steps:
|
||||
- name: switch to Xcode 11
|
||||
run: sudo xcode-select -s "/Applications/Xcode_11.7.app"
|
||||
|
||||
- name: checkout sources
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: setup Homebrew
|
||||
run: brew install autoconf automake libtool pkg-config
|
||||
|
||||
- name: set our Qt build
|
||||
run: |
|
||||
env
|
||||
curl -L --output Qt-5.14.1-ios.tar.xz https://f002.backblazeb2.com/file/Subsurface-Travis/Qt-5.14.1-ios.tar.xz
|
||||
mkdir -p $HOME/Qt
|
||||
xzcat Qt-5.14.1-ios.tar.xz | tar -x -C $HOME/Qt -f -
|
||||
|
||||
- name: store dummy version and build number for test build
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-test-build" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: build Subsurface-mobile for iOS
|
||||
env:
|
||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
||||
|
|
|
@ -31,6 +31,11 @@ jobs:
|
|||
qtpositioning5-dev qtscript5-dev qttools5-dev qttools5-dev-tools \
|
||||
qtquickcontrols2-5-dev xvfb libbluetooth-dev libmtp-dev
|
||||
|
||||
- name: store dummy version and build number for pull request
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "6.0.100" > latest-subsurface-buildnumber
|
||||
|
||||
- name: build Subsurface
|
||||
env:
|
||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
||||
|
|
5
.github/workflows/linux-fedora-qt6.yml
vendored
5
.github/workflows/linux-fedora-qt6.yml
vendored
|
@ -33,6 +33,11 @@ jobs:
|
|||
bluez-libs-devel libgit2-devel libzip-devel libmtp-devel \
|
||||
xorg-x11-server-Xvfb
|
||||
|
||||
- name: store dummy version and build number for test build
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-test-build" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: build Subsurface
|
||||
env:
|
||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
||||
|
|
5
.github/workflows/linux-focal-5.12.yml
vendored
5
.github/workflows/linux-focal-5.12.yml
vendored
|
@ -35,6 +35,11 @@ jobs:
|
|||
qtpositioning5-dev qtscript5-dev qttools5-dev qttools5-dev-tools \
|
||||
qtquickcontrols2-5-dev xvfb libbluetooth-dev libmtp-dev
|
||||
|
||||
- name: store dummy version and build number for test build
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-test-build" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: build Subsurface-mobile
|
||||
env:
|
||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
||||
|
|
5
.github/workflows/linux-jammy-5.15.yml
vendored
5
.github/workflows/linux-jammy-5.15.yml
vendored
|
@ -35,6 +35,11 @@ jobs:
|
|||
qtpositioning5-dev qtscript5-dev qttools5-dev qttools5-dev-tools \
|
||||
qtquickcontrols2-5-dev xvfb libbluetooth-dev libmtp-dev
|
||||
|
||||
- name: store dummy version and build number for test build
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-test-build" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: build Subsurface-mobile
|
||||
env:
|
||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
||||
|
|
26
.github/workflows/linux-snap.yml
vendored
26
.github/workflows/linux-snap.yml
vendored
|
@ -20,6 +20,31 @@ jobs:
|
|||
# Needed for version determination to work
|
||||
fetch-depth: 0
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||
# that way the script doesn't need the password
|
||||
git clone -b main https://github.com/subsurface/nightly-builds
|
||||
cd nightly-builds
|
||||
git remote set-url origin "$url"
|
||||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: store dummy version and build number for pull request
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: Set up LXD
|
||||
uses: canonical/setup-lxd@main
|
||||
|
||||
|
@ -56,6 +81,7 @@ jobs:
|
|||
run: ccache --show-stats --zero-stats
|
||||
|
||||
- name: Upload the snap
|
||||
if: github.event_name == 'push'
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ${{ steps.build-snap.outputs.snap-name }}
|
||||
|
|
57
.github/workflows/linux-trusty-5.12.yml
vendored
57
.github/workflows/linux-trusty-5.12.yml
vendored
|
@ -17,6 +17,31 @@ jobs:
|
|||
- name: checkout sources
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||
# that way the script doesn't need the password
|
||||
git clone -b main https://github.com/subsurface/nightly-builds
|
||||
cd nightly-builds
|
||||
git remote set-url origin "$url"
|
||||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: store dummy version and build number for pull request
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: run build
|
||||
env:
|
||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
||||
|
@ -39,3 +64,35 @@ jobs:
|
|||
with:
|
||||
name: Linux-artifacts
|
||||
path: Linux-artifacts
|
||||
|
||||
- name: prepare release artifacts
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
mv Subsurface.AppImage Subsurface-v${{ steps.version_number.outputs.version }}.AppImage
|
||||
|
||||
# only publish a 'release' on push events (those include merging a PR)
|
||||
- name: upload binaries
|
||||
if: github.event_name == 'push'
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: v${{ steps.version_number.outputs.version }}
|
||||
repository: subsurface/nightly-builds
|
||||
token: ${{ secrets.NIGHTLY_BUILDS }}
|
||||
prerelease: false
|
||||
fail_on_unmatched_files: true
|
||||
files: |
|
||||
./Subsurface*.AppImage
|
||||
body: |
|
||||
CICD release artifact
|
||||
|
||||
These builds are created on every merge or push into the [Subsurface repo](http://github.com/subsurface/subsurface).
|
||||
This build is based on http://github.com/subsurface/subsurface/commit/${{ github.sha }}
|
||||
|
||||
None of these artifacts are signed.
|
||||
The Android APK can be side-loaded on most Android devices. If you had a previous Subsurface-mobile version installed from the Google Play store, you'll have to uninstall that first.
|
||||
The Windows installer will ask you to confirm installation of an app from an unknown developer.
|
||||
The macOS DMG makes it even harder with a multi-step dance that requires opening the Privacy & Security settings in the System Preferences and explicitly confirming that you are willing to install this app.
|
||||
|
||||
You can find similar Subsurface-Daily builds for [Ubuntu](https://ppa.launchpadcontent.net/subsurface) and Subsurface-test for [Fedora](https://copr.fedorainfracloud.org/coprs/dirkhh/Subsurface-test).
|
||||
|
||||
Please report any issues with these builds in the [Subsurface user forum](https://groups.google.com/g/subsurface-divelog).
|
||||
|
|
22
.github/workflows/mac.yml
vendored
22
.github/workflows/mac.yml
vendored
|
@ -13,8 +13,9 @@ jobs:
|
|||
steps:
|
||||
- name: checkout sources
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: build_nr
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
|
@ -27,6 +28,16 @@ jobs:
|
|||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: store dummy version and build number for pull request
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: setup Homebrew
|
||||
run: brew install hidapi libxslt libjpg libmtp create-dmg confuse
|
||||
|
@ -55,15 +66,6 @@ jobs:
|
|||
echo "Created $IMG"
|
||||
echo "dmg=$IMG" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: create version number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
gitversion=$(bash scripts/get-version win)
|
||||
latest=$(cat ../nightly-builds/latest-subsurface-buildnumber)
|
||||
version="$gitversion-$latest"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
# only publish a 'release' on push events (those include merging a PR)
|
||||
- name: upload binaries
|
||||
if: github.event_name == 'push'
|
||||
|
|
|
@ -49,7 +49,7 @@ unset LD_LIBRARY_PATH
|
|||
./linuxdeployqt*.AppImage --appimage-extract-and-run ./appdir/usr/share/applications/*.desktop -exclude-libs=libdbus-1.so.3 -bundle-non-qt-libs -qmldir=./subsurface/stats -qmldir=./subsurface/map-widget/ -verbose=2
|
||||
|
||||
# create the AppImage
|
||||
export VERSION=$(cd subsurface/scripts ; ./get-version linux) # linuxdeployqt uses this for naming the file
|
||||
export VERSION=$(cd subsurface/scripts ; ./get-version) # linuxdeployqt uses this for naming the file
|
||||
./linuxdeployqt*.AppImage --appimage-extract-and-run ./appdir/usr/share/applications/*.desktop -exclude-libs=libdbus-1.so.3 -appimage -qmldir=./subsurface/stats -qmldir=./subsurface/map-widget/ -verbose=2
|
||||
|
||||
# copy AppImage to the calling VM
|
||||
|
|
19
.github/workflows/ubuntu-launchpad-build.yml
vendored
19
.github/workflows/ubuntu-launchpad-build.yml
vendored
|
@ -14,6 +14,25 @@ jobs:
|
|||
- name: Check out sources
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||
# that way the script doesn't need the password
|
||||
git clone -b main https://github.com/subsurface/nightly-builds
|
||||
cd nightly-builds
|
||||
git remote set-url origin "$url"
|
||||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup build dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
|
|
21
.github/workflows/windows.yml
vendored
21
.github/workflows/windows.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
|||
uses: actions/checkout@v1
|
||||
|
||||
- name: atomically create or retrieve the build number
|
||||
id: build_nr
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
cd .. # check out parallel to subsurface sources
|
||||
|
@ -31,6 +31,16 @@ jobs:
|
|||
git push origin main
|
||||
cd ..
|
||||
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||
cp nightly-builds/latest-subsurface-buildnumber subsurface
|
||||
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
|
||||
version=$(bash subsurface/scripts/get-version)
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: store dummy version and build number for pull request
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "100" > latest-subsurface-buildnumber
|
||||
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
|
||||
|
||||
- name: get other dependencies
|
||||
env:
|
||||
|
@ -49,15 +59,6 @@ jobs:
|
|||
bash -x subsurface/.github/workflows/scripts/windows-in-container-build.sh 2>&1 | tee build.log
|
||||
grep "Built target installer" build.log
|
||||
|
||||
- name: create version number
|
||||
id: version_number
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
gitversion=$(bash scripts/get-version win)
|
||||
latest=$(cat ../nightly-builds/latest-subsurface-buildnumber)
|
||||
version="$gitversion-$latest"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
# only publish a 'release' on push events (those include merging a PR)
|
||||
- name: upload binaries
|
||||
if: github.event_name == 'push'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue