Pārlūkot izejas kodu

GH Actions: Добавил workflow для обновления года в копирайтах, удалил nightly.yml

Workflow перенесен из Dviglo
1vanK 2 gadi atpakaļ
vecāks
revīzija
9d0f91edf4
3 mainītis faili ar 116 papildinājumiem un 54 dzēšanām
  1. 95 0
      .github/workflows/bump_year.yml
  2. 0 54
      .github/workflows/nightly.yml
  3. 21 0
      licenses/dviglo/LICENSE

+ 95 - 0
.github/workflows/bump_year.yml

@@ -0,0 +1,95 @@
+# Copyright (c) 2022-2022 the Dviglo project
+# Copyright (c) 2008-2022 the Urho3D project
+# License: MIT
+
+# Данный workflow обновляет год в копирайтах
+
+# Отображаемое имя workflow
+# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#name
+name: Обновление года в копирайтах
+
+# Условия, при которых будет запущен workflow
+on:
+  # Запускается вручную (через вкладку Actions)
+  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch
+  workflow_dispatch:
+
+  # Запускается каждую полночь
+  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
+  schedule: [cron: '0 0 * * *']
+
+# Workflow состоит из jobs, которые могут выполняться последовательно или параллельно
+jobs:
+  # Идентификатор job
+  # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_id
+  BumpYear:
+    # Будет запущен на виртуальной машине с последней версией Ubuntu
+    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on
+    runs-on: ubuntu-latest
+
+    # Отображаемое имя job 
+    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idname
+    name: Обновляем год в копирайтах
+
+    # Ничего не делаем в форках
+    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idif
+    if: github.repository == 'urho3d/urho3d'
+
+    # Job состоит из последовательности задач
+    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsteps
+    steps:
+      # Отображаемое имя step
+    - name: Работаем
+
+      # Дефолтная командная оболочка моментально прекращает работу, если при выполнении любой команды возникла ошибка.
+      # Нам же нужна возможность обработки ошибок
+      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
+      shell: bash {0} # Позволяем обработку ошибок
+
+      run: |
+        # Автор коммита
+        git config --global user.email [бот]@users.noreply.github.com
+        git config --global user.name [Бот]
+
+        # Кто-то может изменить репозиторий в этот самый момент, поэтому пробуем несколько раз
+        for (( i = 0; i < 4; ++i ))
+        do
+          # При клонировании репозитория возможно одновременно авторизоваться, чтобы без авторизации
+          # выполнять команду git push.
+          # Но так делать нельзя, так как токен будет в открытом виде сохранён в файл repo/.git/config
+          # https://github.blog/2012-09-21-easier-builds-and-deployments-using-git-over-https-and-oauth/
+          git clone https://github.com/${{ github.repository }} repo
+
+          # Проверяем год в файле с текстом лицензии
+          YEAR=`date +%Y`
+          if grep -qF "Copyright (c) 2022-$YEAR the Urho3D project." repo/licenses/urho3d/LICENSE
+          then
+            exit 0 # Год уже правильный, выходим
+          fi
+
+          # Обновляем год во всех файлах
+          cd repo
+
+          # Про find читайте тут: https://github.com/dviglo/dviglo/pull/3
+          find . -type f -not -path './.git/*' -exec perl -pi -e "s/2022-[0-9]{4} the Dviglo project/2022-$YEAR the Dviglo project/g" {} +
+          find . -type f -not -path './.git/*' -exec perl -pi -e "s/2008-[0-9]{4} the Urho3D project/2008-$YEAR the Urho3D project/g" {} +
+
+          #  Создаём и отправляем коммит
+          git add -A
+          git commit -m "Обновляем год в копирайтах до $YEAR"
+
+          # github.token использовать нельзя, так как текущий workflow меняется (а вместе с ним и токен).
+          # Используем personal access token (PAT) со scope = workflow
+          git push https://${{ secrets.DVIGLO_BUMP_YEAR }}@github.com/${{ github.repository }}
+
+          EXIT_CODE=$? # Сохраняем в переменную код возврата предыдущей команды (push)
+          if (( $EXIT_CODE == 0 ))
+          then
+            break # Коммит успешно отправлен
+          fi
+
+          echo "========== Ещё одна попытка =========="
+          cd ..
+          rm -rf repo
+          sleep 20
+        done

+ 0 - 54
.github/workflows/nightly.yml

@@ -1,54 +0,0 @@
-# Copyright (c) 2008-2022 the Urho3D project
-# License: MIT
-
----
-
-name: Nightly
-on:
-  workflow_dispatch:
-  schedule: [ cron: '0 0 * * *' ]
-jobs:
-  nightly:
-    name: Nightly build
-    runs-on: ubuntu-latest
-    env:
-      PUBLISHER_NAME: ${{ secrets.PUBLISHER_NAME }}
-      PUBLISHER_EMAIL: ${{ secrets.PUBLISHER_EMAIL }}
-      PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v3
-        with:
-          token: ${{ env.PUBLISHER_TOKEN }}
-      - name: Update dot files for DBE
-        id: update_dot_files
-        run: rake update_dot_files
-      - name: Check license
-        id: check_license
-        run: rake check_license
-      - name: Check cache
-        id: check_cache
-        run: |
-          last_run=$(date -d $(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/urho3d/Urho3D/actions/workflows/2398550/runs 2>/dev/null |jq -r '.workflow_runs[0].created_at') '+%s')
-          now=$(date '+%s')
-          skip=$(( (now - last_run)/(60*60*24) < 7 ))
-          echo "name=skip::$skip" >> $GITHUB_OUTPUT
-        if: |
-          steps.update_dot_files.outputs.commit == '0' &&
-          steps.check_license.outputs.commit == '0'
-      - name: Push
-        run: git push
-        if: |
-          steps.update_dot_files.outputs.commit == '1' ||
-          steps.check_license.outputs.commit == '1'
-      - name: Dispatch
-        uses: peter-evans/repository-dispatch@v2
-        with:
-          token: ${{ env.PUBLISHER_TOKEN }}
-          repository: urho3d/Urho3D
-          event-type: 'Warm DBE build cache'
-        if: steps.check_cache.outputs.skip == '0'
-
-...
-
-# vi: set ts=2 sw=2 expandtab:

+ 21 - 0
licenses/dviglo/LICENSE

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2022-2022 the Dviglo project.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.