kokoichi206 / routines

0 stars 0 forks source link

githubの活動数をチェックするタスクがこける #1

Closed kokoichi206 closed 2 years ago

kokoichi206 commented 2 years ago

スケジュール実行してるタスクが失敗している。 引数の渡し方がまずいらしい

03/07

python action_checker/events.py \
    *** \
    *** \
    ***
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/[3](https://github.com/kokoichi206/routines/runs/5449908625?check_suite_focus=true#step:5:3).8.12/x6[4](https://github.com/kokoichi206/routines/runs/5449908625?check_suite_focus=true#step:5:4)
Traceback (most recent call last):
  File "action_checker/events.py", line 9[7](https://github.com/kokoichi206/routines/runs/5449908625?check_suite_focus=true#step:5:7), in <module>
    steps = list(map(int, sys.argv[3].split(" ")))
ValueError: invalid literal for int() with base 10: 'kqns[9](https://github.com/kokoichi206/routines/runs/5449908625?check_suite_focus=true#step:5:9)1'
Error: Process completed with exit code 1.

03/08

python action_checker/events.py \
    *** \
    \"***\" \
    \"***\"
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/[3](https://github.com/kokoichi206/routines/runs/5465648479?check_suite_focus=true#step:5:3).8.12/x6[4](https://github.com/kokoichi206/routines/runs/5465648479?check_suite_focus=true#step:5:4)
Traceback (most recent call last):
  File "action_checker/events.py", line 9[7](https://github.com/kokoichi206/routines/runs/5465648479?check_suite_focus=true#step:5:7), in <module>
    steps = list(map(int, sys.argv[3].split(" ")))
ValueError: invalid literal for int() with base 10: 'kqns[9](https://github.com/kokoichi206/routines/runs/5465648479?check_suite_focus=true#step:5:9)1'
kokoichi206 commented 2 years ago

events.py の引数

3つの引数を渡す様にしている

  1. Line Notify のアクセストークン
  2. チェックしたいメンバーのリストをスペース区切り
  3. 写真の内容を切り替えるイベント数をスペース区切り

2,3 において、配列を渡す際にスペース区切りで記述しているが、単に渡したのでは異なる引数として認識されてしまう(03/07 のジョブの失敗)

そこで、03/08 においては、

python action_checker/events.py \
    ${notify_token} \
    \"${members_array_with_space}\" \
    \"${steps_array_with_space}\"

と実行させてあげることで、引数を期待値通りにまとめて渡すことができた(かの様に思われた)

エラーメッセージを見ると、${members_array_with_space} の2つ目の要素が、argument の3つ目として認識されているっぽい

kokoichi206 commented 2 years ago

sys.argv の理解

以下のようなファイルを用意 (argv.py)

import sys

for i in range(len(sys.argv)):
    print(sys.argv[i].split(" "))

期待していた渡し方

python arg.py \
        "access_token" \
        "a b c" \
        "0 1 5"
['arg.py']
['access_token']
['a', 'b', 'c']
['0', '1', '5']

" が余計(ただ、03/08 の様なエラーにはならなそう。。。)

members="a b c"; steps="0 1 5"; \
> python arg.py \
        "access_token" \
        \"${members}\" \
>       \"${steps}\"
['arg.py']
['access_token']
['"a', 'b', 'c"']
['"0', '1', '5"']
kokoichi206 commented 2 years ago

解決策(案1)

うまく渡すのは諦めて、ユーザー名に使われなさそうな文字を使って連結させる(\とか)

\で分割する例

import sys

for i in range(len(sys.argv)):
    print(sys.argv[i].split("\\"))

\で引き渡す例

members="a\b\c"; steps="0\1\5"; \
python arg.py \
        "access_token" \
        ${members} \
        ${steps}
['arg.py']
['access_token']
['a', 'b', 'c']
['0', '1', '5']

デメリット?

補足

何が使えそうかに関して Github は URL に使用可能であることを重要視してそう(?)なので、URL に使用できない\がユーザー名に許容されることはないと思われる

kokoichi206 commented 1 year ago

2023/1/6

別件だが、草を表示する svg の内容が変わっていた。 (失敗したジョブ

Before(おそらく):

<rect class="ContributionCalendar-day" data-date="2023-01-08" data-level="1" data-count="2" height="10" rx="2" ry="2" width="10" x="-38" y="0">1 contribution on January 8, 2023</rect>

After:

<rect class="ContributionCalendar-day" data-date="2023-01-08" data-level="1" height="10" rx="2" ry="2" width="10" x="-38" y="0">1 contribution on January 8, 2023</rect>

svg の属性から data-count が消えていた。

修正

https://github.com/kokoichi206/routines/commit/cb938d9e892e930c980962b98096f797568e2632