name: Windows. on: push: paths-ignore: - 'docs/**' - '**.md' - 'changelog.txt' - 'LEGAL' - 'LICENSE' - '.github/**' - '!.github/workflows/win.yml' - 'lib/xdg/**' - 'snap/**' - 'Telegram/build/docker/**' - 'Telegram/Resources/uwp/**' - 'Telegram/SourceFiles/platform/linux/**' - 'Telegram/SourceFiles/platform/mac/**' - 'Telegram/Telegram/**' - 'Telegram/configure.sh' - 'Telegram/Telegram.plist' pull_request: paths-ignore: - 'docs/**' - '**.md' - 'changelog.txt' - 'LEGAL' - 'LICENSE' - '.github/**' - '!.github/workflows/win.yml' - 'lib/xdg/**' - 'snap/**' - 'Telegram/build/docker/**' - 'Telegram/Resources/uwp/**' - 'Telegram/SourceFiles/platform/linux/**' - 'Telegram/SourceFiles/platform/mac/**' - 'Telegram/Telegram/**' - 'Telegram/configure.sh' - 'Telegram/Telegram.plist' jobs: windows: name: Windows runs-on: windows-2022 strategy: matrix: arch: [Win32, x64] env: UPLOAD_ARTIFACT: "false" ONLY_CACHE: "false" PREPARE_PATH: "Telegram/build/prepare/prepare.py" defaults: run: shell: cmd steps: - name: Prepare directories. run: | mkdir %userprofile%\TBuild Libraries mklink /d %userprofile%\TBuild\Libraries %GITHUB_WORKSPACE%\Libraries echo TBUILD=%userprofile%\TBuild>>%GITHUB_ENV% - name: Get repository name. shell: bash run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - uses: ilammy/msvc-dev-cmd@v1.10.0 name: Native Tools Command Prompt. with: arch: ${{ matrix.arch }} - name: Clone. uses: LebedevRI/checkout@issue197 with: submodules: recursive path: ${{ env.TBUILD }}\${{ env.REPO_NAME }} - name: Choco installs. run: | choco install --no-progress -y nasm strawberryperl yasm jom ninja py -m pip install pywin32 - name: Install msys64. run: | mkdir %TBUILD%\ThirdParty xcopy /E /I C:\msys64 %TBUILD%\ThirdParty\msys64 - name: Set up environment paths. shell: bash run: | echo "C:\\Strawberry\\perl\\bin\\" >> $GITHUB_PATH echo "C:\\Program Files\\NASM\\" >> $GITHUB_PATH echo "C:\\ProgramData\\chocolatey\\lib\\ninja\\tools\\" >> $GITHUB_PATH echo "CACHE_KEY=$(sha256sum $TBUILD/$REPO_NAME/$PREPARE_PATH | awk '{ print $1 }')" >> $GITHUB_ENV echo "Configurate git for cherry-picks." git config --global user.email "you@example.com" git config --global user.name "Sample" - name: NuGet sources. run: | nuget sources Disable -Name "Microsoft Visual Studio Offline Packages" nuget sources Add -Source https://api.nuget.org/v3/index.json & exit 0 - name: Libraries cache. id: cache-libs uses: actions/cache@v2 with: path: Libraries key: ${{ runner.OS }}-${{ matrix.arch }}-libs-${{ env.CACHE_KEY }} restore-keys: ${{ runner.OS }}-${{ matrix.arch }}-libs- - name: Libraries. env: GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\' GYP_MSVS_VERSION: 2022 run: '%TBUILD%\%REPO_NAME%\Telegram\build\prepare\win.bat skip-release silent' - name: Read defines. shell: bash run: | DEFINE="" if [ -n "${{ matrix.defines }}" ]; then DEFINE="-D ${{ matrix.defines }}=ON" echo Define from matrix: $DEFINE echo "ARTIFACT_NAME=Telegram_${{ matrix.arch }}_${{ matrix.defines }}" >> $GITHUB_ENV else echo "ARTIFACT_NAME=Telegram_${{ matrix.arch }}" >> $GITHUB_ENV fi echo "TDESKTOP_BUILD_DEFINE=$DEFINE" >> $GITHUB_ENV - name: Free up some disk space. run: | del /S Libraries\*.pdb del /S Libraries\*.pch del /S Libraries\*.obj - name: Telegram Desktop build. if: env.ONLY_CACHE == 'false' run: | C: cd %TBUILD%\%REPO_NAME%\Telegram call configure.bat ^ ${{ matrix.arch }} ^ -D TDESKTOP_API_TEST=ON ^ -D DESKTOP_APP_USE_PACKAGED=OFF ^ -D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF ^ -D DESKTOP_APP_NO_PDB=ON ^ %TDESKTOP_BUILD_DEFINE% ^ -DCMAKE_SYSTEM_VERSION=%SDK% cd ..\out msbuild -m Telegram.sln /p:Configuration=Debug,Platform=${{ matrix.arch }},DebugSymbols=false,DebugType=none - name: Move artifact. if: env.UPLOAD_ARTIFACT == 'true' run: | mkdir artifact move %TBUILD%\%REPO_NAME%\out\Debug\Telegram.exe artifact/ - uses: actions/upload-artifact@master name: Upload artifact. if: env.UPLOAD_ARTIFACT == 'true' with: name: ${{ env.ARTIFACT_NAME }} path: artifact\