diff --git a/.github/labels.yml b/.github/labels.yml new file mode 100644 index 0000000..82bb9b9 --- /dev/null +++ b/.github/labels.yml @@ -0,0 +1,66 @@ +--- +# Labels names are important as they are used by Release Drafter to decide +# regarding where to record them in changelog or if to skip them. +# +# The repository labels will be automatically configured using this file and +# the GitHub Action https://github.com/marketplace/actions/github-labeler. +- name: breaking + description: Breaking Changes + color: bfd4f2 +- name: bug + description: Something isn't working + color: d73a4a +- name: build + description: Build System and Dependencies + color: bfdadc +- name: ci + description: Continuous Integration + color: 4a97d6 +- name: dependencies + description: Pull requests that update a dependency file + color: 0366d6 +- name: documentation + description: Improvements or additions to documentation + color: 0075ca +- name: duplicate + description: This issue or pull request already exists + color: cfd3d7 +- name: enhancement + description: New feature or request + color: a2eeef +- name: github_actions + description: Pull requests that update Github_actions code + color: "000000" +- name: good first issue + description: Good for newcomers + color: 7057ff +- name: help wanted + description: Extra attention is needed + color: 008672 +- name: invalid + description: This doesn't seem right + color: e4e669 +- name: performance + description: Performance + color: "016175" +- name: python + description: Pull requests that update Python code + color: 2b67c6 +- name: question + description: Further information is requested + color: d876e3 +- name: refactoring + description: Refactoring + color: ef67c4 +- name: removal + description: Removals and Deprecations + color: 9ae7ea +- name: style + description: Style + color: c120e5 +- name: testing + description: Testing + color: b1fc6f +- name: wontfix + description: This will not be worked on + color: ffffff \ No newline at end of file diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..f86c79d --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,59 @@ +categories: + - title: ":boom: Breaking Changes" + label: "breaking" + - title: ":rocket: Features" + label: "enhancement" + - title: ":fire: Removals and Deprecations" + label: "removal" + - title: ":beetle: Fixes" + label: "bug" + - title: ":racehorse: Performance" + label: "performance" + - title: ":rotating_light: Testing" + label: "testing" + - title: ":construction_worker: Continuous Integration" + label: "ci" + - title: ":books: Documentation" + label: "documentation" + - title: ":hammer: Refactoring" + label: "refactoring" + - title: ":lipstick: Style" + label: "style" + - title: ":package: Dependencies" + labels: + - "dependencies" + - "build" + +autolabeler: + - label: 'documentation' + branch: + - '/docs{0,1}\/.+/' + - label: 'bug' + branch: + - '/fix\/.+/' + title: + - '/fix/i' + - label: 'enhancement' + branch: + - '/feat\/.+/' + body: + - '/JIRA-[0-9]{1,4}/' + - label: 'refactoring' + branch: + - '/refactor\/.+/' + title: + - '/^refactor/i' + - label: 'testing' + branch: + - '/test\/.+/' + - label: 'breaking' + title: + - '/breaking change/i' + - label: 'ci' + files: + - '.github/*' + +template: | + ## Changes + + $CHANGES diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..411675f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,44 @@ +name: Build + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + java-version: 21 + distribution: zulu + + - name: Authenticate to Google Cloud + id: auth + uses: google-github-actions/auth@v1.1.1 + with: + workload_identity_provider: "projects/848539402404/locations/global/workloadIdentityPools/gh-actions/providers/gh-actions" + service_account: "gh-actions-dapla-pseudo@artifact-registry-5n.iam.gserviceaccount.com" + token_format: access_token + + - name: Cache Maven packages + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + - name: Build with Maven and deploy to Artifact Registry + run: mvn --batch-mode -P ssb-bip deploy + diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..19d5246 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,19 @@ +name: Labeler + +on: + push: + branches: + - master + +jobs: + labeler: + runs-on: ubuntu-latest + steps: + - name: Check out the repository + uses: actions/checkout@v3 + + # Reads labels from .github/labels.yml + - name: Run Labeler + uses: crazy-max/ghaction-github-labeler@v4 + with: + skip-delete: true diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 0000000..5dea360 --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,30 @@ +name: Release Drafter + +on: + push: + branches: + - master + # pull_request event is required only for autolabeler + pull_request: + types: + - opened + - reopened + - synchronize + +permissions: + contents: read + +jobs: + update_release_draft: + permissions: + # write permission is required to create a GitHub release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: write + runs-on: ubuntu-latest + steps: + # Draft the next Release notes as Pull Requests are merged into main + - uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..6f352fb --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,100 @@ +name: Release + +on: + push: + branches: + - release + +jobs: + release: + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + packages: write + + steps: + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ secrets.DAPLA_BOT_APP_ID }} + private-key: ${{ secrets.DAPLA_BOT_PRIVATE_KEY }} + + - uses: actions/checkout@v3 + with: + token: ${{ steps.app-token.outputs.token }} + ref: refs/heads/master + + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + java-version: 21 + distribution: zulu + server-id: github + + - name: Authenticate to Google Cloud + id: auth + uses: google-github-actions/auth@v1.1.1 + with: + workload_identity_provider: "projects/848539402404/locations/global/workloadIdentityPools/gh-actions/providers/gh-actions" + service_account: "gh-actions-dapla-pseudo@artifact-registry-5n.iam.gserviceaccount.com" + token_format: access_token + + - name: Cache Maven packages + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + - name: Configure Git user + run: | + git config user.name "dapla-bot[bot]" + git config user.email "143391972+dapla-bot[bot]@users.noreply.github.com" + + - name: Setup Maven authentication to GitHub packages + uses: s4u/maven-settings-action@v2.8.0 + id: maven_settings + with: + servers: '[{"id": "github","configuration": {"httpHeaders": {"property": {"name": "Authorization","value": "Bearer ${{ secrets.GITHUB_TOKEN }}"}}}}]' + + - name: Maven release and deploy to GitHub packages + id: release_jar + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + run: | + # Get the release version from the pom.xml before the next snapshot increment + VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-SNAPSHOT//") + echo "version=${VERSION}" >> $GITHUB_OUTPUT + # Perform the release/deploy and increment the version to the next snapshot + mvn --batch-mode release:prepare -Darguments="-Dmaven.deploy.skip=true -DskipTests" + mvn --batch-mode release:perform + TAG=$(git describe --abbrev=0 --tags) + echo "tag=${TAG}" >> $GITHUB_OUTPUT + + - name: Create GitHub release draft + uses: release-drafter/release-drafter@v5 + id: create_github_release + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + with: + tag: ${{ steps.release_jar.outputs.tag }} + + - name: Upload assets to GitHub release draft + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + run: | + ARTIFACT_ID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout) + # Get all files matching the artifact id and version (source, javadoc, etc.) + ARTIFACT_GLOB=(./target/$ARTIFACT_ID-${{ steps.release_jar.outputs.version }}*.jar) + for file in "${ARTIFACT_GLOB[@]}"; do + echo "Uploading $file" + gh release upload ${{ steps.create_github_release.outputs.tag_name }} $file + done + + - name: Publish GitHub release + uses: eregon/publish-release@v1 + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + with: + release_id: ${{ steps.create_github_release.outputs.id }} \ No newline at end of file diff --git a/Makefile b/Makefile index ae03501..91544e0 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,8 @@ release-dryrun: ## Simulate a release in order to detect any issues mvn release:prepare release:perform -Darguments="-Dmaven.deploy.skip=true" -DdryRun=true .PHONY: release -release: ## Release a new version. Update POMs and tag the new version in git. - mvn release:prepare release:perform -Darguments="-Dmaven.deploy.skip=true -Dmaven.javadoc.skip=true" +release: ## Release a new version. Update POMs and tag the new version in git. Pipeline will deploy upon tag detection. + git push origin main:release .PHONY: help help: diff --git a/pom.xml b/pom.xml index 78c7d77..d128039 100644 --- a/pom.xml +++ b/pom.xml @@ -9,11 +9,12 @@ dapla-dlp-pseudo-func - 11 + 21 ${java.version} ${java.version} UTF-8 - artifactregistry://europe-north1-maven.pkg.dev/artifact-registry-14da + artifactregistry://europe-north1-maven.pkg.dev/artifact-registry-5n/dapla-pseudo-maven/ + statisticsnorway/dapla-dlp-pseudo-func 3.24.2 @@ -23,28 +24,27 @@ 1.5.1 5.9.2 1.4.5 - 1.18.26 + 1.18.30 2.0.6 1.8.0 - 0.0.3 + 0.0.13 2.1.4 10.8.1 - 3.1.2 - 3.8.1 - 3.3.0 - 3.2.4 - 2.22.2 - 3.2.1 + 3.3.1 + 3.11.0 + 3.6.2 + 3.5.1 + 3.2.2 + 3.3.0 0.8.8 3.9.1.2184 - scm:git:git://github.com/statisticsnorway/dapla-dlp-pseudo-func.git - scm:git:git@github.com:statisticsnorway/dapla-dlp-pseudo-func.git - https://github.com/statisticsnorway/dapla-dlp-pseudo-func + scm:git:https://github.com/${github.repository}.git + https://github.com/${github.repository} HEAD @@ -164,48 +164,6 @@ - - org.apache.maven.plugins - maven-shade-plugin - ${maven-shade-plugin.version} - - - package - - shade - - - - - - - - com.idealista - no.ssb.dapla.dlp.shaded.com.idealista - - - com.google.common - no.ssb.dapla.dlp.shaded.com.google.common - - - com.fasterxml.jackson - no.ssb.dapla.dlp.shaded.jackson - - - shaded - true - - - com.idealista:* - com.google.guava:* - com.fasterxml.jackson.core:* - - - false - - - - @@ -220,9 +178,7 @@ artifact-registry - - artifactregistry://europe-north1-maven.pkg.dev/artifact-registry-14da/maven-releases - + ${artifact-registry.url} true @@ -232,9 +188,7 @@ artifact-registry-snapshot - - artifactregistry://europe-north1-maven.pkg.dev/artifact-registry-14da/maven-snapshots - + ${artifact-registry.url} false @@ -300,14 +254,21 @@ artifact-registry - ${artifact-registry.url}/maven-releases + ${artifact-registry.url} artifact-registry-snapshots - ${artifact-registry.url}/maven-snapshots + ${artifact-registry.url} + + + github + GitHub Packages + https://maven.pkg.github.com/${github.repository} + +