Build release VC #189
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 2024-09-02 00:40 | |
# soft_fast_search patch | |
name: Build release VC | |
on: | |
# push: | |
# branches: [ master ] | |
# pull_request: | |
# branches: [ master ] | |
workflow_dispatch: | |
inputs: | |
extra_plugins_profile: | |
default: true | |
type: boolean | |
code-style-checks: | |
default: true | |
type: boolean | |
hlf-checks: | |
default: true | |
type: boolean | |
msbuild_cl_x64_release_input: | |
default: true | |
type: boolean | |
msbuild_cl_x86_release_input: | |
default: true | |
type: boolean | |
msbuild_cl_ARM64_release_input: | |
default: true | |
type: boolean | |
soft_fast_search_patch: | |
default: true | |
type: boolean | |
env: | |
PROG_NAME: "Far3" | |
TAG_NAME: "Far3" | |
Far_version: "3.0." | |
jobs: | |
#------------------------------------------------------------------------------ | |
code-style-checks: | |
runs-on: ubuntu-latest | |
if: ${{ inputs.code-style-checks }} | |
steps: | |
- name: Checkout source | |
uses: deep-soft/checkout@v4 | |
- name: Setup Python | |
uses: deep-soft/setup-python@v5 | |
- name: Run checks | |
working-directory: far | |
run: python tools/source_validator.py | |
#------------------------------------------------------------------------------ | |
hlf-checks: | |
runs-on: windows-2022 | |
if: ${{ inputs.hlf-checks }} | |
steps: | |
- name: Checkout source | |
uses: deep-soft/checkout@v4 | |
- uses: deep-soft/setup-dotnet@v4 | |
with: | |
dotnet-version: '6.0' | |
- name: Build and run ChangelogChecker | |
working-directory: misc/build-checks/ChangelogChecker | |
run: dotnet run --project ./ChangelogChecker.csproj --configuration Release --property UseSharedCompilation=false | |
- name: Build and run HlfChecker | |
working-directory: misc/build-checks/HlfChecker | |
run: dotnet run --project ./HlfChecker.csproj --configuration Release --property UseSharedCompilation=false -- Verbose | |
#------------------------------------------------------------------------------ | |
build-msbuild: | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [ | |
msbuild_cl_x64_release, | |
msbuild_cl_x86_release, | |
msbuild_cl_ARM64_release, | |
# msbuild_cl_x64_debug, | |
# msbuild_cl_x86_debug, | |
] | |
include: | |
- { build: msbuild_cl_x64_release, compiler: msbuild_cl, arch: amd64, platform_sln: x64, platform_name: x64, build_config: Release } | |
- { build: msbuild_cl_x86_release, compiler: msbuild_cl, arch: amd64_x86, platform_sln: Win32, platform_name: x86, build_config: Release } | |
- { build: msbuild_cl_ARM64_release, compiler: msbuild_cl, arch: amd64_arm64, platform_sln: ARM64, platform_name: ARM64, build_config: Release } | |
# - { build: msbuild_cl_x64_debug, compiler: msbuild_cl, arch: amd64, platform_sln: x64, platform_name: x64, build_config: Debug } | |
# - { build: msbuild_cl_x86_debug, compiler: msbuild_cl, arch: amd64_x86, platform_sln: Win32, platform_name: x86, build_config: Debug } | |
# exclude: | |
# - { build: msbuild_cl_x64_release }: ${{ inputs.msbuild_cl_x64_release_input != true }} | |
# - { build: msbuild_cl_x86_release }: ${{ inputs.msbuild_cl_x86_release_input != true }} | |
# - { build: msbuild_cl_ARM64_release }: ${{ inputs.msbuild_cl_ARM64_release_input != true }} | |
steps: | |
- name: test var | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
run: | | |
echo " if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64'" | |
- name: Checkout source | |
uses: deep-soft/checkout@v4 | |
- name: soft_fast_search_patch | |
if: ${{ inputs.soft_fast_search_patch }} | |
continue-on-error: true | |
shell: bash | |
run: | | |
ls -la patch/filelist.diff || true; | |
if [[ -f patch/filelist.diff ]]; then | |
git apply --verbose patch/filelist.diff | |
fi | |
- name: Get program version | |
continue-on-error: false | |
shell: bash | |
run: | | |
Far_version=${{ env.Far_Version}} | |
Far_build=$(cat "far/vbuild.m4") | |
echo $Far_version$Far_build | |
echo "VERSION=$Far_version$Far_build.0" >> $GITHUB_ENV | |
- name: Print program version | |
continue-on-error: false | |
shell: bash | |
run: | | |
echo "Print program version" | |
echo ${{ env.VERSION }} | |
- name: Initialize CodeQL | |
if: matrix.build == 'msbuild_cl_x64_debug' | |
uses: github/codeql-action/init@v2 | |
with: | |
languages: cpp | |
- name: Set MSVC environment | |
uses: deep-soft/msvc-dev-cmd@v1 | |
with: | |
arch: ${{ matrix.arch }} | |
- name: Set environment for debug build | |
if: matrix.build_config == 'Debug' | |
run: | | |
Add-Content -Path $env:GITHUB_ENV -Value "DEBUG=1" | |
- name: Build (cl) | |
working-directory: _build/vc | |
run: | | |
msbuild -m /property:Configuration=${{ matrix.build_config }} /property:Platform=${{ matrix.platform_sln }} all.sln | |
- name: Perform CodeQL Analysis | |
if: matrix.build == 'msbuild_cl_x64_debug' | |
uses: github/codeql-action/analyze@v2 | |
# - name: Create zip | |
# continue-on-error: true | |
# working-directory: _build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }} | |
# run: | | |
# dir ./ | |
# Compress-Archive . ../${{ env.PROG_NAME }}.${{ matrix.build_config }}.${{ matrix.platform_sln }}.${{ env.VERSION }}.zip | |
# dir ../ | |
- name: Add extra plugins NetBox and Colorer | |
continue-on-error: true | |
shell: bash | |
run: | | |
pushd '_build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}/Plugins'; | |
for extra_plug in Far-NetBox Far-Colorer ; do | |
mkdir $extra_plug; | |
cd $extra_plug; | |
f_name="$extra_plug.${{ matrix.platform_name }}.7z"; | |
curl -LOJ "https://github.com/deep-soft/$extra_plug/releases/download/$extra_plug-latest/$extra_plug.${{ matrix.platform_name }}.7z"; | |
f_size=$(stat --format=%s $f_name); | |
echo "f_size=$f_size"; | |
min_f_size=1000000; | |
if [[ f_size -le min_f_size ]]; then | |
echo "something wrong"; | |
f_name="$extra_plug.${{ matrix.platform_name }}-ok.7z"; | |
curl -LOJ "https://github.com/deep-soft/$extra_plug/releases/download/$extra_plug-latest/$extra_plug.${{ matrix.platform_name }}-ok.7z"; | |
f_size=$(stat --format=%s $f_name); | |
echo "f_size=$f_size"; | |
else | |
echo "ok"; | |
fi | |
7z x $extra_plug.${{ matrix.platform_name }}.7z; | |
rm $extra_plug.${{ matrix.platform_name }}.7z; | |
cd .. | |
done | |
popd | |
- name: Sign Windows exe and dll files | |
continue-on-error: true | |
uses: deep-soft/code-sign-action@v9 | |
with: | |
certificate: '${{ secrets.WINDOWS_PFX_BASE64 }}' | |
password: '${{ secrets.WINDOWS_PFX_PASSWORD }}' | |
certificatesha1: '${{ secrets.WINDOWS_PFX_SHA1_THUMBPRINT }}' | |
# certificatename: '${{ secrets.CERTNAME }}' | |
folder: '_build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}' | |
recursive: true | |
- name: Create Zip Archive Release | |
if: matrix.build_config == 'Release' | |
uses: deep-soft/zip-release@v2 | |
with: | |
type: 'zip' | |
filename: '${{ env.PROG_NAME }}.${{ matrix.platform_sln }}.${{ env.VERSION }}.zip' | |
directory: '_build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}' | |
exclusions: '*.map *.pdb' | |
recursive_exclusions: '*.map *.pdb changelog *Bel.lng *Cze.lng *Ger.lng *Hun.lng *Ita.lng *Lit.lng *Pol.lng *Rus.lng *Sky.lng *Spa.lng *Ukr* *Bel.hlf *Cze.hlf *Ger.hlf *Hun.hlf *Ita.hlf *Lit.hlf *Pol.hlf *Rus.hlf *Sky.hlf *Spa.hlf *Ukr*' | |
path: '.' | |
- name: Upload zip | |
if: matrix.build_config == 'Release' | |
continue-on-error: true | |
uses: deep-soft/upload-artifact@v4 | |
with: | |
name: ${{ env.PROG_NAME }}.${{ matrix.platform_name }}.${{ env.VERSION }}.zip | |
#path: _build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}/${{ env.PROG_NAME }}.${{ matrix.build_config }}.${{ matrix.platform_sln }}.${{ env.VERSION }}.zip | |
path: ${{ env.ZIP_RELEASE_ARCHIVE }} | |
- name: Upload folder | |
if: matrix.build_config == 'Debug' | |
continue-on-error: true | |
uses: deep-soft/upload-artifact@v4 | |
with: | |
name: ${{ env.PROG_NAME }}.${{ matrix.build_config }}.${{ matrix.platform_name }} | |
path: _build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }} | |
# - name: Create list file | |
# continue-on-error: true | |
# shell: bash | |
# run: | | |
# list_file="${{ env.PROG_NAME }}.${{ matrix.build }}-${{ matrix.compiler }}-${{ matrix.arch }}-${{ matrix.platform_sln }}-${{ matrix.platform_name }}-${{ matrix.build_config }}.txt" | |
# ls -lR > $list_file | |
# echo "LIST_File=$list_file" >> $GITHUB_ENV | |
- name: Publish | |
if: matrix.build_config == 'Release' | |
continue-on-error: true | |
uses: deep-soft/[email protected] | |
with: | |
tag_name: ${{ env.TAG_NAME }}-${{ env.VERSION }} | |
# files: | | |
# ${{ env.LIST_File }} | |
files: | | |
${{ env.ZIP_RELEASE_ARCHIVE }} | |
- name: Prepare latest Release | |
if: matrix.build_config == 'Release' | |
continue-on-error: false | |
shell: bash | |
run: | | |
mv ${{ env.ZIP_RELEASE_ARCHIVE }} ${{ env.PROG_NAME }}.${{ matrix.platform_name }}.zip | |
echo "${{ env.VERSION }}" > ${{ env.PROG_NAME }}-latest.txt | |
- name: Publish latest Release | |
if: matrix.build_config == 'Release' | |
continue-on-error: false | |
uses: deep-soft/[email protected] | |
with: | |
draft: false | |
tag_name: ${{ env.PROG_NAME }}-latest | |
body: "${{ env.PROG_NAME }} latest: v${{ env.VERSION }}" | |
files: | | |
${{ env.PROG_NAME }}.${{ matrix.platform_name }}.zip | |
${{ env.PROG_NAME }}-latest.txt | |
# add extra plugins and Profile - begin | |
# if: ${{ matrix.platform_sln == 'x64' && inputs.extra_plugins_profile == 'true' }} | |
# if: ${{ inputs.extra_plugins_profile }} && ${{ matrix.platform_sln == 'x64' }} | |
- name: extra - Add plugins and Profile | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
continue-on-error: true | |
shell: bash | |
run: | | |
pushd '_build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}' | |
curl -LOJ "https://github.com/deep-soft/DS-Progs/raw/main/bin/Far3-Plugins-Extra.zip" | |
curl -LOJ "https://github.com/deep-soft/DS-Progs/raw/main/bin/Far3-Profile.zip" | |
7z x Far3-Plugins-Extra.zip | |
7z x Far3-Profile.zip | |
rm Far3-Plugins-Extra.zip | |
rm Far3-Profile.zip | |
popd | |
- name: extra - Sign Windows exe and dll files | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
continue-on-error: true | |
uses: deep-soft/code-sign-action@v9 | |
with: | |
certificate: '${{ secrets.WINDOWS_PFX_BASE64 }}' | |
password: '${{ secrets.WINDOWS_PFX_PASSWORD }}' | |
certificatesha1: '${{ secrets.WINDOWS_PFX_SHA1_THUMBPRINT }}' | |
# certificatename: '${{ secrets.CERTNAME }}' | |
folder: '_build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}' | |
recursive: true | |
- name: extra - Create Zip Archive Release | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
uses: deep-soft/zip-release@v2 | |
with: | |
type: 'zip' | |
filename: '${{ env.PROG_NAME }}.${{ matrix.platform_sln }}.${{ env.VERSION }}-extra.zip' | |
directory: '_build/vc/_output/product/${{ matrix.build_config }}.${{ matrix.platform_sln }}' | |
exclusions: '*.map *.pdb' | |
recursive_exclusions: '*.map *.pdb changelog *Bel.lng *Cze.lng *Ger.lng *Hun.lng *Ita.lng *Lit.lng *Pol.lng *Rus.lng *Sky.lng *Spa.lng *Ukr* *Bel.hlf *Cze.hlf *Ger.hlf *Hun.hlf *Ita.hlf *Lit.hlf *Pol.hlf *Rus.hlf *Sky.hlf *Spa.hlf *Ukr*' | |
path: '.' | |
- name: extra - Publish | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
continue-on-error: true | |
uses: deep-soft/[email protected] | |
with: | |
tag_name: ${{ env.TAG_NAME }}-${{ env.VERSION }} | |
files: | | |
${{ env.ZIP_RELEASE_ARCHIVE }} | |
- name: extra - Prepare latest Release | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
continue-on-error: false | |
shell: bash | |
run: | | |
mv ${{ env.ZIP_RELEASE_ARCHIVE }} ${{ env.PROG_NAME }}.${{ matrix.platform_name }}-extra.zip | |
echo "${{ env.VERSION }}" > ${{ env.PROG_NAME }}-extra-latest.txt | |
- name: extra - Publish latest Release | |
if: always() && inputs.extra_plugins_profile && matrix.platform_sln == 'x64' | |
continue-on-error: false | |
uses: deep-soft/[email protected] | |
with: | |
draft: false | |
tag_name: ${{ env.PROG_NAME }}-latest | |
body: "${{ env.PROG_NAME }} latest: v${{ env.VERSION }}" | |
files: | | |
${{ env.PROG_NAME }}.${{ matrix.platform_name }}-extra.zip | |
${{ env.PROG_NAME }}-extra-latest.txt | |
# add extra plugins and Profile - end |