diff --git a/.forgejo/workflows/build_and_release.yml b/.forgejo/workflows/build_and_release.yml new file mode 100644 index 0000000..695cf86 --- /dev/null +++ b/.forgejo/workflows/build_and_release.yml @@ -0,0 +1,72 @@ +name: Docker Image CI + +on: + push: + + pull_request: + +env: + REGISTRY: git.dc09.ru # Change to your registry (e.g., forgejo.example.com) + GITHUB_TOKEN: ${{ secrets.FORGEJO_PASSWORD }} + GITHUB_API_URL: https://git.dc09.ru + GITHUB_BASE_REF: git.dc09.ru + GITHUB_SERVER_URL: https://git.dc09.ru + DOCKERHUB_TOKEN: ${{ secrets.FORGEJO_PASSWORD }} + DOCKER_TOKEN: ${{ secrets.FORGEJO_PASSWORD }} + FORGEJO_URL: https://git.dc09.ru + +jobs: + build-and-push: + runs-on: ubuntu-latest + strategy: + matrix: + images: + - dockerfile: 'Dockerfile.openj9' + image_name: 'openj9' + context: './' + build-args: ["WITH_JDK=false"] + - dockerfile: 'Dockerfile.piped' + image_name: 'piped' + context: './' + build-args: [] + # Add more images as needed + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: git.dc09.ru + username: ${{ secrets.FORGEJO_USERNAME }} + password: ${{ secrets.FORGEJO_PASSWORD }} + token: ${{ secrets.FORGEJO_PASSWORD }} + opts.auth: ${{ secrets.FORGEJO_PASSWORD }} + - name: Printenv + run: env | sort + - name: Extract metadata (tags, labels) + id: meta + uses: docker/metadata-action@v5 + with: + context: git + images: | + git.dc09.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/${{ matrix.images.image_name }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + github-token: ${{ secrets.FORGEJO_PASSWORD }} + github-server: https://git.dc09.ru + + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: ${{ matrix.images.context }} + file: ${{ matrix.images.dockerfile }} + push: ${{ github.event_name == 'push' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: ${{ matrix.images.build-args }} \ No newline at end of file diff --git a/Dockerfile.openj9 b/Dockerfile.openj9 index c28da77..66ebf66 100644 --- a/Dockerfile.openj9 +++ b/Dockerfile.openj9 @@ -1,14 +1,14 @@ -FROM ubuntu:24.10 AS build +FROM ubuntu:25.04 AS build # partly copied from mkdocker.sh # Copyright IBM Corp (Eclipse Public License 2.0) -RUN apt update \ - && apt upgrade -y \ - && apt install -qq -y --no-install-recommends \ - ant ant-contrib autoconf build-essential ca-certificates cmake cpio curl file g++-13 gcc-13 gdb git \ +RUN apt -qq update \ + && apt -qq upgrade -y \ + && apt -qq install -y --no-install-recommends \ + ant ant-contrib autoconf build-essential ca-certificates cmake cpio curl file gcc-14 g++-14 gdb git \ libasound2-dev libcups2-dev libdwarf-dev libelf-dev libexpat1-dev libffi-dev libfontconfig libfontconfig1-dev \ libfreetype6-dev libnuma-dev libssl-dev libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev libxtst-dev \ - make nasm pkg-config python3 python3-dev rsync systemtap-sdt-dev unzip wget xvfb zip zlib1g-dev \ + make nasm pkg-config python3 python3-dev rsync systemtap-sdt-dev unzip wget xvfb zip zlib1g-dev execstack unzip \ && rm -rf /var/lib/apt/lists/* WORKDIR /build @@ -18,14 +18,28 @@ RUN mkdir /build/bootjdk /build/dist \ && tar -xzf jdk21.tar.gz --directory=/build/bootjdk --strip-components=1 \ && rm -f jdk21.tar.gz +RUN wget --progress=dot:mega -O jtreg.zip https://builds.shipilev.net/jtreg/jtreg-7.5.1%2B1.zip \ + && unzip jtreg.zip -d /build \ + && rm -rf jtreg.zip + +ENV JT_HOME=/build/jtreg + +RUN find /build/bootjdk -name '*.so' | xargs execstack -c + RUN git clone --single-branch --depth 1 \ https://github.com/ibmruntimes/openj9-openjdk-jdk21.git \ /build/src WORKDIR /build/src RUN bash get_source.sh -RUN bash configure --with-boot-jdk=/build/bootjdk --with-mixedrefs=static --with-openssl=system -RUN make all + +RUN bash configure \ + --enable-libffi-bundling --enable-ddr --enable-jitserver \ + --enable-fallback-linker --with-jtreg=/build/jtreg --with-boot-jdk=/build/bootjdk \ + --with-openssl=system --with-extra-ldflags="-Wl,-z,noexecstack" + +RUN make all JOBS=$(nproc) +RUN make install # jlink by advice from https://adoptium.net/blog/2021/10/jlink-to-produce-own-runtime/ WORKDIR /build/src/build/linux-x86_64-server-release/images @@ -40,15 +54,44 @@ jdk.nio.mapmode,jdk.random,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsu jdk.xml.dom,jdk.zipfs,openj9.criu,openj9.cuda,openj9.dataaccess,openj9.gpu,openj9.jvm,\ openj9.sharedclasses,openj9.zosconditionhandling + + +ENV JAVA_HOME=/build/src/build/linux-x86_64-server-release/images/jre +ENV PATH="$JAVA_HOME/bin:$JAVA_HOME/lib:$PATH" +ENV TEST_JDK_HOME=/build/src/build/linux-x86_64-server-release/images/jdk +ENV TEST_ROOT=/build/src/openj9/test +ENV DIAGNOSTICLEVEL=nodetails +ENV NATIVE_TEST_LIBS=/build/src/build/linux-x86_64-server-release/images/test + +RUN cd /build/src/openj9/test \ + && git clone https://github.com/adoptium/TKG.git + +WORKDIR /build/src/openj9/test/TKG + +ENV BUILD_LIST=functional + +RUN find ../ -type f -name "playlist.xml" | xargs sed -i 's#jit_jar#jit_jarhttps://github.com/#g' +RUN find ../ -type f -name "playlist.xml" | xargs sed -i 's#testJITServer#testJITServerhttps://github.com/#g' + +RUN make compile -j$(nproc) + +RUN make genParallelList PARALLEL_OPTIONS=TEST=_sanity.functional.regular TEST_TIME= NUM_MACHINES=$(nproc) + +RUN cat parallelList.mk + +RUN make -f parallelList.mk JOBS=$(nproc) + +WORKDIR /build/src/build/linux-x86_64-server-release/images RUN mv ./* /build/dist/ + # ------ -FROM ubuntu:24.10 AS run +FROM ubuntu:25.04 AS run COPY --from=build /build/dist/jre /usr/lib/jvm/openj9-jre ENV JAVA_HOME=/usr/lib/jvm/openj9-jre -ENV PATH="$JAVA_HOME/bin:$PATH" +ENV PATH="$JAVA_HOME/bin:$JAVA_HOME/lib:$PATH" # verify installation RUN java --version