Skip to content

Trigger CI

Trigger CI #21

# SPDX-FileCopyrightText: Copyright (C) swift Project Community / Contributors
# SPDX-License-Identifier: CC0-1.0
name: Build swift
on:
push:
workflow_dispatch: # manually triggered
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
do_symbols: ${{ github.event_name == 'merge_group' }}
qt_version: &qt_version 6.11.1
bitrock_version: qt-professional-25.10.1
bitrock_url: https://releases.installbuilder.com/installbuilder
installbuilder_hash_win: f92b1741c78b8f024473f55057b26107c8ed9cc1ca583eb9323d0023a8024e00
installbuilder_hash_linux: 3dff24cf94af17158cbcb16af41ecf0bb5060ba97d052597f15b987bd5e5b43a
installbuilder_hash_macos: bffa8b2663c6e9aaaa1ed7cdb41a874d34ff89f22adfab419e172915f8f4ce57
externals: swift-project/externals
externals_sha: e1f1743ba159e11b0c065ea8f1ae1a0e91e3bf39
jobs:
preBuild:
runs-on: ubuntu-24.04
outputs:
version: ${{ steps.version.outputs.value }}
steps:
- name: Checkout repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
with:
fetch-depth: 0
- name: Get version number
id: version
run: |
echo "value=$(python3 -u scripts/utils.py --version)" >>$GITHUB_OUTPUT
- name: Remove artifacts
uses: swift-project/delete-artifact@swift
with:
name: |
xswiftbus-thin-*
xswiftbus-fat-*
swiftsymbols-*
swiftinstaller-*
failOnError: false
warnIfNotFound: false
# buildLinux:
# runs-on: ubuntu-24.04
# needs: [preBuild]
# env:
# BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }}
# BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }}
# BITROCK_BUILDER: ~/installbuilder/bin/builder
# SCCACHE_BUCKET: swift
# SCCACHE_ENDPOINT: https://swift-build-cache.ltoenning.de
# SCCACHE_REGION: garage
# AWS_EC2_METADATA_DISABLED: true
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# SCCACHE_S3_NO_CREDENTIALS: false
# steps:
# - name: Install Qt
# uses: jurplel/install-qt-action@48d3ad6db93f3627c8ee7a0454bc6f3744f7e730
# with:
# version: ${{ env.qt_version }}
# modules: 'qtmultimedia'
# aqtsource: 'git+https://github.com/miurahr/aqtinstall.git@8c3695d4a4e1ceabf6a74dc6c79681656dc6b74b'
# cache: true
# - uses: cargo-bins/cargo-binstall@732870f031d2fb36309d0deaf36abcc704a7be65
# with:
# version: "1.20.1"
# - name: Cache InstallBuilder
# id: cache-bitrock
# uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25
# with:
# path: ~/installbuilder.run
# key: installbuilder-${{ env.bitrock_version }}-linux-x64
# - name: Download InstallBuilder
# if: steps.cache-bitrock.outputs.cache-hit != 'true'
# run: |
# wget --retry-connrefused -t 10 -w 10 -T 60 -O ~/installbuilder.run ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-linux-x64-installer.run
# echo "${{ env.installbuilder_hash_linux }} $HOME/installbuilder.run" | sha256sum -c -
# - name: Install InstallBuilder
# run: |
# chmod 700 ~/installbuilder.run
# ~/installbuilder.run --mode unattended --prefix ~/installbuilder
# cat >~/license.xml <<EOF
# $BITROCK_LICENSE
# EOF
# env:
# BITROCK_LICENSE: ${{ secrets.BITROCK_LICENSE }}
# - name: Install dependencies
# run: |
# sudo apt-get -y install dbus-x11 libglu1-mesa-dev libpulse-dev libdbus-1-dev ninja-build
# pip3 install requests conan==2.29.1
# cargo binstall sccache
# - name: Start sccache
# run: |
# sccache --start-server
# - name: Checkout repository
# uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
# with:
# submodules: true
# fetch-depth: 0
# - name: Checkout externals
# uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
# env:
# EXTERNALS_PAT: ${{ secrets.EXTERNALS_PAT }}
# with:
# repository: ${{ env.externals }}
# ref: ${{ env.externals_sha }}
# token: ${{ env.EXTERNALS_PAT }}
# path: 'third_party/externals'
# - name: Install conan dependencies
# shell: bash
# env:
# ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }}
# ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }}
# run: |
# conan remote disable conancenter
# conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local
# conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN"
# conan install . --output-folder=build_conan --deployer=full_deploy -pr:h=ci/profile_linux -pr:b=ci/profile_linux
# - name: Start DBus session bus
# run: |
# dbus-launch --sh-syntax | tee session.sh
# eval $(cat session.sh)
# echo "DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS" >>$GITHUB_ENV
# - name: Create Vatsim key file
# run: |
# cat >vatsim.json <<EOF
# { "vatsim": { "id": "$VATSIM_ID", "key": "$VATSIM_KEY" } }
# EOF
# env:
# VATSIM_ID: ${{ secrets.VATSIM_ID }}
# VATSIM_KEY: ${{ secrets.VATSIM_KEY }}
# - uses: swift-project/setup-cpp@swift
# - name: Build swift (without symbols)
# if: ${{ env.do_symbols != 'true' }}
# run: |
# python3 -u scripts/build.py -w 64 -t gcc
# - name: Build swift (with symbols)
# if: ${{ env.do_symbols == 'true' }}
# run: |
# python3 -u scripts/build.py -w 64 -t gcc --upload-symbols
# - name: Stop sccache
# run: |
# sccache --stop-server
# - name: Upload installer
# uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
# with:
# name: swiftinstaller-linux-64-${{ needs.preBuild.outputs.version }}
# path: ${{ github.workspace }}/swiftinstaller-*
# - name: Upload symbols
# uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
# if: ${{ env.do_symbols == 'true' }}
# with:
# name: swiftsymbols-linux-64-${{ needs.preBuild.outputs.version }}
# path: ${{ github.workspace }}/swiftsymbols-*
# - name: Upload xswiftbus
# uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
# with:
# name: xswiftbus-thin-linux-64-${{ needs.preBuild.outputs.version }}
# path: ${{ github.workspace }}/xswiftbus-*
buildWin64:
runs-on: windows-2025-vs2026
needs: [preBuild]
env:
BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }}
BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }}
BITROCK_BUILDER: "~/installbuilder/bin/builder-cli.exe"
SCCACHE_BUCKET: swift
SCCACHE_ENDPOINT: https://swift-build-cache.ltoenning.de
SCCACHE_REGION: garage
AWS_EC2_METADATA_DISABLED: true
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
SCCACHE_S3_NO_CREDENTIALS: false
SCCACHE_LOG: debug
steps:
- name: Install Qt
uses: jurplel/install-qt-action@48d3ad6db93f3627c8ee7a0454bc6f3744f7e730
with:
version: ${{ env.qt_version }}
modules: 'qtmultimedia'
arch: win64_msvc2022_64
aqtsource: 'git+https://github.com/miurahr/aqtinstall.git@8c3695d4a4e1ceabf6a74dc6c79681656dc6b74b'
cache: true
- name: Install Qt debug info
uses: jurplel/install-qt-action@48d3ad6db93f3627c8ee7a0454bc6f3744f7e730
with:
version: ${{ env.qt_version }}
arch: win64_msvc2022_64
aqtsource: 'git+https://github.com/miurahr/aqtinstall.git@8c3695d4a4e1ceabf6a74dc6c79681656dc6b74b'
cache: true
modules: debug_info
extra: --archives qtbase
- uses: cargo-bins/cargo-binstall@732870f031d2fb36309d0deaf36abcc704a7be65
with:
version: "1.20.1"
- name: Cache InstallBuilder
id: cache-bitrock
uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25
with:
path: C:\installbuilder.exe
key: installbuilder-${{ env.bitrock_version }}-windows-x64
- name: Download InstallBuilder
if: steps.cache-bitrock.outputs.cache-hit != 'true'
shell: C:\msys64\usr\bin\bash.exe -le {0}
run: |
wget --retry-connrefused -t 10 -w 10 -T 60 -O /c/installbuilder.exe ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-windows-x64-installer.exe
echo "${{ env.installbuilder_hash_win }} /c/installbuilder.exe" | sha256sum -c -
env:
MSYSTEM: MSYS2
- name: Install InstallBuilder
run: |
start -wait "C:\installbuilder.exe" @("--mode", "unattended", "--prefix", "$HOME\installbuilder")
echo >$HOME\license.xml @"
$env:BITROCK_LICENSE
"@
env:
BITROCK_LICENSE: ${{ secrets.BITROCK_LICENSE }}
- name: Install dependencies
run: |
pip install requests PyInstaller conan==2.29.1
cargo binstall sccache
- name: Start sccache
run: |
sccache --start-server
- name: Checkout repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
with:
submodules: true
fetch-depth: 0
- name: Checkout externals
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
env:
EXTERNALS_PAT: ${{ secrets.EXTERNALS_PAT }}
with:
repository: ${{ env.externals }}
ref: ${{ env.externals_sha }}
token: ${{ env.EXTERNALS_PAT }}
path: 'third_party/externals'
- name: Install conan dependencies
shell: bash
env:
ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }}
ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }}
run: |
conan remote disable conancenter
conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local
conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN"
conan install . --output-folder=build_conan --deployer=full_deploy -pr:h=ci/profile_win -pr:b=ci/profile_win
- name: Create Vatsim key file
run: |
echo >vatsim.json @"
{ "vatsim": { "id": "$env:VATSIM_ID", "key": "$env:VATSIM_KEY" } }
"@
env:
VATSIM_ID: ${{ secrets.VATSIM_ID }}
VATSIM_KEY: ${{ secrets.VATSIM_KEY }}
- uses: swift-project/setup-cpp@swift
- name: Build swift (without symbols)
if: ${{ env.do_symbols != 'true' }}
shell: cmd
run: |
build_conan\\build\\RelWithDebInfo\\generators\\conanrun.bat && python -u scripts/build.py -w 64 -t msvc
- name: Build swift (with symbols)
if: ${{ env.do_symbols == 'true' }}
shell: cmd
run: |
build_conan\\build\\RelWithDebInfo\\generators\\conanrun.bat && python -u scripts/build.py -w 64 -t msvc --upload-symbols
- name: Stop sccache
run: |
sccache --stop-server
- name: Upload installer
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: swiftinstaller-windows-64-${{ needs.preBuild.outputs.version }}
path: ${{ github.workspace }}/swiftinstaller-*
- name: Upload symbols
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
if: ${{ env.do_symbols == 'true' }}
with:
name: swiftsymbols-windows-64-${{ needs.preBuild.outputs.version }}
path: ${{ github.workspace }}/swiftsymbols-*
- name: Upload xswiftbus
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: xswiftbus-thin-windows-64-${{ needs.preBuild.outputs.version }}
path: ${{ github.workspace }}/xswiftbus-*