Update pip-build.yml #13677
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
name: Build Test Distribute | |
# Controls when the action will run. | |
on: | |
# Triggers the workflow on push or pull request events but only for the master branch | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
schedule: | |
- cron: '0 17 * * *' # Run every day at 17:00 UTC | |
#- cron: '0 6 * * *' # Run every day at 6 AM UTC | |
#UPLOAD_ARTIFACTS condition: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
env: | |
VCPKG-VERSION: '2024.10.21' | |
jobs: | |
prepare-image: | |
uses: ./.github/workflows/prepare-images.yml | |
secrets: inherit | |
versioning-and-release-url: | |
uses: ./.github/workflows/versioning-release.yml | |
with: | |
version-namespace: ${{ contains(github.event.pull_request.labels.*.name, 'full-ci') && github.event_name != 'push' && 'pr-test' || '' }} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
secrets: | |
BUILD_MACHINE_TOKEN: ${{ secrets.BUILD_MACHINE_TOKEN }} | |
windows-build-test: | |
needs: [ prepare-image, versioning-and-release-url ] | |
uses: ./.github/workflows/build-test-windows.yml | |
with: | |
full_config_build: ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
mrbind: ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
secrets: inherit | |
ubuntu-arm64-build-test: | |
needs: [ prepare-image, versioning-and-release-url ] | |
uses: ./.github/workflows/build-test-ubuntu-arm64.yml | |
with: | |
docker_image_tag: ${{needs.prepare-image.outputs.docker_image_tag}} | |
app_version: ${{needs.versioning-and-release-url.outputs.app_version}} | |
full_config_build: ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
mrbind: true | |
secrets: inherit | |
ubuntu-x64-build-test: | |
needs: [ prepare-image, versioning-and-release-url ] | |
uses: ./.github/workflows/build-test-ubuntu-x64.yml | |
with: | |
docker_image_tag: ${{needs.prepare-image.outputs.docker_image_tag}} | |
app_version: ${{needs.versioning-and-release-url.outputs.app_version}} | |
full_config_build: ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
mrbind: true | |
secrets: inherit | |
fedora-build-test: | |
needs: [ prepare-image, versioning-and-release-url ] | |
uses: ./.github/workflows/build-test-fedora.yml | |
with: | |
docker_image_tag: ${{needs.prepare-image.outputs.docker_image_tag}} | |
app_version: ${{needs.versioning-and-release-url.outputs.app_version}} | |
full_config_build: ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
secrets: inherit | |
emscripten-build-test: | |
needs: [ prepare-image, versioning-and-release-url ] | |
uses: ./.github/workflows/build-test-emscripten.yml | |
with: | |
docker_image_tag: ${{needs.prepare-image.outputs.docker_image_tag}} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
macos-build-test: | |
needs: [ versioning-and-release-url ] | |
uses: ./.github/workflows/build-test-macos.yml | |
with: | |
app_version: ${{needs.versioning-and-release-url.outputs.app_version}} | |
UPLOAD_ARTIFACTS: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
mrbind: ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
secrets: inherit | |
update-win-version: | |
if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
needs: | |
- windows-build-test | |
- versioning-and-release-url | |
timeout-minutes: 60 | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Checkout Vcpkg ${{env.VCPKG-VERSION}} | |
working-directory: C:\vcpkg | |
run: | | |
git fetch | |
git checkout ${{env.VCPKG-VERSION}} | |
- name: Restore Vcpkg Cache | |
uses: actions/cache@v4 | |
id: vcpkg-cache | |
with: | |
key: vcpkg-cache-${{env.VCPKG-VERSION}} | |
path: | | |
C:\vcpkg\* | |
- name: Configure AWS Credentials | |
if: ${{ env.INTERNAL_BUILD }} | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: arn:aws:iam::259351611210:role/GitHubMeshLibAwsCredsRole | |
aws-region: us-east-1 | |
- name: Update vcpkg packages | |
run: | | |
.\thirdparty\install.bat --write-s3 | |
- name: Download Windows Binaries Archive | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: WindowsArchive* | |
merge-multiple: true | |
- name: Extract Windows Binaries | |
run: | | |
tar -xvzf MREDist_Release.zip | |
tar -xvzf MREDist_Debug.zip | |
- name: Make Install Folder | |
run: py -3.10 scripts\make_install_folder.py ${{needs.versioning-and-release-url.outputs.app_version}} | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Archive Distribution | |
run: py -3.10 scripts\zip_distribution.py install example_plugin MeshLibDist.zip | |
- name: Test Example Plugin # call it after archive not to pack build results | |
run: | | |
msbuild -m example_plugin\example_plugin.sln -p:Configuration=Debug | |
msbuild -m example_plugin\example_plugin.sln -p:Configuration=Release | |
- name: Upload Windows Distribution | |
uses: actions/upload-artifact@v4 | |
with: | |
name: DistributivesWin | |
path: MeshLibDist.zip | |
retention-days: 1 | |
create-nuget-package: | |
if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
needs: | |
- windows-build-test | |
- versioning-and-release-url | |
timeout-minutes: 20 | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Generate NuGet specification | |
run: | | |
echo ${{ needs.versioning-and-release-url.outputs.app_version }} | |
py -3 scripts\generate_nuget_spec.py ${{ needs.versioning-and-release-url.outputs.app_version }} | |
- name: Download NuGet Executable | |
run: curl https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -o nuget.exe | |
- name: Build NuGet package | |
run: nuget.exe pack Package.nuspec -OutputFileNamesWithoutVersion | |
- name: Upload NuGet Package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: DistributivesNuGet | |
path: MeshLib.nupkg | |
retention-days: 1 | |
upload-distributions: | |
if: ${{ !cancelled() && ( github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') ) }} | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
needs: | |
- update-win-version | |
- create-nuget-package | |
- ubuntu-x64-build-test | |
- ubuntu-arm64-build-test | |
- fedora-build-test | |
- emscripten-build-test | |
- macos-build-test | |
- versioning-and-release-url | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download All Developer Distributives | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: Distributives* | |
merge-multiple: true | |
failOnError: false | |
- name: Rename Distributives | |
run: | | |
shopt -s nullglob | |
for PKG_FILE in MeshLibDist*.zip ; do | |
mv "$PKG_FILE" "${PKG_FILE/Dist/Dist_${{ needs.versioning-and-release-url.outputs.app_version }}}" | |
done | |
for PKG_FILE in MeshLib*.nupkg ; do | |
mv "$PKG_FILE" "${PKG_FILE/MeshLib/MeshLib_${{ needs.versioning-and-release-url.outputs.app_version }}}" | |
done | |
for PKG_FILE in meshlib*-dev.deb meshlib*-dev.rpm meshlib*.pkg; do | |
mv "$PKG_FILE" "${PKG_FILE/meshlib/meshlib_${{ needs.versioning-and-release-url.outputs.app_version }}}" | |
done | |
- name: Upload Distributives | |
run: | | |
shopt -s nullglob | |
PKG_FILES="MeshLibDist*.zip meshlib*-dev.deb meshlib*-dev.rpm meshlib*.pkg MeshLib*.nupkg" | |
if [ -n "$(echo $PKG_FILES)" ] ; then | |
echo ${{ secrets.BUILD_MACHINE_TOKEN }} | gh auth login --with-token | |
gh release upload ${{ needs.versioning-and-release-url.outputs.tag }} $PKG_FILES --clobber | |
fi | |
test-distribution: | |
if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
needs: [ versioning-and-release-url, upload-distributions ] | |
uses: ./.github/workflows/test-distribution.yml | |
with: | |
release_id: ${{needs.versioning-and-release-url.outputs.release_id}} | |
update-dev-documentation: | |
if: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-ci') || contains(github.event.pull_request.labels.*.name, 'update-doc') }} | |
needs: | |
- versioning-and-release-url | |
uses: ./.github/workflows/update-docs.yml | |
with: | |
output_folder: MeshLib/dev | |
secrets: inherit | |
update-artifacts: | |
timeout-minutes: 15 | |
runs-on: ubuntu-20.04 | |
needs: [ upload-distributions ] | |
if: always() | |
steps: | |
# all Windows | |
- name: Delete Windows Debug Install Archive artifact | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: WindowsArchive* | |
failOnError: false | |
# Distributives | |
- name: Delete Distribution | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: Distributives* | |
failOnError: false | |
- name: Delete Wheelhouse | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: Wheelhouse* | |
failOnError: false | |
# generate timing logs archive | |
- name: Download Timing Logs Archive | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: Timing_Logs* | |
merge-multiple: true | |
- name: Generate Timing Logs Archive | |
run: | | |
shopt -s nullglob | |
if [ -n "$(echo *.csv)" ] ; then | |
tar -cvzf time_log.tar.gz *.csv | |
else | |
# create empty tar archive | |
# https://superuser.com/questions/448623/how-to-get-an-empty-tar-archive | |
tar -czf time_log.tar.gz -T /dev/null | |
fi | |
- name: Upload Timing Logs Archive | |
uses: actions/upload-artifact@v4 | |
with: | |
name: time_log | |
path: time_log.tar.gz | |
retention-days: 1 | |
- name: Delete Timing Logs Source | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: Timing_Logs* | |
failOnError: false |