78 lines · yaml
1name: Build Windows CI Container2 3permissions:4 contents: read5 6on:7 push:8 branches:9 - main10 paths:11 - .github/workflows/build-ci-container-windows.yml12 - '.github/workflows/containers/github-action-ci-windows/**'13 pull_request:14 paths:15 - .github/workflows/build-ci-container-windows.yml16 - '.github/workflows/containers/github-action-ci-windows/**'17 18jobs:19 build-ci-container-windows:20 if: github.repository_owner == 'llvm'21 runs-on: windows-202222 outputs:23 container-name: ${{ steps.vars.outputs.container-name }}24 container-name-tag: ${{ steps.vars.outputs.container-name-tag }}25 container-filename: ${{ steps.vars.outputs.container-filename }}26 steps:27 - name: Checkout LLVM28 uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.029 with:30 sparse-checkout: .github/workflows/containers/github-action-ci-windows31 - name: Write Variables32 id: vars33 run: |34 $tag = [int64](Get-Date -UFormat %s)35 $container_name="ghcr.io/$env:GITHUB_REPOSITORY_OWNER/ci-windows-2022"36 echo "container-name=${container_name}" >> $env:GITHUB_OUTPUT37 echo "container-name-tag=${container_name}:${tag}" >> $env:GITHUB_OUTPUT38 echo "container-filename=ci-windows-${tag}.tar" >> $env:GITHUB_OUTPUT39 - name: Build Container40 working-directory: .github/workflows/containers/github-action-ci-windows41 run: |42 docker build -t ${{ steps.vars.outputs.container-name-tag }} .43 - name: Save container image44 run: |45 docker save ${{ steps.vars.outputs.container-name-tag }} > ${{ steps.vars.outputs.container-filename }}46 - name: Upload container image47 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.048 with:49 name: container50 path: ${{ steps.vars.outputs.container-filename }}51 retention-days: 1452 53 push-ci-container:54 if: github.event_name == 'push'55 needs:56 - build-ci-container-windows57 permissions:58 packages: write59 runs-on: ubuntu-24.0460 env:61 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}62 steps:63 - name: Download container64 uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.065 with:66 name: container67 - name: Push Container68 run: |69 sudo apt-get update70 sudo apt-get install -y skopeo71 skopeo login -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }} ghcr.io72 skopeo copy docker-archive:${{ needs.build-ci-container-windows.outputs.container-filename }} \73 --dest-compress-format zstd \74 docker://${{ needs.build-ci-container-windows.outputs.container-name-tag }}75 skopeo copy docker-archive:${{ needs.build-ci-container-windows.outputs.container-filename }} \76 --dest-compress-format zstd \77 docker://${{ needs.build-ci-container-windows.outputs.container-name }}:latest78