From c9f63224f725cbc35aa83fb33eff797b8eb18e8e Mon Sep 17 00:00:00 2001 From: Illia Vysochyn Date: Mon, 1 Jul 2024 15:22:48 +0200 Subject: [PATCH] [#61287] WIP: workflows: Build using buildx action Signed-off-by: Illia Vysochyn --- .../github-actions-cron-test-installer.yml | 78 +++++++++++++------ 1 file changed, 55 insertions(+), 23 deletions(-) diff --git a/.github/workflows/github-actions-cron-test-installer.yml b/.github/workflows/github-actions-cron-test-installer.yml index ebd5aef3d6..f03e612da3 100644 --- a/.github/workflows/github-actions-cron-test-installer.yml +++ b/.github/workflows/github-actions-cron-test-installer.yml @@ -29,14 +29,15 @@ jobs: os: [["ubuntu20.04", "ubuntu:20.04"], ["ubuntu22.04", "ubuntu:22.04"], ["centos7", "centos:centos7"]] runs-on: ubuntu-latest env: - IMAGE: ghcr.io/antmicro/openroad-flow-scripts-test-cache - IMAGE_DEPS: ghcr.io/antmicro/openroad-flow-scripts-test-cache-deps + IMAGE: ghcr.io/antmicro/openroad-flow-scripts-test-cache/${{ matrix.os[0] }} + IMAGE_DEPS: ghcr.io/antmicro/openroad-flow-scripts-test-cache-deps/${{ matrix.os[0] }} steps: - name: Check out repository code uses: actions/checkout@v3 with: fetch-depth: 1 submodules: recursive + - name: Network Setup run: | sudo apt-get update @@ -46,17 +47,38 @@ jobs: sudo ifconfig docker0 down sudo brctl delbr docker0 sudo service docker restart + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Run installer - run: | - ./etc/DockerHelper.sh create -target=dev -os=${{ matrix.os[0] }} - docker images - - name: Build project - run: | - docker images - ./etc/DockerHelper.sh create -target=builder -os=${{ matrix.os[0] }} - docker images + + - name: Build dependencies image + uses: docker/build-push-action@v6 + with: + load: true + tags: ${{ env.IMAGE_DEPS }} + context: etc + file: docker/Dockerfile.dev + build-args: fromImage=${{ matrix.os[1] }} + cache-from: type=registry,ref=${{ env.IMAGE_DEPS }} + + - name: List images 1 + run: docker images -a + + - name: Build ORFS image + uses: docker/build-push-action@v6 + with: + load: true + tags: ${{ env.IMAGE }} + context: . + file: docker/Dockerfile.builder + build-args: fromImage=${{ env.IMAGE_DEPS }} + build-contexts: | + ${{ env.IMAGE_DEPS }}=docker-image://${{ env.IMAGE_DEPS }} + cache-from: type=registry,ref=${{ env.IMAGE_DEPS }} + + - name: List images 2 + run: docker images -a + - name: Test build run: | cmd="source ./env.sh && yosys -help && openroad -help && make -C flow ;" @@ -65,10 +87,8 @@ jobs: cmd="source /opt/rh/llvm-toolset-7.0/enable && ${cmd}" cmd="source /opt/rh/rh-python38/enable && ${cmd}" fi - docker run openroad/flow-${{ matrix.os[0] }}-builder /bin/bash -c "${cmd}" - - name: Tag the image - run: | - docker tag openroad/flow-${{ matrix.os[0] }}-builder ${{ env.IMAGE }}/${{ matrix.os[0] }} + docker run ${{ env.IMAGE }} /bin/bash -c "${cmd}" + - name: Login to GitHub Container Registry (GHCR) if: github.event_name != 'pull_request' && github.repository == 'antmicro/OpenROAD-flow-scripts' uses: docker/login-action@v2 @@ -76,17 +96,29 @@ jobs: registry: ghcr.io username: gha password: ${{ github.token }} - - name: Build and export the dependencies image + + - name: Export dependencies image uses: docker/build-push-action@v6 with: push: true - tags: ${{ env.IMAGE_DEPS }}/${{ matrix.os[0] }} + tags: ${{ env.IMAGE_DEPS }} context: etc file: docker/Dockerfile.dev build-args: fromImage=${{ matrix.os[1] }} - cache-from: type=registry,ref=${{ env.IMAGE_DEPS }}/${{ matrix.os[0] }} - cache-to: type=registry,ref=${{ env.IMAGE_DEPS }}/${{ matrix.os[0] }},mode=max - - name: Push container image to GitHub Container Registry (GHCR) - if: github.event_name != 'pull_request' && github.repository == 'antmicro/OpenROAD-flow-scripts' - run: | - docker push ${{ env.IMAGE }}/${{ matrix.os[0] }} + build-contexts: | + ${{ env.IMAGE_DEPS }}=docker-image://${{ env.IMAGE_DEPS }} + cache-from: type=registry,ref=${{ env.IMAGE_DEPS }} + cache-to: type=registry,ref=${{ env.IMAGE_DEPS }},mode=max + + - name: Build ORFS image + uses: docker/build-push-action@v6 + with: + load: true + tags: ${{ env.IMAGE }} + context: . + file: docker/Dockerfile.builder + build-args: fromImage=${{ env.IMAGE_DEPS }} + build-contexts: | + ${{ env.IMAGE_DEPS }}=docker-image://${{ env.IMAGE_DEPS }} + cache-from: type=registry,ref=${{ env.IMAGE }} + cache-to: type=registry,ref=${{ env.IMAGE }},mode=max