diff --git a/Dockerfile b/Dockerfile index 8fcbc85..49fbf35 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:bionic-20181018 +FROM ubuntu:focal-20210119 ARG root=. ARG jar=target/artifactory-resource.jar @@ -6,9 +6,11 @@ ARG jar=target/artifactory-resource.jar COPY ${root}/assets/ /opt/resource/ COPY ${jar} /artifact/artifactory-resource.jar - +RUN export DEBIAN_FRONTEND=noninteractive RUN apt-get update -RUN apt-get install --no-install-recommends -y ca-certificates curl +RUN apt-get install --no-install-recommends -y tzdata ca-certificates curl +RUN ln -fs /usr/share/zoneinfo/UTC /etc/localtime +RUN dpkg-reconfigure --frontend noninteractive tzdata RUN rm -rf /var/lib/apt/lists/* ENV JAVA_HOME /opt/openjdk diff --git a/ci/images/artifactory-resource-ci-image/Dockerfile b/ci/images/ci-image/Dockerfile similarity index 77% rename from ci/images/artifactory-resource-ci-image/Dockerfile rename to ci/images/ci-image/Dockerfile index 9ae2b63..8f1edaf 100644 --- a/ci/images/artifactory-resource-ci-image/Dockerfile +++ b/ci/images/ci-image/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:bionic-20181018 +FROM ubuntu:focal-20210119 ADD setup.sh /setup.sh RUN ./setup.sh diff --git a/ci/images/setup.sh b/ci/images/setup.sh index 08afca1..1bde32a 100755 --- a/ci/images/setup.sh +++ b/ci/images/setup.sh @@ -5,17 +5,20 @@ set -ex # UTILS ########################################################### +export DEBIAN_FRONTEND=noninteractive apt-get update -apt-get install --no-install-recommends -y ca-certificates net-tools libxml2-utils git curl +apt-get install --no-install-recommends -y tzdata ca-certificates net-tools libxml2-utils git curl +ln -fs /usr/share/zoneinfo/UTC /etc/localtime +dpkg-reconfigure --frontend noninteractive tzdata rm -rf /var/lib/apt/lists/* -curl https://raw.githubusercontent.com/spring-io/concourse-java-scripts/v0.0.2/concourse-java.sh > /opt/concourse-java.sh +curl https://raw.githubusercontent.com/spring-io/concourse-java-scripts/v0.0.4/concourse-java.sh > /opt/concourse-java.sh ########################################################### # JAVA ########################################################### -JDK_URL="https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b04/OpenJDK8U-jdk_x64_linux_hotspot_8u212b04.tar.gz" +JDK_URL="https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u282-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz" mkdir -p /opt/openjdk cd /opt/openjdk diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 4532ae4..843dbce 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -1,6 +1,13 @@ +resource_types: +- name: registry-image + type: registry-image + source: + repository: concourse/registry-image-resource + tag: 1.1.0 resources: - name: git-repo type: git + icon: github source: uri: https://github.com/spring-io/artifactory-resource username: ((github-username)) @@ -9,90 +16,103 @@ resources: ignore_paths: ["ci/images/*"] - name: ci-images-git-repo type: git + icon: github source: uri: https://github.com/spring-io/artifactory-resource branch: master paths: ["ci/images/*"] -- name: artifactory-resource-ci-image - type: docker-image +- name: ci-image + type: registry-image + icon: docker source: - repository: springci/artifactory-resource-ci-image + repository: springci/artifactory-resource-ci username: ((docker-hub-username)) password: ((docker-hub-password)) tag: master - name: artifactory-resource-image - type: docker-image + type: registry-image + icon: docker source: repository: springio/artifactory-resource username: ((docker-hub-username)) password: ((docker-hub-password)) - name: github-release type: github-release + icon: briefcase-download source: owner: spring-io repository: artifactory-resource access_token: ((github-ci-release-token)) jobs: -- name: build-artifactory-resource-ci-image +- name: build-ci-image plan: - get: ci-images-git-repo trigger: true - - put: artifactory-resource-ci-image + - get: git-repo + - task: build-ci-image + privileged: true + file: git-repo/ci/tasks/build-ci-image.yml + output_mapping: + image: ci-image + vars: + ci-image-name: ci-image + - put: ci-image params: - build: ci-images-git-repo/ci/images - dockerfile: ci-images-git-repo/ci/images/artifactory-resource-ci-image/Dockerfile + image: ci-image/image.tar - name: build public: true plan: - - get: artifactory-resource-ci-image + - get: ci-image - get: git-repo trigger: true - task: build - image: artifactory-resource-ci-image + image: ci-image file: git-repo/ci/tasks/build.yml + - load_var: artifact-version + file: built-artifact/version + reveal: true + - task: build-artifactory-resource-image + privileged: true + file: git-repo/ci/tasks/build-artifactory-resource-image.yml + output_mapping: + image: artifactory-resource-image - put: artifactory-resource-image params: - build: . - dockerfile: git-repo/Dockerfile - tag: built-artifact/version - build_args: - root: git-repo - jar: built-artifact/artifactory-resource.jar + version: ((.:artifact-version)) + image: artifactory-resource-image/image.tar - name: release plan: - - get: artifactory-resource-ci-image + - get: ci-image - get: git-repo passed: [build] trigger: false - task: release - image: artifactory-resource-ci-image + image: ci-image file: git-repo/ci/tasks/release.yml - - task: generate-release-notes - file: git-repo/ci/tasks/generate-release-notes.yml - params: - GITHUB_USERNAME: ((github-username)) - GITHUB_TOKEN: ((github-ci-release-token)) + - load_var: artifact-version + file: built-artifact/version + reveal: true + - task: build-artifactory-resource-image + privileged: true + file: git-repo/ci/tasks/build-artifactory-resource-image.yml + output_mapping: + image: artifactory-resource-image + - task: generate-changelog + file: git-repo/ci/tasks/generate-changelog.yml - put: git-repo params: repository: release-git-repo - put: artifactory-resource-image params: - build: . - dockerfile: git-repo/Dockerfile - tag: built-artifact/version - build_args: - root: git-repo - jar: built-artifact/artifactory-resource.jar + version: ((.:artifact-version)) + image: artifactory-resource-image/image.tar - put: github-release params: - name: generated-release-notes/tag - tag: generated-release-notes/tag - body: generated-release-notes/release-notes.md + name: generated-changelog/tag + tag: generated-changelog/tag + body: generated-changelog/changelog.md groups: -- name: "Build" - jobs: - - build - - release -- name: "CI Images" - jobs: - - build-artifactory-resource-ci-image +- name: "builds" + jobs: ["build", "release"] +- name: "ci-image" + jobs: ["build-ci-image"] diff --git a/ci/scripts/generate-changelog.sh b/ci/scripts/generate-changelog.sh new file mode 100755 index 0000000..93be2fd --- /dev/null +++ b/ci/scripts/generate-changelog.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e + +version=$( cat built-artifact/version ) + +java -jar /github-changelog-generator.jar \ + --changelog.repository=spring-io/artifactory-resource \ + ${version} generated-changelog/changelog.md + +echo ${version} > generated-changelog/version +echo v${version} > generated-changelog/tag diff --git a/ci/scripts/generate-release-notes.sh b/ci/scripts/generate-release-notes.sh deleted file mode 100755 index e55c027..0000000 --- a/ci/scripts/generate-release-notes.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -e - -version=$( cat built-artifact/version ) - -java -jar /github-release-notes-generator.jar \ - --releasenotes.github.username=${GITHUB_USERNAME} \ - --releasenotes.github.password=${GITHUB_TOKEN} \ - --releasenotes.github.organization=spring-io \ - --releasenotes.github.repository=artifactory-resource \ - ${version} generated-release-notes/release-notes.md - -echo ${version} > generated-release-notes/version -echo v${version} > generated-release-notes/tag diff --git a/ci/tasks/build-artifactory-resource-image.yml b/ci/tasks/build-artifactory-resource-image.yml new file mode 100644 index 0000000..5dc8a53 --- /dev/null +++ b/ci/tasks/build-artifactory-resource-image.yml @@ -0,0 +1,29 @@ +--- +platform: linux +image_resource: + type: registry-image + source: + repository: vito/oci-build-task +inputs: +- name: git-repo +- name: built-artifact +outputs: +- name: image +caches: +- path: artifactory-resource-image-cache +params: + DOCKERFILE: git-repo/Dockerfile + BUILD_ARG_jar: built-artifact/artifactory-resource.jar + BUILD_ARG_root: git-repo + DOCKER_HUB_AUTH: ((docker-hub-auth)) + REGISTRY_MIRRORS: ((docker-hub-mirror)) +run: + path: /bin/sh + args: + - "-c" + - | + mkdir -p /root/.docker + cat > /root/.docker/config.json < /root/.docker/config.json <