Skip to content

Commit c1fcd22

Browse files
authored
Improve how we deal with artifacts (#274)
* Delete build artifacts after they are packaged, saving time in the final package merge. * Update to latest download-artifact and upload-artifact, for better HTTP retry logic. This helps with transient errors in our packaging workflow, as some of our build artifacts are > 1GB. * Update to a newer version of delete-artifact that supports file globs. * Delete build artifacts even earlier, at the end of their build step.
1 parent dce0a2e commit c1fcd22

File tree

1 file changed

+39
-47
lines changed

1 file changed

+39
-47
lines changed

.github/workflows/cpp-packaging.yml

Lines changed: 39 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ jobs:
136136
tar -czhf ../packaging-tools.tgz .
137137
138138
- name: upload artifacts
139-
uses: actions/upload-artifact@v2
139+
uses: actions/upload-artifact@v2.2.2
140140
with:
141141
name: packaging-tools-${{ matrix.tools_platform }}
142142
path: packaging-tools.tgz
@@ -182,7 +182,7 @@ jobs:
182182
find firebase-cpp-sdk-*-package -type f
183183
184184
- name: upload artifacts
185-
uses: actions/upload-artifact@v2
185+
uses: actions/upload-artifact@v2.2.2
186186
with:
187187
name: firebase-cpp-sdk-ios-package
188188
path: firebase-cpp-sdk-ios-package.tgz
@@ -228,7 +228,7 @@ jobs:
228228
find firebase-cpp-sdk-*-package -type f
229229
230230
- name: upload artifacts
231-
uses: actions/upload-artifact@v2
231+
uses: actions/upload-artifact@v2.2.2
232232
with:
233233
name: firebase-cpp-sdk-android-${{ matrix.stl }}-package
234234
path: firebase-cpp-sdk-android-${{ matrix.stl }}-package.tgz
@@ -356,7 +356,7 @@ jobs:
356356
continue-on-error: true
357357

358358
- name: upload artifacts
359-
uses: actions/upload-artifact@v2
359+
uses: actions/upload-artifact@v2.2.2
360360
with:
361361
name: firebase-cpp-sdk-${{ env.SDK_NAME }}-build
362362
path: firebase-cpp-sdk-${{ env.SDK_NAME }}-build.tgz
@@ -421,7 +421,7 @@ jobs:
421421
ref: ${{ github.event.inputs.commitIdToPackage }}
422422

423423
- name: download artifact
424-
uses: actions/download-artifact@v2
424+
uses: actions/download-artifact@v2.0.8
425425
with:
426426
# download-artifact doesn't support wildcards, but by default
427427
# will download all artifacts. Sadly this is what we must do.
@@ -486,19 +486,35 @@ jobs:
486486
find firebase-cpp-sdk-*-package -type f
487487
488488
- name: upload SDK zip
489-
uses: actions/upload-artifact@v2
489+
uses: actions/upload-artifact@v2.2.2
490490
with:
491491
name: firebase-cpp-sdk-${{ matrix.sdk_platform }}${{ matrix.suffix}}-package
492492
path: firebase-cpp-sdk-${{ matrix.sdk_platform }}${{ matrix.suffix}}-package.tgz
493493

494+
- name: cleanup build artifacts
495+
if: |
496+
(
497+
(github.event.inputs.preserveIntermediateArtifacts == 0 || github.event.inputs.preserveIntermediateArtifacts == '')
498+
&& github.event.inputs.downloadPublicVersion == ''
499+
&& github.event.inputs.downloadPreviousRun == ''
500+
)
501+
# Remove the build artifacts that were consumed during this step of packaging.
502+
uses: geekyeggo/delete-artifact@1-glob-support
503+
with:
504+
name: |
505+
firebase-cpp-sdk-${{ matrix.sdk_platform }}${{ matrix.suffix }}*-build
506+
failOnError: false
507+
useGlob: true
508+
509+
494510
download_sdk_package:
495511
name: download-sdk-package
496512
runs-on: ubuntu-latest
497513
needs: [log_inputs]
498514
if: ${{ github.event.inputs.downloadPublicVersion != '' || github.event.inputs.downloadPreviousRun != '' }}
499515
steps:
500516
- name: fetch artifact from previous run
501-
uses: dawidd6/action-download-artifact@v2
517+
uses: dawidd6/action-download-artifact@v2.0.8
502518
if: ${{ github.event.inputs.downloadPreviousRun != '' }}
503519
with:
504520
name: 'firebase_cpp_sdk.zip'
@@ -529,17 +545,18 @@ jobs:
529545
echo "::warning ::$(cat firebase_cpp_sdk_hash.txt)"
530546
531547
- name: upload hash
532-
uses: actions/upload-artifact@v2
548+
uses: actions/upload-artifact@v2.2.2
533549
with:
534550
name: firebase_cpp_sdk_hash.txt
535551
path: firebase_cpp_sdk_hash.txt
536552

537553
- name: upload SDK zip
538-
uses: actions/upload-artifact@v2
554+
uses: actions/upload-artifact@v2.2.2
539555
with:
540556
name: firebase_cpp_sdk.zip
541557
path: firebase_cpp_sdk.zip
542558

559+
543560
merge_packages:
544561
name: final-merge-packages
545562
runs-on: ubuntu-latest
@@ -553,7 +570,7 @@ jobs:
553570
ref: ${{ github.event.inputs.commitIdToPackage }}
554571

555572
- name: download artifact
556-
uses: actions/download-artifact@v2
573+
uses: actions/download-artifact@v2.0.8
557574
with:
558575
# download-artifact doesn't support wildcards, but by default
559576
# will download all artifacts. Sadly this is what we must do.
@@ -592,20 +609,21 @@ jobs:
592609
find firebase_cpp_sdk -type f
593610
594611
- name: upload hash
595-
uses: actions/upload-artifact@v2
612+
uses: actions/upload-artifact@v2.2.2
596613
with:
597614
name: firebase_cpp_sdk_hash.txt
598615
path: firebase_cpp_sdk_hash.txt
599616

600617
- name: upload SDK zip
601-
uses: actions/upload-artifact@v2
618+
uses: actions/upload-artifact@v2.2.2
602619
with:
603620
name: firebase_cpp_sdk.zip
604621
path: firebase_cpp_sdk.zip
605622

606-
cleanup_artifacts:
607-
# Clean up intermediate artifacts.
608-
name: cleanup-artifacts
623+
cleanup_packaging_artifacts:
624+
# Clean up intermediate artifacts from packaging step.
625+
# This can happen after the final package merge is finished.
626+
name: cleanup-packaging-artifacts
609627
runs-on: ubuntu-latest
610628
needs: [merge_packages]
611629
if: |
@@ -615,39 +633,13 @@ jobs:
615633
&& github.event.inputs.downloadPreviousRun == ''
616634
)
617635
steps:
618-
- uses: geekyeggo/delete-artifact@v1
636+
- uses: geekyeggo/delete-artifact@1-glob-support
619637
with:
620638
name: |
621-
packaging-tools-darwin
622-
packaging-tools-linux
623-
firebase-cpp-sdk-windows-x86-Release-dynamic-legacy-build
624-
firebase-cpp-sdk-windows-x64-Release-dynamic-legacy-build
625-
firebase-cpp-sdk-windows-x86-Debug-dynamic-legacy-build
626-
firebase-cpp-sdk-windows-x64-Debug-dynamic-legacy-build
627-
firebase-cpp-sdk-windows-x86-Release-static-legacy-build
628-
firebase-cpp-sdk-windows-x64-Release-static-legacy-build
629-
firebase-cpp-sdk-windows-x86-Debug-static-legacy-build
630-
firebase-cpp-sdk-windows-x64-Debug-static-legacy-build
631-
firebase-cpp-sdk-linux-x86-Release-static-legacy-build
632-
firebase-cpp-sdk-linux-x64-Release-static-legacy-build
633-
firebase-cpp-sdk-linux-x86-Release-static-c++11-build
634-
firebase-cpp-sdk-linux-x64-Release-static-c++11-build
635-
firebase-cpp-sdk-darwin-x64-Release-static-legacy-build
636-
firebase-cpp-sdk-windows-x86-Release-dynamic-package
637-
firebase-cpp-sdk-windows-x64-Release-dynamic-package
638-
firebase-cpp-sdk-windows-x86-Debug-dynamic-package
639-
firebase-cpp-sdk-windows-x64-Debug-dynamic-package
640-
firebase-cpp-sdk-windows-x86-Release-static-package
641-
firebase-cpp-sdk-windows-x64-Release-static-package
642-
firebase-cpp-sdk-windows-x86-Debug-static-package
643-
firebase-cpp-sdk-windows-x64-Debug-static-package
644-
firebase-cpp-sdk-linux-package
645-
firebase-cpp-sdk-ios-package
646-
firebase-cpp-sdk-darwin-package
647-
firebase-cpp-sdk-android-stlport-package
648-
firebase-cpp-sdk-android-gnustl-package
649-
firebase-cpp-sdk-android-c++-package
639+
packaging-tools-*
640+
firebase-cpp-sdk-*-package
650641
failOnError: false
642+
useGlob: true
651643

652644
tests:
653645
needs: [merge_packages, download_sdk_package]
@@ -678,7 +670,7 @@ jobs:
678670
if: runner.os == 'macOS'
679671
run: sudo xcode-select -s /Applications/Xcode_${{ env.xcodeVersion }}.app/Contents/Developer
680672
- name: Download Firebase C++ SDK
681-
uses: actions/download-artifact@v2
673+
uses: actions/download-artifact@v2.0.8
682674
with:
683675
name: firebase_cpp_sdk.zip
684676
- name: Unzip Firebase C++ SDK
@@ -704,7 +696,7 @@ jobs:
704696
- name: Build integration tests
705697
run: |
706698
python scripts/gha/build_testapps.py --t ${{ env.apis }} --p ${{ matrix.target_platform }} --packaged_sdk firebase_cpp_sdk --output_directory "${{ github.workspace }}" --noadd_timestamp
707-
699+
708700
- name: Run desktop integration tests
709701
if: matrix.target_platform == 'Desktop' && !cancelled()
710702
run: |

0 commit comments

Comments
 (0)