| name: Build Windows CI Container |
| |
| permissions: |
| contents: read |
| |
| on: |
| push: |
| branches: |
| - main |
| paths: |
| - .github/workflows/build-ci-container-windows.yml |
| - '.github/workflows/containers/github-action-ci-windows/**' |
| pull_request: |
| paths: |
| - .github/workflows/build-ci-container-windows.yml |
| - '.github/workflows/containers/github-action-ci-windows/**' |
| |
| jobs: |
| build-ci-container-windows: |
| if: github.repository_owner == 'llvm' |
| runs-on: windows-2022 |
| outputs: |
| container-name: ${{ steps.vars.outputs.container-name }} |
| container-name-tag: ${{ steps.vars.outputs.container-name-tag }} |
| container-filename: ${{ steps.vars.outputs.container-filename }} |
| steps: |
| - name: Checkout LLVM |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| with: |
| sparse-checkout: .github/workflows/containers/github-action-ci-windows |
| - name: Write Variables |
| id: vars |
| run: | |
| $tag = [int64](Get-Date -UFormat %s) |
| $container_name="ghcr.io/$env:GITHUB_REPOSITORY_OWNER/ci-windows-2022" |
| echo "container-name=${container_name}" >> $env:GITHUB_OUTPUT |
| echo "container-name-tag=${container_name}:${tag}" >> $env:GITHUB_OUTPUT |
| echo "container-filename=ci-windows-${tag}.tar" >> $env:GITHUB_OUTPUT |
| - name: Build Container |
| working-directory: .github/workflows/containers/github-action-ci-windows |
| run: | |
| docker build -t ${{ steps.vars.outputs.container-name-tag }} . |
| - name: Save container image |
| run: | |
| docker save ${{ steps.vars.outputs.container-name-tag }} > ${{ steps.vars.outputs.container-filename }} |
| - name: Upload container image |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 |
| with: |
| name: container |
| path: ${{ steps.vars.outputs.container-filename }} |
| retention-days: 14 |
| |
| push-ci-container: |
| if: github.event_name == 'push' |
| needs: |
| - build-ci-container-windows |
| permissions: |
| packages: write |
| runs-on: ubuntu-24.04 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| steps: |
| - name: Download container |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 |
| with: |
| name: container |
| - name: Push Container |
| run: | |
| sudo apt-get update |
| sudo apt-get install -y skopeo |
| skopeo login -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }} ghcr.io |
| skopeo copy docker-archive:${{ needs.build-ci-container-windows.outputs.container-filename }} \ |
| --dest-compress-format zstd \ |
| docker://${{ needs.build-ci-container-windows.outputs.container-name-tag }} |
| skopeo copy docker-archive:${{ needs.build-ci-container-windows.outputs.container-filename }} \ |
| --dest-compress-format zstd \ |
| docker://${{ needs.build-ci-container-windows.outputs.container-name }}:latest |