image: - macos-bigsur - Ubuntu1604 - Visual Studio 2015 platform: - x86 environment: access_token: secure: Me2UWjTL1G91AfTT9ruasivTMxtSO0SZbv3wIFRS2RygMiZhU8r9sSQ3a9QB7h70wnl2W2Cv8o1v0Z2hONpltyxKxlSP4OqXeIIIx0ssRMgg8rkm2qlDWcCzZur3tM4v matrix: fast_finish: true cache: - ../windows-build skip_commits: files: - doc/* - '**/*.md' - '**/*.txt' before_build: - ps: | Write-Output "Building repo '$env:APPVEYOR_REPO_NAME' branch: $env:APPVEYOR_REPO_BRANCH" $platform = uname -s if ($platform -eq 'Linux') { sudo apt-get update -yqqm sudo apt-get install -ym gcc libpcap-dev libvdeplug-dev libpcre3-dev libedit-dev libsdl2-dev libpng-dev libsdl2-ttf-dev } else { if ($platform -eq 'Darwin') { $env:HOMEBREW_NO_AUTO_UPDATE=1; brew install vde pcre libedit sdl2 libpng zlib sdl2_ttf make git-lfs } } git lfs install build_script: - cmd: | "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" echo Building with %NUMBER_OF_PROCESSORS% processors cd "Visual Studio Projects" & vcbuild /M%NUMBER_OF_PROCESSORS% /useenv /rebuild simh.sln "Release|Win32" & cd .. - ps: | if ($isWindows) { $platform = 'Windows' $arch = 'Win32' $commit_id_file = 'Visual Studio Projects\.git-commit-id.h' } else { $platform = uname -s $arch = arch if ($platform -eq 'Linux') { $ncpus = nproc $parallel = '-j' + $ncpus Write-Host "Building with $ncpus processors" } else { $platform = 'macOS' } $commit_id_file = '.git-commit-id' make QUIET=1 $parallel } on_success: - ps: | $id_line = Select-String -Path $commit_id_file -Pattern 'SIM_GIT_COMMIT_ID' $id = $id_line.Line.SubString($id_line.line.IndexOf("SIM_GIT_COMMIT_ID") + 18, 8) $datetime = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" $version_major = (Select-String -Path 'sim_rev.h' -Pattern '#define\s+SIM_MAJOR\s+(\d+)').Matches.Groups[1].Value $version_minor = (Select-String -Path 'sim_rev.h' -Pattern '#define\s+SIM_MINOR\s+(\d+)').Matches.Groups[1].Value $version_mode = (Select-String -Path 'sim_rev.h' -Pattern '#define\s+SIM_VERSION_MODE\s+"(.+?)"').Matches.Groups[1].Value - git config --global credential.helper store - ps: Set-Content -Path "$HOME\.git-credentials" -Value "https://$($env:access_token):x-oauth-basic@github.com`n" -NoNewline - git config --global credential.helper store - git config --global user.email "mark@infocomm.com" - git config --global user.name "Mark Pizzolato" - git config --global core.autocrlf false # Linux & macOS use the shell to address this, Windows uses cmd. Powershell on Windows doesn't like git output to stderr - sh: | if test -d ../Development-Binaries then pushd ../Development-Binaries git pull origin master popd else pushd .. git clone -q "https://github.com/simh/Development-Binaries" Development-Binaries popd fi - cmd: | if NOT EXIST ..\Development-Binaries pushd .. & git clone -q "https://github.com/simh/Development-Binaries" Development-Binaries & popd pushd ..\Development-Binaries & git pull origin master & popd - ps: | cd ../Development-Binaries $pkg_filename = "simh-$datetime-$platform-$arch-$version_major.$version_minor-$version_mode-$id" if ($isWindows) { $pkg_filename = $pkg_filename + '.zip' Compress-Archive -Path $env:APPVEYOR_BUILD_FOLDER\BIN\NT\Win32-Release\*.exe -DestinationPath "$pkg_filename" } else { $pkg_filename = $pkg_filename + '.tgz' pushd $env:APPVEYOR_BUILD_FOLDER/BIN tar -cvzf ../../Development-Binaries/$pkg_filename --exclude=buildtools --exclude=NT '--exclude=*-build' * popd } "$platform Build results for simh Commit: https://github.com/simh/simh/commit/$id" | Out-File -FilePath ../pkg_commit_message -Encoding Ascii (Get-Content README.md) -replace ('(\['+$platform+' is here\]\(https\:\/\/github\.com\/simh\/Development-Binaries\/blob\/master\/)([a-zA-Z0-9._-]+)(.+\.)'),('$1'+$pkg_filename+'$3') | Out-File -FilePath README.md -Encoding Ascii $recent_saved_commit = git log -1 --grep="$platform Build" --pretty=format:%H $recent_saved_commit_time = git log -1 --pretty="%at" $recent_saved_commit $oneweek=$((60 * 60 * 24 * 7)) # Only update the https://github.com/simh/DevelopmentBinaries repository # during CI/CD processing of direct commits pushed to the # https://github.com/simh/simh repository (i.e. don't update the # DevelopmentBinaries when CI/CD actions are being done on external # pull requests. # Additionally, only update the https://github.com/simh/DevelopmentBinaries # repository if the current build for this platform is one week or more # from the last saved build for this platform in the repository if (((Get-Date -UFormat %s) -gt $recent_saved_commit_time + $oneweek) -and ("$env:APPVEYOR_PULL_REQUEST_NUMBER" -eq "") -and 0) { ("$platform Build") | Out-File -FilePath ../Save-Build-Results } Write-Output "Building repo '$env:APPVEYOR_REPO_NAME' branch: $env:APPVEYOR_REPO_BRANCH" if ("$env:APPVEYOR_PULL_REQUEST_NUMBER" -ne "") { Write-Output "Skipping Saving binaries for pull request $env:APPVEYOR_PULL_REQUEST_NUMBER CI build" } else { if ((Get-Date -UFormat %s) -lt $recent_saved_commit_time + $oneweek) { Write-Output "Skipping Saving binaries since the last one was saved " + (([System.DateTimeOffset]::FromUnixTimeSeconds($recent_saved_commit_time)).DateTime).ToString() } } # Linux & macOS use the shell to perform git activities. # Windows uses cmd. Poweshell on Windows doesn't like git output to stderr - sh: | if [ -f ../Save-Build-Results ] then git add * git commit -F ../pkg_commit_message git push -u origin master else # clean up the un-committed pieces so the cache is maintained correctly git reset --hard fi - cmd: | if EXIST ..\Save-Build-Results git add * if EXIST ..\Save-Build-Results git commit -F ../pkg_commit_message if EXIST ..\Save-Build-Results git push -u origin master rem clean up the un-committed pieces so the cache is maintained correctly if NOT EXIST ..\Save-Build-Results git reset --hard notifications: - provider: Email to: - Mark@infocomm.com on_build_success: false