From 56cdca905688fee5378ac30d3b837ad35061c7a9 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Wed, 28 Feb 2024 12:36:39 -0500 Subject: [PATCH 1/4] inital add ci --- .dockerignore | 8 ++++ .github/workflows/ci.yml | 89 ++++++++++++++++++++++++++++++++++++++++ Dockerfile | 39 ++++++++++++++++++ checkstyle.xml | 9 ++++ pom.xml | 31 +++++++++++++- 5 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/ci.yml create mode 100644 Dockerfile create mode 100644 checkstyle.xml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6847749 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +.github + +.dockerignore +.gitignore +Dockerfile +Jenkinsfile +README.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..5bb6ce5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,89 @@ +name: release-update-dois ci + + +on: + workflow_dispatch: + + pull_request: + types: + - opened + - synchronize + + push: + branches: + - main + + +permissions: + id-token: write + contents: read + + +jobs: + lint: + if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} + runs-on: ubuntu-latest + env: + REPO_DIR : /opt/release-update-dois + steps: + - uses: actions/checkout@v4 + + - name: Run lint + run: | + docker build --build-arg REPO_DIR="$REPO_DIR" --target setup-env -t lint-image . + docker run --name lint-container lint-image + + - name: Display lint errors + if: failure() + run: | + docker cp lint-container:"$REPO_DIR"/lint.log . + while IFS= read -r LINT_MSG; do echo "::warning::${LINT_MSG}"; done < lint.log + exit 1 + + docker-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: docker/setup-buildx-action@v3 + + - uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile + tags: tmp-tag + outputs: type=docker,dest=/tmp/image.tar + + - uses: actions/upload-artifact@v4 + with: + name: image-artifact + path: /tmp/image.tar + + docker-push: + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + needs: docker-build + runs-on: ubuntu-latest + steps: + - env: + AWS_REGION : us-east-1 + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ vars.AWS_ROLE }} + aws-region: ${{ env.AWS_REGION }} + + - id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - uses: actions/download-artifact@v4 + with: + name: image-artifact + path: /tmp + + - env: + AWS_REGISTRY : ${{ steps.login-ecr.outputs.registry }} + AWS_REPO : release-update-dois + IMG_TAG : latest + run: | + docker load --input /tmp/image.tar + docker image tag tmp-tag $AWS_REGISTRY/$AWS_REPO:$IMG_TAG + docker push $AWS_REGISTRY/$AWS_REPO:$IMG_TAG diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d6070f8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,39 @@ +ARG REPO_DIR=/opt/release-update-dois + + +# ===== stage 1 ===== +FROM maven:3.9.6-eclipse-temurin-11-focal AS setup-env + +ARG REPO_DIR + +WORKDIR ${REPO_DIR} + +COPY . . + +SHELL ["/bin/bash", "-c"] + +# run lint if container started +ENTRYPOINT [] + +CMD mvn -B -q checkstyle:check | \ + grep -i --color=never '\.java\|failed to execute goal' > lint.log && \ + exit 1 || \ + exit 0 + + +# ===== stage 2 ===== +FROM setup-env AS build-jar + +RUN mvn clean package + + +# ===== stage 3 ===== +FROM eclipse-temurin:11-jre-focal + +ARG REPO_DIR + +ARG JAR_FILE=target/update-dois-*-jar-with-dependencies.jar + +WORKDIR ${REPO_DIR} + +COPY --from=build-jar ${REPO_DIR}/${JAR_FILE} ./target/ diff --git a/checkstyle.xml b/checkstyle.xml new file mode 100644 index 0000000..8506a80 --- /dev/null +++ b/checkstyle.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/pom.xml b/pom.xml index 3c62f96..7f4ee84 100644 --- a/pom.xml +++ b/pom.xml @@ -84,8 +84,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 11 + 11 @@ -155,6 +155,33 @@ + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.1 + + + + com.puppycrawl.tools + checkstyle + 8.44 + + + + + checkstyle-check + + check + + + + + checkstyle.xml + + UTF-8 + + From d69d0e09e8297ce5615f1dfe59f258e0fd1a9ab3 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Wed, 28 Feb 2024 12:53:10 -0500 Subject: [PATCH 2/4] change build command --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d6070f8..672619d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,7 @@ CMD mvn -B -q checkstyle:check | \ # ===== stage 2 ===== FROM setup-env AS build-jar -RUN mvn clean package +RUN mvn clean compile assembly:single # ===== stage 3 ===== From 719a8376d57c27f6eff042690018d96ed6ceb636 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Tue, 19 Mar 2024 15:14:26 -0400 Subject: [PATCH 3/4] resolve jnlp issue --- .github/workflows/ci.yml | 5 --- pom.xml | 70 +++++++++++++++++++++++++--------------- 2 files changed, 44 insertions(+), 31 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5bb6ce5..f8e8b3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,24 +1,19 @@ name: release-update-dois ci - on: workflow_dispatch: - pull_request: types: - opened - synchronize - push: branches: - main - permissions: id-token: write contents: read - jobs: lint: if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} diff --git a/pom.xml b/pom.xml index 7f4ee84..7f4c573 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,17 @@ org.reactome.release release-common-lib 1.2.0 + + + org.reactome.base + reactome-base + + + + + org.reactome.base + reactome-base-core + 1.0.1-SNAPSHOT @@ -76,6 +87,13 @@ + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + @@ -156,32 +174,32 @@ - - org.apache.maven.plugins - maven-checkstyle-plugin - 3.1.1 - - - - com.puppycrawl.tools - checkstyle - 8.44 - - - - - checkstyle-check - - check - - - - - checkstyle.xml - - UTF-8 - - + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.1 + + + + com.puppycrawl.tools + checkstyle + 8.44 + + + + + checkstyle-check + + check + + + + + checkstyle.xml + + UTF-8 + + From 02d19ef46314d5890f4f639d8c481ff817bbbc88 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Wed, 20 Mar 2024 18:59:50 -0400 Subject: [PATCH 4/4] public ecr --- .github/workflows/ci.yml | 30 +++++++++++++++++++----------- pom.xml | 13 +------------ 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8e8b3a..b232c0c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} runs-on: ubuntu-latest env: - REPO_DIR : /opt/release-update-dois + REPO_DIR: /opt/release-update-dois steps: - uses: actions/checkout@v4 @@ -59,8 +59,18 @@ jobs: needs: docker-build runs-on: ubuntu-latest steps: + - uses: actions/download-artifact@v4 + with: + name: image-artifact + path: /tmp + + - id: get-hash + run: | + FULL_SHA=${{ github.sha }} + echo "SHORT_SHA=${FULL_SHA:0:7}" >> $GITHUB_OUTPUT + - env: - AWS_REGION : us-east-1 + AWS_REGION: us-east-1 uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: ${{ vars.AWS_ROLE }} @@ -68,17 +78,15 @@ jobs: - id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - - - uses: actions/download-artifact@v4 with: - name: image-artifact - path: /tmp + registry-type: public - env: - AWS_REGISTRY : ${{ steps.login-ecr.outputs.registry }} - AWS_REPO : release-update-dois - IMG_TAG : latest + AWS_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + AWS_REGISTRY_ALIAS: k2y5k6e2 + AWS_REPO: release-update-dois + IMG_TAG: ${{ steps.get-hash.outputs.SHORT_SHA }} run: | docker load --input /tmp/image.tar - docker image tag tmp-tag $AWS_REGISTRY/$AWS_REPO:$IMG_TAG - docker push $AWS_REGISTRY/$AWS_REPO:$IMG_TAG + docker image tag tmp-tag $AWS_REGISTRY/$AWS_REGISTRY_ALIAS/$AWS_REPO:$IMG_TAG + docker push $AWS_REGISTRY/$AWS_REGISTRY_ALIAS/$AWS_REPO:$IMG_TAG diff --git a/pom.xml b/pom.xml index 7f4c573..37713c7 100644 --- a/pom.xml +++ b/pom.xml @@ -52,18 +52,7 @@ org.reactome.release release-common-lib - 1.2.0 - - - org.reactome.base - reactome-base - - - - - org.reactome.base - reactome-base-core - 1.0.1-SNAPSHOT + 2.0.0-SNAPSHOT