This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-site.git


The following commit(s) were added to refs/heads/main by this push:
     new f674214d GitHub workflows on `asf-staging` are not taking effect, copy 
them to here
f674214d is described below

commit f674214defe44f4e9671fdb1c4eeefe1d13be0b4
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Mon Jan 29 21:41:27 2024 +0100

    GitHub workflows on `asf-staging` are not taking effect, copy them to here
---
 .github/workflows/update-stats.yaml | 186 ++++++++++++++++++++++++++++++++++++
 1 file changed, 186 insertions(+)

diff --git a/.github/workflows/update-stats.yaml 
b/.github/workflows/update-stats.yaml
new file mode 100644
index 00000000..61e16118
--- /dev/null
+++ b/.github/workflows/update-stats.yaml
@@ -0,0 +1,186 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: update-stats
+
+on:
+  workflow_dispatch: {}
+  schedule:
+    - cron: "0 0 1 * 1"
+
+concurrency:
+  group: ${{ github.ref_name }}
+  cancel-in-progress: true
+
+permissions: read-all
+
+env:
+  DATA_FILEPATH: stats.csv
+
+jobs:
+
+  collect:
+
+    name: "collect (${{ matrix.proj-spec.id }})"
+
+    runs-on: ubuntu-latest
+
+    strategy:
+      matrix:
+        proj-spec:
+          - id: chainsaw
+            repo-name: apache/logging-chainsaw
+            repo-branch: master
+          - id: log4cxx
+            repo-name: apache/logging-log4cxx
+            repo-branch: master
+            packaging: cmake
+          - id: log4j-1
+            repo-name: apache/logging-log4j1
+            repo-branch: main
+          - id: log4j-2
+            repo-name: apache/logging-log4j2
+            repo-branch: 2.x
+          - id: log4j-jmx-gui
+            repo-name: apache/logging-log4j-jmx-gui
+          - id: log4j-kotlin
+            repo-name: apache/logging-log4j-kotlin
+          - id: log4j-scala
+            repo-name: apache/logging-log4j-scala
+          - id: log4j-transform
+            repo-name: apache/logging-log4j-transform
+          - id: log4j-tools
+            repo-name: apache/logging-log4j-tools
+          - id: log4j-audit
+            repo-name: apache/logging-log4j-audit
+            repo-branch: master
+          - id: log4net
+            repo-name: apache/logging-log4net
+            repo-branch: master
+            packaging: nant
+          - id: log4j-server
+            repo-name: apache/logging-log4j-server
+            repo-branch: master
+
+    env:
+      PROJ_ID: ${{ matrix.proj-spec.id }}
+      REPO_NAME: ${{ matrix.proj-spec.repo-name }}
+      REPO_BRANCH: ${{ matrix.proj-spec.repo-branch || 'main' }}
+      PROJ_PACKAGING: ${{ matrix.proj-spec.packaging || 'maven' }}
+
+    steps:
+
+      - name: Checkout the repository
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11   # 
4.0.0
+        with:
+          repository: ${{ env.REPO_NAME }}
+          ref: ${{ env.REPO_BRANCH }}
+          # Fetch all the history:
+          fetch-depth: 0
+
+      - name: Collect statistics
+        shell: bash
+        run: |
+          case $PROJ_PACKAGING in
+
+            maven)
+              find . -regextype posix-extended -name "pom.xml" -and -not 
-regex "(.*/)?target/.*" | while read pomXmlFilepath; do
+    
+                # Ignore the artifact, if it is skipped at deployment
+                skipMatchCount=$(python -c "import xml.etree.ElementTree as 
ET; 
print(len(ET.parse('$pomXmlFilepath').findall('./{*}properties/{*}maven.deploy.skip')))")
+                [ "$skipMatchCount" -gt 0 ] && continue
+    
+                # Extract the module name (i.e., `artifactId`)
+                module=$(python -c "import xml.etree.ElementTree as ET; 
print(ET.parse('$pomXmlFilepath').findall('./{*}artifactId')[0].text)")
+    
+                # Dump statistics of the module folder
+                moduleDir=$(dirname "$pomXmlFilepath")
+                git log --pretty=tformat:"%as %ae" -- "$moduleDir" | while 
read instant author; do
+                  echo "$PROJ_ID,$module,$instant,$author"
+                done >>"$DATA_FILEPATH"
+    
+              done
+              ;;
+
+            *)
+              git log --pretty=tformat:"%as %ae" | while read instant author; 
do
+                echo "$PROJ_ID,*,$instant,$author"
+              done >"$DATA_FILEPATH"
+              ;;
+
+          esac
+
+      - name: Upload statistics
+        uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 
 # 3.1.3
+        with:
+          name: ${{ env.PROJ_ID }}-${{ env.REPO_BRANCH }}-${{ 
env.DATA_FILEPATH }}
+          path: ${{ env.DATA_FILEPATH }}
+
+  merge:
+
+    needs: collect
+
+    runs-on: ubuntu-latest
+
+    env:
+      DOWNLOAD_DIR: /tmp/stats
+
+    permissions:
+      contents: write
+
+    steps:
+
+      # We could have rolled out our own shell script to read the GPG private 
key.
+      # Though we use `actions/setup-java` everywhere for that purpose, and it 
simply works.
+      # Plus, it has several security enhancements; cleanup steps for removing 
the private key file and the imported keychain, etc.
+      - name: Set up GPG
+        uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0   # 
3.7.0
+        with:
+          distribution: temurin
+          java-version: 17
+          java-package: jdk
+          architecture: x64
+          gpg-private-key: ${{ secrets.LOGGING_GPG_SECRET_KEY }}
+
+      - name: Checkout the repository
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11   # 
4.0.0
+        with:
+          ref: activity-monitor
+
+      - name: Set up Git
+        shell: bash
+        run: |
+          # Set up user name and email required for `git commit`
+          git config user.name "ASF Logging Services RM"
+          git config user.email [email protected]
+
+      - name: Download statistics
+        uses: 
actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a  # 3.0.2
+        with:
+          path: ${{ env.DOWNLOAD_DIR }}
+
+      - name: Merge & commit statistics
+        shell: bash
+        run: |
+          ( echo "project,module,instant,author"; find "$DOWNLOAD_DIR" -type f 
| xargs cat ) >"$DATA_FILEPATH"
+          export DATA_INSTANT_FILEPATH="stats-instant.txt"
+          echo -n $(date --utc "+%Y-%m-%dT%H:%M:%SZ") >"$DATA_INSTANT_FILEPATH"
+          git add "$DATA_FILEPATH" "$DATA_INSTANT_FILEPATH"
+          if [ -n "$(git status --porcelain)" ]; then
+            git commit -S "$DATA_FILEPATH" "$DATA_INSTANT_FILEPATH" -m "Update 
project activity data"
+            git push -f origin
+          fi

Reply via email to