diff --git a/.github/workflows/build_qemu.yml b/.github/workflows/build_qemu.yml index f5d2680a50..04e351b2f0 100644 --- a/.github/workflows/build_qemu.yml +++ b/.github/workflows/build_qemu.yml @@ -30,8 +30,8 @@ jobs: distro: ubuntu18.04 - arch: s390x distro: ubuntu18.04 - # - arch: riscv64 - # distro: ubuntu22.04 + - arch: riscv64 + distro: ubuntu20.04 # - arch: armv7 # distro: jessie diff --git a/FAQ.md b/FAQ.md index 7259313ccd..1bafeeb9d7 100644 --- a/FAQ.md +++ b/FAQ.md @@ -85,6 +85,7 @@ have at the moment: | [Centos7](./ansible/docker/Dockerfile.CentOS7) | [`adoptopenjdk/centos7_build_image`](https://hub.docker.com/r/adoptopenjdk/centos7_build_image) | linux on amd64, arm64, ppc64le | [Jenkins](https://ci.adoptium.net/job/centos7_docker_image_updater/) | Yes | [Centos6](./ansible/docker/Dockerfile.CentOS6) | [`adoptopenjdk/centos6_build_image`](https://hub.docker.com/r/adoptopenjdk/centos6_build_image)| linux/amd64 | [GH Actions](.github/workflows/build.yml) | Yes | [Alpine3](./ansible/docker/Dockerfile.Alpine3) | [`adoptopenjdk/alpine3_build_image`](https://hub.docker.com/r/adoptopenjdk/alpine3_build_image) | linux/x64 & linux/arm64 | [Jenkins](https://ci.adoptium.net/job/centos7_docker_image_updater/) | Yes +| [Ubuntu 20.04 (riscv64 only)](./ansible/docker/Dockerfile.Ubuntu2004-riscv64) | [`adoptopenjdk/ubuntu2004_build_image:linux-riscv64`](https://hub.docker.com/r/adoptopenjdk/ubuntu2004_build_image) | linux/riscv64 | [Jenkins](https://ci.adoptium.net/job/centos7_docker_image_updater/) | Yes When a change lands into master, the relevant dockerfiles are built using the appropriate CI system listed in the table above by configuring them with diff --git a/Jenkinsfile b/Jenkinsfile index 23c7fd178d..6126bff9ab 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -35,6 +35,14 @@ pipeline { dockerBuild('armv7l', 'ubuntu1604', 'Dockerfile.Ubuntu1604') } } + stage('Ubuntu20.04 riscv64') { + agent { + label "docker&&linux&&riscv64" + } + steps { + dockerBuild('riscv64', 'ubuntu2004', 'Dockerfile.Ubuntu2004-riscv64') + } + } stage('Alpine3 x64') { agent { label "dockerBuild&&linux&&x64" diff --git a/ansible/docker/Dockerfile.Ubuntu2004-riscv64 b/ansible/docker/Dockerfile.Ubuntu2004-riscv64 new file mode 100644 index 0000000000..7c7b7f2c0c --- /dev/null +++ b/ansible/docker/Dockerfile.Ubuntu2004-riscv64 @@ -0,0 +1,23 @@ +FROM riscv64/ubuntu:20.04 + +ARG user=jenkins + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update +RUN apt-get -y install git curl ansible gpg + +COPY . /ansible + +RUN echo "localhost ansible_connection=local" > /ansible/hosts + +RUN set -eux; \ + cd /ansible; \ + ansible-playbook -i hosts ansible/playbooks/AdoptOpenJDK_Unix_Playbook/main.yml --skip-tags="debug,hosts_file,hostname,adoptopenjdk,jenkins,nagios,superuser,docker,swap_file,crontab,nvidia_cuda_toolkit,ntp_time" + +RUN rm -rf /ansible + +RUN groupadd -g 1000 ${user} +RUN useradd -c "Jenkins user" -d /home/${user} -u 1000 -g 1000 -m ${user} + +ENV \ + JAVA_HOME="/usr/lib/jvm/java-11-openjdk-riscv64" diff --git a/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/tasks/Ubuntu.yml b/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/tasks/Ubuntu.yml index 5525a6a750..9c7881bc18 100644 --- a/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/tasks/Ubuntu.yml +++ b/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/tasks/Ubuntu.yml @@ -82,6 +82,20 @@ - ansible_architecture == "aarch64" tags: build_tools +- name: Install additional build tools for !riscv64 + package: "name={{ item }} state=latest" + with_items: "{{ Additional_Build_Tools_not_riscv64 }}" + when: + - ansible_architecture != "riscv64" + tags: build_tools + +- name: Install additional build tools for riscv64 + package: "name={{ item }} state=latest" + with_items: "{{ Additional_Build_Tools_riscv64 }}" + when: + - ansible_architecture == "riscv64" + tags: build_tools + - name: Install additional build tools for Ubuntu 20 + package: "name={{ item }} state=latest" with_items: "{{ Additional_Build_Tools_Ubuntu20 }}" @@ -99,6 +113,20 @@ - ansible_architecture == "x86_64" tags: test_tools +- name: Install additional Test Tool Packages for !riscv64 + package: "name={{ item }} state=latest" + with_items: "{{ Test_Tool_Packages_not_riscv64 }}" + when: + - ansible_architecture != "riscv64" + tags: test_tools + +- name: Install additional Test Tool Packages for riscv64 + package: "name={{ item }} state=latest" + with_items: "{{ Test_Tool_Packages_riscv64 }}" + when: + - ansible_architecture == "riscv64" + tags: test_tools + - name: Install additional Packages specific to Ubuntu 16 package: "name={{ item }} state=latest" with_items: "{{ Additional_Packages_Ubuntu16 }}" diff --git a/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/vars/Ubuntu.yml b/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/vars/Ubuntu.yml index 1b179af682..2171c77294 100644 --- a/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/vars/Ubuntu.yml +++ b/ansible/playbooks/AdoptOpenJDK_Unix_Playbook/roles/Common/vars/Ubuntu.yml @@ -46,7 +46,6 @@ Build_Tool_Packages: - libxtst-dev - make - ntp - - openjdk-8-jdk - pigz - pkg-config - systemtap-sdt-dev @@ -94,13 +93,18 @@ Additional_Build_Tools_s390x: Additional_Build_Tools_aarch64: - libpng-dev +Additional_Build_Tools_not_riscv64: + - openjdk-8-jdk + +Additional_Build_Tools_riscv64: + - openjdk-11-jdk + Additional_Build_Tools_Ubuntu20: - cmake - ccache Test_Tool_Packages: - acl - - mercurial - perl - xauth - xvfb @@ -117,3 +121,13 @@ Test_Tool_Packages: Test_Tool_Packages_x86_64: - pulseaudio + +Test_Tool_Packages_not_riscv64: + - mercurial + +# For some reasons, mercurial-common package is available in riscv64 ubuntu, +# but not mercurial +Test_Tool_Packages_riscv64: + - mercurial-common + - python2 + - ucf