diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c5d845b..52362c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,36 +36,49 @@ jobs: arch: arm64 builder: zephyr-runner-v2-linux-arm64-4xlarge - services: - registry: - image: registry:2 - ports: - - 5000:5000 - steps: - name: Checkout uses: actions/checkout@v3 - - name: Generate local metadata for base image - id: meta_ci_base - uses: docker/metadata-action@v4 - with: - images: | - localhost:5000/zephyrproject-rtos/ci-base-testing + - name: Set up buildah + run: | + # Add subuids and subgids to runner user for rootless operation. + sudo usermod \ + --add-subuids 100000-165535 \ + --add-subgids 100000-165535 \ + $(whoami) - - name: Generate local metadata for CI image - id: meta_ci - uses: docker/metadata-action@v4 - with: - images: | - localhost:5000/zephyrproject-rtos/ci-testing + # Install buildah package. + sudo apt-get -y update + sudo apt-get -y install buildah - - name: Generate local metadata for Developer image - id: meta_developer - uses: docker/metadata-action@v4 - with: - images: | - localhost:5000/zephyrproject-rtos/zephyr-build-testing + podman system migrate + + - name: DEBUG + run: | + sudo cat /etc/subuid + sudo cat /etc/subgid + + # - name: Generate local metadata for base image + # id: meta_ci_base + # uses: docker/metadata-action@v4 + # with: + # images: | + # localhost:5000/zephyrproject-rtos/ci-base-testing + + # - name: Generate local metadata for CI image + # id: meta_ci + # uses: docker/metadata-action@v4 + # with: + # images: | + # localhost:5000/zephyrproject-rtos/ci-testing + + # - name: Generate local metadata for Developer image + # id: meta_developer + # uses: docker/metadata-action@v4 + # with: + # images: | + # localhost:5000/zephyrproject-rtos/zephyr-build-testing - name: Generate push metadata for base image if: ${{ github.event_name != 'pull_request' }} @@ -112,189 +125,192 @@ jobs: type=ref,event=branch type=ref,event=tag - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - driver-opts: network=host - - - name: Build base docker image - uses: docker/build-push-action@v3 - with: - context: . - file: Dockerfile.base - platforms: ${{ matrix.variant.platform }} - push: true - tags: ${{ steps.meta_ci_base.outputs.tags }} - labels: ${{ steps.meta_ci_base.outputs.labels }} - - - name: Build CI docker image - uses: docker/build-push-action@v3 + # - name: Build base docker image + # uses: docker/build-push-action@v3 + # with: + # context: . + # file: Dockerfile.base + # platforms: ${{ matrix.variant.platform }} + # push: true + # tags: ${{ steps.meta_ci_base.outputs.tags }} + # labels: ${{ steps.meta_ci_base.outputs.labels }} + + - name: Build base image + uses: redhat-actions/buildah-build@v2 with: context: . - file: Dockerfile.ci - platforms: ${{ matrix.variant.platform }} - push: true - tags: ${{ steps.meta_ci.outputs.tags }} - labels: ${{ steps.meta_ci.outputs.labels }} - build-args: | - BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base.outputs.version }} - - - name: Build Developer docker image - uses: docker/build-push-action@v3 - with: - context: . - file: Dockerfile.devel - platforms: ${{ matrix.variant.platform }} - push: true - tags: ${{ steps.meta_developer.outputs.tags }} - labels: ${{ steps.meta_developer.outputs.labels }} - build-args: | - BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-testing:${{ steps.meta_ci.outputs.version }} - - - name: Login to DockerHub - if: ${{ github.event_name != 'pull_request' }} - uses: docker/login-action@v2 - with: - registry: docker.io - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - if: ${{ github.event_name != 'pull_request' }} - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push base docker image - if: ${{ github.event_name != 'pull_request' }} - uses: stephanosio/tag-push-action@v2.1.0 - with: - src: localhost:5000/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base.outputs.version }} - dst: ${{ steps.meta_ci_base_push.outputs.tags }} - - - name: Push CI docker image - if: ${{ github.event_name != 'pull_request' }} - uses: stephanosio/tag-push-action@v2.1.0 - with: - src: localhost:5000/zephyrproject-rtos/ci-testing:${{ steps.meta_ci.outputs.version }} - dst: ${{ steps.meta_ci_push.outputs.tags }} - - - name: Push Developer docker image - if: ${{ github.event_name != 'pull_request' }} - uses: stephanosio/tag-push-action@v2.1.0 - with: - src: localhost:5000/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer.outputs.version }} - dst: ${{ steps.meta_developer_push.outputs.tags }} - - merge: - name: Merge - runs-on: - group: zephyr-runner-v2-linux-x64-4xlarge - needs: build - if: ${{ github.event_name != 'pull_request' }} - - steps: - - name: Login to DockerHub - uses: docker/login-action@v2 - with: - registry: docker.io - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Generate push metadata for base docker image - id: meta_ci_base_push - uses: docker/metadata-action@v4 - with: - images: | - docker.io/zephyrprojectrtos/ci-base-testing - ghcr.io/zephyrproject-rtos/ci-base-testing - flavor: | - latest=false - tags: | - type=ref,event=branch - type=ref,event=tag - type=raw,value=latest,enable={{is_default_branch}} - - - name: Generate push metadata for CI image - id: meta_ci_push - uses: docker/metadata-action@v4 - with: - images: | - docker.io/zephyrprojectrtos/ci-testing - ghcr.io/zephyrproject-rtos/ci-testing - flavor: | - latest=false - tags: | - type=ref,event=branch - type=ref,event=tag - type=raw,value=latest,enable={{is_default_branch}} - - - name: Generate push metadata for Developer image - id: meta_developer_push - uses: docker/metadata-action@v4 - with: - images: | - docker.io/zephyrprojectrtos/zephyr-build-testing - ghcr.io/zephyrproject-rtos/zephyr-build-testing - flavor: | - latest=false - tags: | - type=ref,event=branch - type=ref,event=tag - type=raw,value=latest,enable={{is_default_branch}} - - - name: Create multi-architecture image - run: | - archs=(amd64 arm64) - ci_base_image="ghcr.io/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base_push.outputs.version }}" - ci_image="ghcr.io/zephyrproject-rtos/ci-testing:${{ steps.meta_ci_push.outputs.version }}" - developer_image="ghcr.io/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer_push.outputs.version }}" - - # Pull architecture-specific images - for arch in ${archs[@]}; do - docker pull ${ci_base_image}-${arch} - docker pull ${ci_image}-${arch} - docker pull ${developer_image}-${arch} - done - - # Create multi-architecture image - for arch in ${archs[@]}; do - ci_base_image_amend_flags+="--amend ${ci_base_image}-${arch} " - ci_image_amend_flags+="--amend ${ci_image}-${arch} " - developer_image_amend_flags+="--amend ${developer_image}-${arch} " - done - - docker manifest create ${ci_base_image} ${ci_base_image_amend_flags} - docker manifest create ${ci_image} ${ci_image_amend_flags} - docker manifest create ${developer_image} ${developer_image_amend_flags} - - docker manifest push ${ci_base_image} - docker manifest push ${ci_image} - docker manifest push ${developer_image} - - - name: Push base docker image - uses: stephanosio/tag-push-action@v2.1.0 - with: - src: ghcr.io/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base_push.outputs.version }} - dst: ${{ steps.meta_ci_base_push.outputs.tags }} - - - name: Push CI docker image - uses: stephanosio/tag-push-action@v2.1.0 - with: - src: ghcr.io/zephyrproject-rtos/ci-testing:${{ steps.meta_ci_push.outputs.version }} - dst: ${{ steps.meta_ci_push.outputs.tags }} - - - name: Push Developer docker image - uses: stephanosio/tag-push-action@v2.1.0 - with: - src: ghcr.io/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer_push.outputs.version }} - dst: ${{ steps.meta_developer_push.outputs.tags }} + containerfiles: Dockerfile.base + tags: ${{ steps.meta_ci_base_push.outputs.tags }} + labels: ${{ steps.meta_ci_base_push.outputs.labels }} + + # - name: Build CI docker image + # uses: docker/build-push-action@v3 + # with: + # context: . + # file: Dockerfile.ci + # platforms: ${{ matrix.variant.platform }} + # push: true + # tags: ${{ steps.meta_ci.outputs.tags }} + # labels: ${{ steps.meta_ci.outputs.labels }} + # build-args: | + # BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base.outputs.version }} + + # - name: Build Developer docker image + # uses: docker/build-push-action@v3 + # with: + # context: . + # file: Dockerfile.devel + # platforms: ${{ matrix.variant.platform }} + # push: true + # tags: ${{ steps.meta_developer.outputs.tags }} + # labels: ${{ steps.meta_developer.outputs.labels }} + # build-args: | + # BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-testing:${{ steps.meta_ci.outputs.version }} + + # - name: Login to DockerHub + # if: ${{ github.event_name != 'pull_request' }} + # uses: docker/login-action@v2 + # with: + # registry: docker.io + # username: ${{ secrets.DOCKERHUB_USERNAME }} + # password: ${{ secrets.DOCKERHUB_TOKEN }} + + # - name: Login to GitHub Container Registry + # if: ${{ github.event_name != 'pull_request' }} + # uses: docker/login-action@v2 + # with: + # registry: ghcr.io + # username: ${{ github.repository_owner }} + # password: ${{ secrets.GITHUB_TOKEN }} + + # - name: Push base docker image + # if: ${{ github.event_name != 'pull_request' }} + # uses: stephanosio/tag-push-action@v2.1.0 + # with: + # src: localhost:5000/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base.outputs.version }} + # dst: ${{ steps.meta_ci_base_push.outputs.tags }} + + # - name: Push CI docker image + # if: ${{ github.event_name != 'pull_request' }} + # uses: stephanosio/tag-push-action@v2.1.0 + # with: + # src: localhost:5000/zephyrproject-rtos/ci-testing:${{ steps.meta_ci.outputs.version }} + # dst: ${{ steps.meta_ci_push.outputs.tags }} + + # - name: Push Developer docker image + # if: ${{ github.event_name != 'pull_request' }} + # uses: stephanosio/tag-push-action@v2.1.0 + # with: + # src: localhost:5000/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer.outputs.version }} + # dst: ${{ steps.meta_developer_push.outputs.tags }} + + # merge: + # name: Merge + # runs-on: + # group: zephyr-runner-v2-linux-x64-4xlarge + # needs: build + # if: ${{ github.event_name != 'pull_request' }} + + # steps: + # - name: Login to DockerHub + # uses: docker/login-action@v2 + # with: + # registry: docker.io + # username: ${{ secrets.DOCKERHUB_USERNAME }} + # password: ${{ secrets.DOCKERHUB_TOKEN }} + + # - name: Login to GitHub Container Registry + # uses: docker/login-action@v2 + # with: + # registry: ghcr.io + # username: ${{ github.repository_owner }} + # password: ${{ secrets.GITHUB_TOKEN }} + + # - name: Generate push metadata for base docker image + # id: meta_ci_base_push + # uses: docker/metadata-action@v4 + # with: + # images: | + # docker.io/zephyrprojectrtos/ci-base-testing + # ghcr.io/zephyrproject-rtos/ci-base-testing + # flavor: | + # latest=false + # tags: | + # type=ref,event=branch + # type=ref,event=tag + # type=raw,value=latest,enable={{is_default_branch}} + + # - name: Generate push metadata for CI image + # id: meta_ci_push + # uses: docker/metadata-action@v4 + # with: + # images: | + # docker.io/zephyrprojectrtos/ci-testing + # ghcr.io/zephyrproject-rtos/ci-testing + # flavor: | + # latest=false + # tags: | + # type=ref,event=branch + # type=ref,event=tag + # type=raw,value=latest,enable={{is_default_branch}} + + # - name: Generate push metadata for Developer image + # id: meta_developer_push + # uses: docker/metadata-action@v4 + # with: + # images: | + # docker.io/zephyrprojectrtos/zephyr-build-testing + # ghcr.io/zephyrproject-rtos/zephyr-build-testing + # flavor: | + # latest=false + # tags: | + # type=ref,event=branch + # type=ref,event=tag + # type=raw,value=latest,enable={{is_default_branch}} + + # - name: Create multi-architecture image + # run: | + # archs=(amd64 arm64) + # ci_base_image="ghcr.io/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base_push.outputs.version }}" + # ci_image="ghcr.io/zephyrproject-rtos/ci-testing:${{ steps.meta_ci_push.outputs.version }}" + # developer_image="ghcr.io/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer_push.outputs.version }}" + + # # Pull architecture-specific images + # for arch in ${archs[@]}; do + # docker pull ${ci_base_image}-${arch} + # docker pull ${ci_image}-${arch} + # docker pull ${developer_image}-${arch} + # done + + # # Create multi-architecture image + # for arch in ${archs[@]}; do + # ci_base_image_amend_flags+="--amend ${ci_base_image}-${arch} " + # ci_image_amend_flags+="--amend ${ci_image}-${arch} " + # developer_image_amend_flags+="--amend ${developer_image}-${arch} " + # done + + # docker manifest create ${ci_base_image} ${ci_base_image_amend_flags} + # docker manifest create ${ci_image} ${ci_image_amend_flags} + # docker manifest create ${developer_image} ${developer_image_amend_flags} + + # docker manifest push ${ci_base_image} + # docker manifest push ${ci_image} + # docker manifest push ${developer_image} + + # - name: Push base docker image + # uses: stephanosio/tag-push-action@v2.1.0 + # with: + # src: ghcr.io/zephyrproject-rtos/ci-base-testing:${{ steps.meta_ci_base_push.outputs.version }} + # dst: ${{ steps.meta_ci_base_push.outputs.tags }} + + # - name: Push CI docker image + # uses: stephanosio/tag-push-action@v2.1.0 + # with: + # src: ghcr.io/zephyrproject-rtos/ci-testing:${{ steps.meta_ci_push.outputs.version }} + # dst: ${{ steps.meta_ci_push.outputs.tags }} + + # - name: Push Developer docker image + # uses: stephanosio/tag-push-action@v2.1.0 + # with: + # src: ghcr.io/zephyrproject-rtos/zephyr-build-testing:${{ steps.meta_developer_push.outputs.version }} + # dst: ${{ steps.meta_developer_push.outputs.tags }}