diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index add3359..7824ff0 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -18,9 +18,11 @@ jobs: strategy: matrix: config: - - {dockerfile: 'fedora', tag: 'latest'} + - {dockerfile: 'fedora', tag: 'latest-amd64'} + - {dockerfile: 'fedora', tag: 'latest-arm64', arm: 'true'} - {dockerfile: 'fedora', tag: 'rawhide', build_args: 'TAG=rawhide', continue-on-error: 'true'} - - {dockerfile: 'ubuntu', tag: 'latest'} + - {dockerfile: 'ubuntu', tag: 'latest-amd64'} + - {dockerfile: 'ubuntu', tag: 'latest-arm64', arm: 'true'} - {dockerfile: 'ubuntu', tag: 'rolling', build_args: 'TAG=rolling'} - {dockerfile: 'ubuntu', tag: 'devel', build_args: 'TAG=devel', continue-on-error: 'true'} - {dockerfile: 'ubuntu', tag: 'intel', build_args: 'TAG=22.04,INTEL=yes', cmake_args: '-DCMAKE_CXX_COMPILER=icpx -DCMAKE_CXX_FLAGS=-fp-model=precise', continue-on-error: 'true'} @@ -28,7 +30,7 @@ jobs: continue-on-error: ${{ matrix.config.continue-on-error == 'true' }} env: docker-tag: ghcr.io/kokkos/ci-containers/${{ matrix.config.dockerfile }}:${{ matrix.config.tag }} - runs-on: ubuntu-latest + runs-on: ${{ matrix.config.arm == 'true' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -87,3 +89,29 @@ jobs: file: ${{ matrix.config.dockerfile }} build-args: ${{ steps.build_args.outputs.args }} push: true + + merge-docker-manifest: + runs-on: ubuntu-latest + needs: CI + strategy: + matrix: + config: + - {dockerfile: 'fedora', tag: 'latest'} + - {dockerfile: 'ubuntu', tag: 'latest'} + env: + docker-tag: ghcr.io/kokkos/ci-containers/${{ matrix.config.dockerfile }}:${{ matrix.config.tag }} + steps: + - name: Login to Github Container Registry + if: github.repository_owner == 'kokkos' && ( github.event_name == 'push' || github.event_name == 'schedule' ) + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Create and push manifest images to Github Container Registry + if: github.repository_owner == 'kokkos' && ( github.event_name == 'push' || github.event_name == 'schedule' ) + uses: Noelware/docker-manifest-action@master + with: + inputs: ${{ env.docker-tag }} + images: ${{ env.docker-tag }}-amd64,${{ env.docker-tag }}-arm64 + push: ${{ github.repository_owner == 'kokkos' && ( github.event_name == 'push' || github.event_name == 'schedule' ) }} diff --git a/ubuntu b/ubuntu index bf44782..dadde1d 100644 --- a/ubuntu +++ b/ubuntu @@ -7,7 +7,10 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y \ - make git g++ gfortran ccache vim clang llvm wget sudo curl ninja-build clang-format zstd libhwloc-dev libomp-dev gnupg2 cmake libgtest-dev clang-tidy gcc-multilib g++-multilib gfortran-multilib && \ + make git g++ gfortran ccache vim clang llvm wget sudo curl ninja-build clang-format zstd libhwloc-dev libomp-dev gnupg2 cmake libgtest-dev clang-tidy && \ + if [ "$(uname -m)" = "x86_64" ]; then \ + apt-get install -y gcc-multilib g++-multilib gfortran-multilib; \ + fi && \ apt-get purge --autoremove -y && \ rm -rf /var/lib/apt/lists/*