name: Build IfcOpenShell Windows on: workflow_dispatch: jobs: build_ifcopenshell: runs-on: windows-2022 strategy: fail-fast: false matrix: arch: ['x64'] steps: - name: Checkout Repository uses: actions/checkout@v5 with: submodules: recursive - name: Checkout Build Repository uses: actions/checkout@v5 with: repository: IfcOpenShell/build-outputs path: _deps-vs2022-x64-installed ref: windows-${{ matrix.arch }} lfs: true token: ${{ secrets.BUILD_REPO_TOKEN }} - name: Install Dependencies run: | choco install -y sed 7zip.install awscli - name: Unpack Dependencies run: | cd _deps-vs2022-x64-installed Get-ChildItem -Path . -Filter 'cache-*.zip' | ForEach-Object { 7z x $_.FullName } - name: ccache # TODO: Use tag after 1.2.20 releases. uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 with: key: win-${{ matrix.arch }} # Windows ccache needs ~1GB # and with default 500MB some cache gets deleted, leading to misses. max-size: 5000MB - name: Run Build Script And Pack .zip Archives shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" cd win python build-all-win.py - name: Pack Dependencies run: | cd _deps-vs2022-x64-installed Get-ChildItem -Path . -Directory | ForEach-Object { $cacheFile = "cache-$($_.Name).zip" echo $cacheFile if (!(Test-Path $cacheFile)) { 7z a $cacheFile $_.FullName } } - name: Commit and Push Changes to Build Repository run: | cd _deps-vs2022-x64-installed git config user.name "IfcOpenBot" git config user.email "ifcopenbot@ifcopenshell.org" git add *.zip git commit -m "Update build artifacts [skip ci]" || echo "No changes to commit" git push || echo "Push failed" - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v5 with: aws-access-key-id: ${{ secrets.AWS_UPLOAD_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_UPLOAD_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Upload .zip Archives to S3 env: AWS_DEBUG: 1 AWS_RETRY_MODE: standard AWS_MAX_ATTEMPTS: 3 run: | dir "$env:USERPROFILE\output" foreach ($zip in Get-ChildItem -Path "$env:USERPROFILE\output" -Filter *.zip) { aws s3 cp "$($zip.FullName)" s3://ifcopenshell-builds/ --debug Start-Sleep -Seconds 5 }