Почему этот скрипт GitHub Actions не создает мою страницу Hu go? - PullRequest
1 голос
/ 14 марта 2020

У меня есть проект GitHub с веб-сайтом на Hu go. Всякий раз, когда кто-то отправляет что-то в ветку prod, я хочу создать страницу Hu go (преобразовать файлы Markdown в HTML) и загрузить ее своему провайдеру хостинга. У меня проблемы со сборкой страницы.

У меня есть этот скрипт в GitHub. Действия:

name: Publish prod branch
on:
        push:
                branches:
                        - prod

jobs:
        build:
                name: Greeting
                runs-on: ubuntu-latest
                steps:
                        - name: Hello world
                          uses: actions/hello-world-javascript-action@v1
                          with:
                                  who-to-greet: Dmitrii
                          id: hello
                        - name: Echo the greeting's time
                          run: echo 'The time was ${{ steps.hello.outputs.time }}.'
                        - name: Build Hugo
                          uses: srt32/hugo-action@master

Это не удается , потому что он не находит файл конфигурации config.toml, хотя он там :

/usr/bin/docker run --name e87b520e21a5125f094485b4e030650bd57153_f8bc76 --label e87b52 --workdir /github/workspace --rm -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/hugo-wp-site/hugo-wp-site":"/github/workspace" e87b52:0e21a5125f094485b4e030650bd57153
Error: Unable to locate config file or config directory. Perhaps you need to create a new site.
#################################################
       Run `hugo help new` for details.
Starting the Hugo Action

Total in 0 ms

Как я могу это исправить, т.е. заставить hu go увидеть мой config.toml файл?

Обновление 1: Я попытался выяснить используемую версию Hu go, изменив скрипт следующим образом:

name: Publish prod branch
on:
        push:
                branches:
                        - prod

jobs:
        build:
                name: Build and publish web site to hosting provider
                runs-on: ubuntu-latest
                steps:
                        - name: Hello world
                          uses: actions/hello-world-javascript-action@v1
                          with:
                                  who-to-greet: Dmitrii
                          id: hello
                        - name: Echo the greeting's time
                          run: echo 'The time was ${{ steps.hello.outputs.time }}.'
                        - name: Output the version of Hugo
                          run: hugo version
                        - name: Build Hugo
                          uses: srt32/hugo-action@master

Но когда я его запускаю, я получаю следующая ошибка:

hugo version
  shell: /bin/bash -e {0}
/home/runner/work/_temp/9e57960c-2f2c-4f2a-870c-c1cbc41d820f.sh: line 1: hugo: command not found
##[error]Process completed with exit code 127.

Обновление 2: Обнаружена версия Hu go в выводе:

 (7/7) Installing hugo (0.61.0-r0)

Обновление 3: Самая ранняя версия Hu go, в которой может быть исправлена ​​проблема 6794 : v0.64.0 , поскольку эта проблема была объединена 31 января и v0.64.0 - первая версия, вышедшая после этого дня.

Обновление 4: Кажется, что для исправления этой ошибки мне нужно убедиться, что Ху go действие использует более новую ве Ху go. Для этого я изменил Dockerfile так, чтобы была установлена ​​версия 0.65.3-r0 (согласно этот ответ ):

RUN apk add --no-cache hugo=0.65.3-r0 bash

Но когда я запускаю скрипт, Alpine Linux не может установить Hu go:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  hugo-0.61.0-r0:
    breaks: world[hugo=0.65.3-r0]
The command '/bin/sh -c apk add --no-cache hugo=0.65.3-r0 bash' returned a non-zero code: 1
##[warning]Docker build failed with exit code 1, back off 9.558 seconds before retry.
/usr/bin/docker build -t e87b52:dfe904e1240c4dbea120e452e5568b51 "/home/runner/work/_actions/dpisarenko/hugo-action/master"
Sending build context to Docker daemon  7.168kB

Любая помощь в том, как это исправить, высоко ценится.

Обновление 5: После изменения раздела для установки Hu go на

RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk update 
RUN apk add --no-cache hugo=0.65.3-r0 bash

действие устанавливает более новую версию Hu go:

 Step 10/13 : RUN apk add --no-cache hugo=0.65.3-r0 bash
 ---> Running in 633b06ba9a65
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
(1/7) Installing ncurses-terminfo-base (6.1_p20200118-r2)
(2/7) Installing ncurses-libs (6.1_p20200118-r2)
(3/7) Installing readline (8.0.1-r0)
(4/7) Installing bash (5.0.11-r1)
Executing bash-5.0.11-r1.post-install
(5/7) Installing libgcc (9.2.0-r3)
(6/7) Installing libstdc++ (9.2.0-r3)
(7/7) Installing hugo (0.65.3-r0)

Но Я все еще получаю ту же ошибку:

Run dpisarenko/hugo-action@master
/usr/bin/docker run --name e87b52fba2a6bbd65d4e86b03264ae4ae92e94_cbeaf6 --label e87b52 --workdir /github/workspace --rm -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/hugo-wp-site/hugo-wp-site":"/github/workspace" e87b52:fba2a6bbd65d4e86b03264ae4ae92e94
#################################################
Starting the Hugo Action
Error: Unable to locate config file or config directory. Perhaps you need to create a new site.
       Run `hugo help new` for details.

Обновление 6: Я добавил команды pwd и ls -al в файл точка входа. sh в котором вызывается hu go:

echo "pwd:"

pwd

echo "ls -al:"

ls -al

hugo "$@"

Вот его вывод:

Starting the Hugo Action
pwd:
/github/workspace
ls -al:
total 8
drwxr-xr-x    2 1001     115           4096 Mar 15 17:39 .
drwxr-xr-x    5 root     root          4096 Mar 15 17:39 ..
Error: Unable to locate config file or config directory. Perhaps you need to create a new site.
       Run `hugo help new` for details.

Кажется, что действие пытается запустить hu go внутри каталога /github/workspace пусто.

Мой следующий шаг - выяснить, в каком каталоге находится содержимое моей ветви git.

Обновление 7: Я пытался вывести содержимое т Справочники

  • /home/runner/work/_temp/_github_home,
  • /github/home,
  • /home/runner/work/_temp/_github_workflow,
  • /github/workflow,
  • /home/runner/work/hugo-wp-site/hugo-wp-site и
  • /github/workspace

в точке входа. sh, но ни один из них не содержит мой код Hu go.

Обновление 8: Я добавил следующую строку к точке входа. sh, чтобы найти каталог с источниками Hu go:

find / -name "*archetypes*"

Все проекты Hu go содержат этот каталог.

Но find не нашел ничего. Похоже, что Docker действия GitHub выполняется в неправильном каталоге.

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Кажется, что код Ху go вообще не был проверен. Поэтому решение состоит в том, чтобы изменить действие GitHub таким образом, чтобы

  1. git был установлен в Dockerized Linux и
  2. исходный код Hu go. 1006 *

Чтобы сделать первое, необходимо изменить Dockerfile , как показано ниже (см. RUN apk add --no-cache git):

FROM alpine:latest

LABEL "com.github.actions.name"="Hugo Actions"
LABEL "com.github.actions.description"="Commands to help with building Hugo based static sites"
LABEL "com.github.actions.icon"="mic"
LABEL "com.github.actions.color"="yellow"

LABEL "repository"="http://github.com/dpisarenko/hugo-action"
LABEL "homepage"="http://github.com/dpisarenko/hugo-action"

RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk update 
RUN apk add --no-cache hugo=0.65.3-r0 bash
RUN apk add --no-cache bash
RUN apk add --no-cache git 

ADD entrypoint.sh /
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

Затем нам нужно вызвать git clone в точка входа. sh:

#!/bin/bash
set -e

echo "#################################################"
echo "Starting the Hugo Action"

git clone --branch prod https://github.com/dpisarenko/hugo-wp-site.git /hugo
cd /hugo
hugo "$@"

echo "#################################################"
echo "Completed the Hugo Action"
1 голос
/ 15 марта 2020

Это основано на srt32 / hu go -action , которая использует возможно более старую версию Hu go.

Сначала проверьте версию hugo, чтобы увидеть, выпуск 6794 применяется (исправлено в январе 2020 года с PR 6834 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...