Команда Go не найдена при запуске ловушки кода - PullRequest
0 голосов
/ 26 апреля 2019

Здравствуйте. Я пытаюсь создать развертывание CodeDeploy для моего приложения golang. У меня есть группа автомасштабирования, в которой используется созданный мной AMI, в котором установлены все необходимые библиотеки. Когда я пытаюсь запустить CodeDeploy, он существует с ошибкой в ​​моем after_install:

LifecycleEvent - AfterInstall
Script - scripts/after_install.sh
[stderr]/opt/codedeploy-agent/deployment-root/a65d9a2e-fddd-471c-8ea1-c018792d00bd/d-4IKP3PP4Y/deployment-archive/scripts/after_install.sh: 
line 4: go: command not found

Я знаю, что go установлен на сервере, который я могу проверить, запустив sshing на сервер и выполнив команду go. Изначально мой after_install хук был запущен от имени пользователя root, поэтому я подумал, что он жаловался на то, что он не установлен.

Я обновил его до ubuntu вот файл appspec

version: 0.0
os: linux
files:
  - source: ./
    destination: ./home/ubuntu/code
hooks:
  AfterInstall:
    - location: scripts/after_install.sh
      timeout: 180
      runas: ubuntu
  ApplicationStart:
    - location: scripts/application_start.sh
      timeout: 180
      runas: root

Но я все еще получаю ошибку команды go not found. Я SSH на сервер как ubuntu пользователь, и я ясно вижу, что go установлен.

Я сделал еще один шаг вперед и запустил файл after_install.sh, и он работал без ошибок. Что я здесь не так делаю?

Просто для любопытных вот мой after_install.sh файл

#!/bin/bash

cd /home/ubuntu/code/vibeify/cmd/vibeify
go build

1 Ответ

0 голосов
/ 26 апреля 2019

Если вы можете использовать команду go без полного пути установки только в интерактивной оболочке, отметьте $HOME/.bashrc.

Может зависеть от настроек ОС по умолчанию, но некоторые файлы bashrc по умолчанию для ОС содержат сценарии, которые не загружают профиль в неинтерактивной оболочке.

# open $HOME/.bashrc file
# and comment out these lines
case $- in
    *i*) ;;
      *) return;;
esac
...