Skip to content

akceptu-submetojn #27026

akceptu-submetojn

akceptu-submetojn #27026

name: akceptu-submetojn
# Tiu ago unue rigardas per voko-afido ĉu novaj redaktoj alvenis (en gist.github.com)
# kaj traktas tiujn. Poste ĝi aktualigas la artikolojn en Revo.
on:
# push:
# branches:
# - master
# la tempo estas laŭ UTC, do laŭ mezeŭropa tempo tio
# vintre estas 23:15 kaj somere 00:15
#
# * estas speciala signo, do nepre uzu citilojn
schedule:
- cron: '10 * * * *'
#- cron: '10 */2 * * *'
#- cron: '10 */3 * * *'
# uzu 'access token' kun Git-arĥivo
# https://www.innoq.com/de/blog/github-actions-automation/
# https://github.com/ad-m/github-push-action/blob/master/start.sh
env:
# voko-formiko image tag {latest|stabila|2x}
FORMIKO_TAG: 2m
AFIDO_TAG: 2m
REVO_HOST: ${{ secrets.REVO_HOST }}
jobs:
revo-redaktoj-gh:
runs-on: ubuntu-latest
outputs:
KONFIRMO_GH: ${{ steps.rigardu_protokolon.outputs.KONFIRMO_GH }}
steps:
# fix for curl timeout
# vd. https://github.com/actions/runner-images/issues/1187#issuecomment-686735760
# https://github.com/termux/termux-packages/pull/6858/commits/a5f6e66eb1971cfc8ec946553d9066be78050b8d
- name: Antaŭkontrolo por identigi eblajn problemojn
run: |
uname -a
curl --user ${{ secrets.CGI_USER }}:${{ secrets.CGI_PASSWD }} --max-time 20 -o /dev/null https://${{ env.REVO_HOST }}/cgi-bin/admin/time.pl & sleep 0.1 && ss -t -4 -a -o
# exit 1
#fi
- name: Kreu dosierujojn por konservi la rezultojn ...
run: |
mkdir .tmp
mkdir .log
- name: Saluto al ghcr.io kaj preni 'voko-afido'
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: |
echo "$GITHUB_TOKEN" | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker pull "ghcr.io/revuloj/voko-afido/voko-afido:${{ env.AFIDO_TAG }}"
- name: Akceptu redaktojn el gists.github.com, kontrolu, arĥivu kaj raportu al redaktantoj
run: |
docker run -d --name afido \
-e SMTP_SERVER=smtp.strato.de \
-e SMTP_USER=${{ secrets.SMTP_USER }} \
-e SMTP_PASSWORD=${{ secrets.SMTP_PASSWORD }} \
-v $GITHUB_WORKSPACE/.tmp:/home/afido/dict/tmp \
-v $GITHUB_WORKSPACE/.log:/home/afido/dict/log \
ghcr.io/revuloj/voko-afido/voko-afido:${{ env.AFIDO_TAG }}
sleep 10
docker exec -u1074 \
-e GIT_REPO_REVO=revo-fonto \
-e REVO_HOST=svagaj.steloj.de \
-e CGI_USER=${{ secrets.CGI_USER }} \
-e CGI_PASSWORD=${{ secrets.CGI_PASSWD_RS }} \
-e GITHUB_TOKEN=${{secrets.GITHUB_TOKEN}} \
-e REVO_TOKEN=${{secrets.REVO_TOKEN}} \
-e SIGELILO=${{secrets.SIGELILO}} \
afido \
afido
- name: Rigardu la protokolon
id: rigardu_protokolon
run: |
ls -l .tmp/ .log/
if ls .log/mail_sent* 2>/dev/null 1>&2; then
# kontrolu ĉu estas iu konfirmita redakto, rezulto nur estu unulinia, pro tio ni uzas if...
echo "KONFIRMO_GH=$(if [[ $(grep -l '\"konfirmo\"' .log/mail_sent*) ]]; then echo "1"; fi)" >> $GITHUB_OUTPUT
# cat .log/mail_sent*
echo "|rezulto|artikolo|ŝanĝo|" >> $GITHUB_STEP_SUMMARY
echo "|-|-|-|" >> $GITHUB_STEP_SUMMARY
jq -r '[.[] | ["",.rezulto,.artikolo,.shangho,""]|join("|")| gsub("[$]";"")]|join("\\n")' .log/mail_sent* >> $GITHUB_STEP_SUMMARY
fi
- name: Konservu protokolojn
uses: actions/upload-artifact@v4
with:
name: log-gh
path: .log
- name: Konservu la interrezultojn
uses: actions/upload-artifact@v4
with:
name: tmp-gh
path: .tmp
revo-redaktoj-db:
runs-on: ubuntu-latest
# ne kuru ambaŭ samtempe, por eviti fand-konfliktojn de la git-arĥivo!
needs: revo-redaktoj-gh
outputs:
KONFIRMO_DB: ${{ steps.rigardu_protokolon.outputs.KONFIRMO_DB }}
steps:
# fix for curl timeout
# vd. https://github.com/actions/runner-images/issues/1187#issuecomment-686735760
# https://github.com/termux/termux-packages/pull/6858/commits/a5f6e66eb1971cfc8ec946553d9066be78050b8d
- name: Antaŭkontrolo por identigi eblajn problemojn
run: |
uname -a
set +e
curl --user ${{ secrets.CGI_USER }}:${{ secrets.CGI_PASSWD }} --max-time 20 https://${{ env.REVO_HOST }}/cgi-bin/admin/time.pl
if [ $? == 28 ]; then
# printenv
# ip -s -h link
curl --user ${{ secrets.CGI_USER }}:${{ secrets.CGI_PASSWD }} --max-time 20 https://${{ env.REVO_HOST }}/cgi-bin/admin/time.pl & sleep 1 && ss --info -t4aop dport = :443
# echo "###### log ##########"
# ls -l /var/log
echo "###### net ##########"
# ls /proc/sys/net/ipv4/tcp_tw_*
# cat /proc/sys/net/ipv4/tcp_tw_*
sudo tail /var/log/syslog
ip -s -h link
# sudo iptables -L
exit 1
fi
- name: Kreu dosierujojn por konservi la rezultojn ...
run: |
uname -a
mkdir .tmp
mkdir .log
- name: Saluto al ghcr.io kaj preni 'voko-afido'
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: |
echo "$GITHUB_TOKEN" | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker pull "ghcr.io/revuloj/voko-afido/voko-afido:${{ env.AFIDO_TAG }}"
- name: Akceptu redaktojn el submetoj, kontrolu, arĥivu kaj raportu al redaktantoj
run: |
docker run -d --name afido \
-e SMTP_SERVER=smtp.strato.de \
-e SMTP_USER=${{ secrets.SMTP_USER }} \
-e SMTP_PASSWORD=${{ secrets.SMTP_PASSWORD }} \
-v $GITHUB_WORKSPACE/.tmp:/home/afido/dict/tmp \
-v $GITHUB_WORKSPACE/.log:/home/afido/dict/log \
ghcr.io/revuloj/voko-afido/voko-afido:${{ env.AFIDO_TAG }}
sleep 10
docker exec -u1074 \
-e GIT_REPO_REVO=revo-fonto \
-e REVO_HOST=${{ env.REVO_HOST }} \
-e CGI_USER=${{ secrets.CGI_USER }} \
-e CGI_PASSWORD=${{ secrets.CGI_PASSWD }} \
-e GITHUB_TOKEN=${{secrets.GITHUB_TOKEN}} \
-e REVO_TOKEN=${{secrets.REVO_TOKEN}} \
-e SIGELILO=${{secrets.SIGELILO}} \
afido \
afido subm
- name: Rigardu la protokolon
id: rigardu_protokolon
run: |
ls -l .tmp/ .log/
if ls .log/mail_sent* 2>/dev/null 1>&2; then
# kontrolu ĉu estas iu konfirmita redakto, rezulto nur estu unulinia, pro tio ni uzas if...
echo "KONFIRMO_DB=$(if [[ $(grep -l '\"konfirmo\"' .log/mail_sent*) ]]; then echo "1"; fi)" >> $GITHUB_OUTPUT
# cat .log/mail_sent*
echo "|rezulto|artikolo|ŝanĝo|" >> $GITHUB_STEP_SUMMARY
echo "|-|-|-|" >> $GITHUB_STEP_SUMMARY
jq -r '[.[] | ["",.rezulto,.artikolo,.shangho,""]|join("|")| gsub("[$]";"")]|join("\\n")' .log/mail_sent* >> $GITHUB_STEP_SUMMARY
fi
- name: Konservu protokolojn
uses: actions/upload-artifact@v4
with:
name: log-db
path: .log
- name: Konservu la interrezultojn
uses: actions/upload-artifact@v4
with:
name: tmp-db
path: .tmp
revo-aktualigo:
needs: [revo-redaktoj-gh,revo-redaktoj-db]
if: ${{needs.revo-redaktoj-gh.outputs.KONFIRMO_GH || needs.revo-redaktoj-db.outputs.KONFIRMO_DB }}
runs-on: ubuntu-latest
steps:
- name: Antaŭkontrolo por identigi eblajn problemojn
run: |
curl --user ${{ secrets.CGI_USER }}:${{ secrets.CGI_PASSWD }} --max-time 20 https://${{ env.REVO_HOST }}/cgi-bin/admin/time.pl
- uses: actions/github-script@v7
name: Eltrovu la pozicion de marko 'hora-formiko'
id: trovu_horan_formikon
with:
github-token: ${{secrets.GITHUB_TOKEN}}
debug: true
script: |
const ref = await github.rest.git.getRef({...context.repo, ref: 'tags/hora-formiko'})
const sha = ref.data.object.sha
console.log('hora-formiko estas ĉe: '+sha)
core.setOutput('sha_hf',sha)
- uses: actions/github-script@v7
name: Eltrovu la nunan pozicion (kapo)
id: trovu_kapon
with:
github-token: ${{secrets.GITHUB_TOKEN}}
debug: true
script: |
const ref = await github.rest.git.getRef({...context.repo, ref: 'heads/master'})
const sha = ref.data.object.sha
console.log('heads/master estas ĉe: '+sha)
core.setOutput('sha_hm',sha)
- name: Kreu dosierujojn por konservi la rezultojn ...
run: |
uname -a
mkdir .tgz
mkdir .log
# https://github.community/t5/GitHub-Actions/Use-docker-images-from-GitHub-Package-Registry/td-p/30407
# https://github.com/actions/starter-workflows/blob/master/ci/docker-push.yml
- name: Saluto al ghcr.io kaj preni voko-formiko
if: steps.trovu_horan_formikon.outputs.sha_hf != steps.trovu_kapon.outputs.sha_hm
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: |
echo "$GITHUB_TOKEN" | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker pull "ghcr.io/revuloj/voko-formiko/voko-formiko:${{ env.FORMIKO_TAG }}"
- name: Aktualigu la artikolojn redaktitajn de hora-formiko ĝis HEAD
if: steps.trovu_horan_formikon.outputs.sha_hf != steps.trovu_kapon.outputs.sha_hm
run: docker run -u1001
-e GIT_REPO_REVO=https://github.com/revuloj/revo-fonto.git
-e FTP_USER=${{ secrets.FTP_USER }}
-e FTP_PASSWD=${{ secrets.FTP_PASSWD }}
-e FTP_SERVER2=314802.webhosting7.1blu.de
-e FTP_USER2="${{ secrets.FTP_USER2 }}"
-e FTP_PASSWD2="${{ secrets.FTP_PASSWD2 }}"
-e CGI_SERVER=${{ env.REVO_HOST }}
-e CGI_USER=${{ secrets.CGI_USER }}
-e CGI_PASSWD=${{ secrets.CGI_PASSWD }}
-e CGI_SERVER2=${{ env.REVO_HOST }}
-e CGI_USER2=${{ secrets.CGI_USER }}
-e CGI_PASSWD2=${{ secrets.CGI_PASSWD }}
-v $GITHUB_WORKSPACE/.tgz:/home/formiko/tgz
-v $GITHUB_WORKSPACE/.log:/home/formiko/log
ghcr.io/revuloj/voko-formiko/voko-formiko:${{ env.FORMIKO_TAG }} formiko
-Dsha1=${{ steps.trovu_horan_formikon.outputs.sha_hf }}
-Dsha2=${{ steps.trovu_kapon.outputs.sha_hm }}
srv-servo-github-hore
- name: Rigardu la rezulton
run: |
#tar -czf revo.tgz $GITHUB_WORKSPACE/revo
ls -l .tgz/ .log/
- name: Konservu rezultintajn arĥivojn
uses: actions/upload-artifact@v4
with:
name: tgz
path: .tgz
- name: Konservu protokolojn
uses: actions/upload-artifact@v4
with:
name: log
path: .log
- uses: actions/github-script@v7
if: steps.trovu_horan_formikon.outputs.sha_hf != steps.trovu_kapon.outputs.sha_hm
name: Movu antaŭen la formikon
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
debug: true
script: |
var result = {};
try {
result = await github.rest.git.updateRef({
owner: context.repo.owner,
repo: context.repo.repo,
sha: '${{ steps.trovu_kapon.outputs.sha_hm }}',
ref: 'tags/hora-formiko',
force: true })
} catch(error) {
console.log("ERROR:");
}
console.log("RESULT...")
console.log(result)