Skip to content

add debian 12 build script #187

add debian 12 build script

add debian 12 build script #187

name: Build, test, and deploy
on:
# release:
# types: [published, edited]
push:
paths-ignore:
- 'README.md'
- 'CHANGELOG.md'
- '.github/workflows/startup-tests.yml'
- '.github/workflows/change_log.yml'
- '.github/workflows/nixos.yaml'
pull_request:
paths-ignore:
- 'README.md'
- 'CHANGELOG.md'
- '.github/workflows/startup-tests.yml'
- '.github/workflows/change_log.yml'
- '.github/workflows/nixos.yaml'
workflow_dispatch:
inputs:
version:
description: dummy
default: dummy
jobs:
update-nightly-tag:
name: Update nightly release tag
runs-on: ubuntu-22.04
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Move nightly tag to head for nightly release
run: git tag -f nightly && git push origin nightly -f
build-flatpak-docker:
name: Build flatpak docker
runs-on: ubuntu-22.04
if: ${{ true }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/build-docker-image
name: "Build docker image"
with:
docker_image_name: flatpak
build-ubuntu-lts-docker:
name: Build ubuntu LTS docker image
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/build-docker-image
name: "Build docker image"
with:
docker_image_name: ubuntu_lts
build-ubuntu-for-appimage-docker:
name: Build ubuntu for AppImage docker image
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/build-docker-image
name: "Build docker image"
with:
docker_image_name: ubuntu_for_appimage
build-ubuntu-for-asan-appimage-docker:
name: Build ubuntu for ASAN AppImage docker image
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/build-docker-image
name: "Build docker image"
with:
docker_image_name: ubuntu_for_asan_appimage
build-debian-docker:
name: Build debian docker image
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/build-docker-image
name: "Build docker image"
with:
docker_image_name: debian
build-debian:
name: Debian
runs-on: ubuntu-22.04
needs: build-debian-docker
strategy:
matrix:
features: [full, minimal]
build_type: [Debug, Release]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/load-docker-image
name: Load docker image
with:
docker_image_name: debian
- name: Run build
run: docker-compose run --rm debian ./.ci-scripts/build-qtox-linux.sh --build-type ${{ matrix.build_type }} --${{ matrix.features }}
translation-check:
name: Check for translatable strings
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install deps
run: sudo apt-get update && sudo apt-get install qttools5-dev
- name: Test for modified translatable strings
run: ./tools/update-translation-files.sh ALL && git diff > apply_translations.patch
- name: Upload apply_translations.patch
uses: actions/upload-artifact@v4
with:
name: apply_translations.patch
path: apply_translations.patch
build-ubuntu:
name: Ubuntu LTS
runs-on: ubuntu-22.04
needs: build-ubuntu-lts-docker
strategy:
matrix:
features: [full, minimal]
build_type: [Debug, Release]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/load-docker-image
name: Load docker image
with:
docker_image_name: ubuntu_lts
- name: Run build
run: docker-compose run --rm ubuntu_lts ./.ci-scripts/build-qtox-linux.sh --build-type ${{ matrix.build_type }} --${{ matrix.features }}
- name: Code coverage
run: |
# https://github.com/actions/runner/issues/491
if [ "${{ matrix.build_type }}" == "Release" ] && [ "${{ matrix.features }}" == "full" ]; then
docker-compose run --rm ubuntu_lts ./.ci-scripts/lcov.sh
# Upload report to codecov.io
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo "Codecov did not collect coverage reports"
fi
build-appimage:
name: Appimage
runs-on: ubuntu-22.04
needs: [build-ubuntu-for-appimage-docker, update-nightly-tag]
if: |
always() &&
needs.build-ubuntu-for-appimage-docker.result == 'success' &&
(needs.update-nightly-tag.result == 'success' ||
needs.update-nightly-tag.result == 'skipped')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/load-docker-image
name: Load docker image
with:
docker_image_name: ubuntu_for_appimage
- name: Run build
run: docker-compose run --rm ubuntu_for_appimage ./appimage/build.sh --src-dir /qtox
- name: Upload appimage
uses: actions/upload-artifact@v4
with:
name: qTox-${{ github.sha }}.x86_64.AppImage
path: qTox-*.x86_64.AppImage
- name: Get tag name for appimage release file name
if: contains(github.ref, 'refs/tags/v')
id: get_version
run: |
VV=$(echo $GITHUB_REF | cut -d / -f 3)
echo "$VV"
echo "{VERSION}={$VV}" >> $GITHUB_OUTPUT
echo $GITHUB_OUTPUT
ls -al $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
# The zync file names MUST match the pattern "qTox-*.x86_64.AppImage.zsync"
# indefinitely for older versions to be able to update https://github.com/AppImage/AppImageSpec/blob/master/draft.md#github-releases
- name: Rename appimage for release upload
if: contains(github.ref, 'refs/tags/v')
run: |
echo $GITHUB_REF
VV=$(echo $GITHUB_REF | cut -d / -f 3)
cp -v qTox-*.x86_64.AppImage qTox-"$VV".x86_64.AppImage
sha256sum qTox-"$VV".x86_64.AppImage > qTox-"$VV".x86_64.AppImage.sha256
cp -v qTox-*.x86_64.AppImage.zsync qTox-"$VV".x86_64.AppImage.zsync
- name: Upload to versioned release
if: contains(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-v1.*.x86_64.AppImage,qTox-v1.*.x86_64.AppImage.sha256,qTox-v1.*.x86_64.AppImage.zsync"
- name: Rename artifact for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
run: |
cp -v qTox-*.x86_64.AppImage qTox-nightly.x86_64.AppImage
cp -v qTox-*.x86_64.AppImage.zsync qTox-nightly.x86_64.AppImage.zsync
- name: Upload to nightly release
uses: ncipollo/release-action@v1
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-nightly.x86_64.AppImage,qTox-nightly.x86_64.AppImage.zsync"
build-asan_appimage:
name: ASAN_Appimage
runs-on: ubuntu-22.04
needs: [build-ubuntu-for-asan-appimage-docker, update-nightly-tag]
if: |
always() &&
needs.build-ubuntu-for-asan-appimage-docker.result == 'success' &&
(needs.update-nightly-tag.result == 'success' ||
needs.update-nightly-tag.result == 'skipped')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/load-docker-image
name: Load docker image
with:
docker_image_name: ubuntu_for_asan_appimage
- name: Run build
run: docker-compose run --rm ubuntu_for_asan_appimage ./appimage/asan_build.sh --src-dir /qtox
- name: Upload asan appimage
uses: actions/upload-artifact@v4
with:
name: qTox-asan-${{ github.sha }}.x86_64.AppImage
path: qTox-*.x86_64.AppImage
- name: Get tag name for appimage release file name
if: contains(github.ref, 'refs/tags/v')
id: get_version
run: |
VV=$(echo $GITHUB_REF | cut -d / -f 3)
echo "$VV"
echo "{VERSION}={$VV}" >> $GITHUB_OUTPUT
echo $GITHUB_OUTPUT
ls -al $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
# The zync file names MUST match the pattern "qTox-asan-*.x86_64.AppImage.zsync"
# indefinitely for older versions to be able to update https://github.com/AppImage/AppImageSpec/blob/master/draft.md#github-releases
- name: Rename appimage for release upload
if: contains(github.ref, 'refs/tags/v')
run: |
echo $GITHUB_REF
VV=$(echo $GITHUB_REF | cut -d / -f 3)
cp -v qTox-asan-*.x86_64.AppImage qTox-asan-"$VV".x86_64.AppImage
sha256sum qTox-asan-"$VV".x86_64.AppImage > qTox-asan-"$VV".x86_64.AppImage.sha256
cp -v qTox-asan-*.x86_64.AppImage.zsync qTox-asan-"$VV".x86_64.AppImage.zsync
- name: Upload to versioned release
if: contains(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-asan-v1.*.x86_64.AppImage,qTox-asan-v1.*.x86_64.AppImage.sha256,qTox-asan-v1.*.x86_64.AppImage.zsync"
- name: Rename artifact for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
run: |
cp -v qTox-asan-*.x86_64.AppImage qTox-asan-nightly.x86_64.AppImage
cp -v qTox-asan-*.x86_64.AppImage.zsync qTox-asan-nightly.x86_64.AppImage.zsync
- name: Upload to nightly release
uses: ncipollo/release-action@v1
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-asan-nightly.x86_64.AppImage,qTox-asan-nightly.x86_64.AppImage.zsync"
build-flatpak:
name: Flatpak
runs-on: ubuntu-22.04
needs: [build-flatpak-docker, update-nightly-tag]
if: |
always() &&
needs.build-flatpak-docker.result == 'success' &&
(needs.update-nightly-tag.result == 'success' ||
needs.update-nightly-tag.result == 'skipped')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/load-docker-image
name: Load docker image
with:
docker_image_name: flatpak
- name: Run build
run: docker-compose run --rm flatpak ./flatpak/build.sh
- name: Upload flatpak
uses: actions/upload-artifact@v4
with:
name: qTox-${{ github.sha }}.x86_64.flatpak
path: qtox.flatpak
- name: Get tag name for flatpak release file name
if: contains(github.ref, 'refs/tags/v')
id: get_version
run: |
echo $GITHUB_REF
VV=$(echo $GITHUB_REF | cut -d / -f 3)
echo "$VV"
echo "{VERSION}={$VV}" >> $GITHUB_OUTPUT
echo $GITHUB_OUTPUT
- name: Rename flatpak for release upload
if: contains(github.ref, 'refs/tags/v')
run: |
echo $GITHUB_REF
VV=$(echo $GITHUB_REF | cut -d / -f 3)
cp -v qtox.flatpak qTox-"$VV".x86_64.flatpak
sha256sum qTox-"$VV".x86_64.flatpak > qTox-"$VV".x86_64.flatpak.sha256
- name: Upload to versioned release
if: contains(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-v1.*.x86_64.flatpak,qTox-v1.*.x86_64.flatpak.sha256"
- name: Rename artifact for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
run: |
cp -v qtox.flatpak qTox-nightly.flatpak
sha256sum qTox-nightly.flatpak > qTox-nightly.flatpak.sha256
- name: Upload to nightly release
uses: ncipollo/release-action@v1
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-nightly.flatpak,qTox-nightly.flatpak.sha256"
build-windows:
name: Windows
runs-on: ubuntu-22.04
needs: [update-nightly-tag]
if: |
always() &&
(needs.update-nightly-tag.result == 'success' ||
needs.update-nightly-tag.result == 'skipped')
permissions:
contents: write
strategy:
matrix:
build_type: [Release]
steps:
- uses: actions/checkout@v4
- name: build deps
run: sudo ./buildscripts/docker/nondocker_windows_builder.sh --src-dir /qtox
- name: build qtox
run: sudo ./windows/cross-compile/build.sh --arch x86_64 --build-type ${{ matrix.build_type }} --run-tests --src-dir /qtox
- name: Upload installer
if: matrix.build_type == 'release'
uses: actions/upload-artifact@v4
with:
name: setup-qtox-x86_64-${{ matrix.build_type }}.exe
path: package-prefix/setup-qtox.exe
- name: Upload zip
uses: actions/upload-artifact@v4
with:
name: qtox-x86_64-${{ matrix.build_type }}.zip
path: install-prefix/qtox-x86_64-${{ matrix.build_type }}.zip
- name: Rename exe for release upload
if: contains(github.ref, 'refs/tags/v') && matrix.build_type == 'release'
run: |
cp package-prefix/setup-qtox.exe setup-qtox-x86_64-release.exe
sha256sum setup-qtox-x86_64-release.exe > setup-qtox-x86_64-release.exe.sha256
- name: Upload to versioned release
if: contains(github.ref, 'refs/tags/v') && matrix.build_type == 'release'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "setup-qtox-x86_64-release.exe,setup-qtox-x86_64-release.exe.sha256"
- name: Rename zip for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
run: |
cp install-prefix/qtox-x86_64-${{ matrix.build_type }}.zip qtox-nightly-x86_64-${{ matrix.build_type }}.zip
sha256sum qtox-nightly-x86_64-${{ matrix.build_type }}.zip > qtox-nightly-x86_64-${{ matrix.build_type }}.zip.sha256
- name: Upload zip to nightly release
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qtox-nightly-x86_64-${{ matrix.build_type }}.zip,qtox-nightly-x86_64-${{ matrix.build_type }}.zip.sha256"
- name: Rename zip for release upload
if: contains(github.ref, 'refs/tags/v') && matrix.build_type == 'release'
run: |
pwd
ls -al install-prefix/
ls -al install-prefix/qtox-x86_64-${{ matrix.build_type }}.zip
cp install-prefix/qtox-x86_64-${{ matrix.build_type }}.zip qtox-x86_64.zip
sha256sum install-prefix/qtox-x86_64-${{ matrix.build_type }}.zip > qtox-x86_64.zip.sha256
- name: Upload zip to versioned release
if: contains(github.ref, 'refs/tags/v') && matrix.build_type == 'release'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qtox-x86_64.zip,qtox-x86_64.zip.sha256"
- name: Rename exe for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification' && matrix.build_type == 'release'
run: |
cp package-prefix/setup-qtox.exe qtox-nightly-x86_64-${{ matrix.build_type }}.exe
sha256sum qtox-nightly-x86_64-${{ matrix.build_type }}.exe > qtox-nightly-x86_64-${{ matrix.build_type }}.exe.sha256
- name: Upload exe to nightly release
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification' && matrix.build_type == 'release'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qtox-nightly-x86_64-${{ matrix.build_type }}.exe,qtox-nightly-x86_64-${{ matrix.build_type }}.exe.sha256"
build-osx-distributable:
name: macOS distributable
runs-on: macos-12
needs: update-nightly-tag
if: |
always() &&
(needs.update-nightly-tag.result == 'success' ||
needs.update-nightly-tag.result == 'skipped')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Homebrew dependencies to build dependencies
run: brew update || echo "some errors" ; echo "==111111111111==" ; brew bundle --file ./osx/Brewfile-DepBuildDeps || echo "some errors" ; echo "==222222222222==" ; brew upgrade || echo "some errors"
- name: Build dependencies
run: ./.ci-scripts/build-osx-deps.sh
- name: Build qTox
run: ./.ci-scripts/build-qtox-macos.sh dist
- name: Upload dmg
uses: actions/upload-artifact@v4
with:
name: qTox-${{ github.sha }}.dmg
path: qTox.dmg
- name: Create shasum for versioned release
if: contains(github.ref, 'refs/tags/v')
run: sha256sum qTox.dmg > qTox.dmg.sha256
- name: Upload to versioned release
if: contains(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox.dmg,qTox.dmg.sha256"
- name: Rename artifact for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
run: |
cp qTox.dmg qTox-nightly.dmg
sha256sum qTox-nightly.dmg > qTox-nightly.dmg.sha256
- name: Upload to nightly release
uses: ncipollo/release-action@v1
if: github.event_name == 'push' && github.ref == 'refs/heads/zoxcore/push_notification'
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "qTox-nightly.dmg,qTox-nightly.dmg.sha256"