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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false 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 env: CONTAINER_NAME_TAG: ${{ steps.vars.outputs.container-name-tag }} run: | docker build -t $env:CONTAINER_NAME_TAG . - name: Save container image env: CONTAINER_NAME_TAG: ${{ steps.vars.outputs.container-name-tag }} CONTAINER_FILENAME: ${{ steps.vars.outputs.container-filename }} run: | docker save $env:CONTAINER_NAME_TAG > $env:CONTAINER_FILENAME - name: Upload container image uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 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 env: CONTAINER_FILENAME: ${{ needs.build-ci-container-windows.outputs.container-filename }} CONTAINER_NAME_TAG: ${{ needs.build-ci-container-windows.outputs.container-name-tag }} CONTAINER_NAME: ${{ needs.build-ci-container-windows.outputs.container-name }} 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:$CONTAINER_FILENAME \ --dest-compress-format zstd \ docker://$CONTAINER_NAME_TAG skopeo copy docker-archive:$CONTAINER_FILENAME \ --dest-compress-format zstd \ docker://$CONTAINER_NAME:latest