如何在无交互命令行下登录GitHub CLI并运行指定工作流?
无交互登录GitHub CLI并运行指定工作流的方法
1. 无交互登录GitHub CLI
要实现无交互登录,你可以利用gh auth login --with-token命令直接从标准输入读取个人访问令牌(PAT),跳过所有交互式提示。确保你的PAT已包含repo、read:org、workflow这几个最小必要权限。
执行命令:
# 替换为你的GitHub个人访问令牌 echo "你的GitHub_PAT" | gh auth login --with-token # 对应手动流程中的Git协议设置步骤 gh config set -h github.com git_protocol https
2. 无交互运行指定Node.js工作流
登录完成后,使用gh workflow run命令指定工作流文件和仓库即可触发运行:
# 替换为你的工作流文件名和仓库路径 gh workflow run node.js.yaml --repo yuuval/react-deploy-aws
3. 集成到cloud-init文件
将上述命令替换到你cloud-init文件的//HERE COMES THE LOGIN PART + GH WORKFLOW RUN NODE.JS.YML FILE注释位置,同时修复第一条命令的语法问题(确保curl安装与后续命令正确衔接)。修改后的runcmd部分如下:
runcmd: - type -p curl >/dev/null || sudo apt install curl -y && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ && sudo apt update \ && sudo apt install gh -y - mkdir react - cd react - curl -o actions-runner-linux-x64-2.301.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.300.1/actions-runner-linux-x64-2.301.1.tar.gz - tar xzf ./actions-runner-linux-x64-2.301.1.tar.gz - yes "" | ./config.sh --url https://github.com/yuuval/react-deploy-aws --token AVYXWHVAXX2TB4J63XBJCIDDYB6TA - sudo ./svc.sh install - sudo ./svc.sh start # 无交互登录GitHub CLI - echo "你的GitHub_PAT" | gh auth login --with-token - gh config set -h github.com git_protocol https # 运行指定Node.js工作流 - gh workflow run node.js.yaml --repo yuuval/react-deploy-aws - cd _work - cd react-deploy-aws - cd react-deploy-aws - cd /etc/nginx/sites-available - sudo rm default - echo "server {listen 80 default_server;server_name _;location / {root /home/ubuntu/react/_work/react-deploy-aws/react-deploy-aws/build;try_files \$uri /index.html;}}" | sudo tee /etc/nginx/sites-available/default - sudo service nginx restart - sudo chmod +x /home - sudo chmod +x /home/ubuntu - sudo chmod +x /home/ubuntu/react - sudo chmod +x /home/ubuntu/react/_work - sudo chmod +x /home/ubuntu/react/_work/react-deploy-aws - sudo chmod +x /home/ubuntu/react/_work/react-deploy-aws/react-deploy-aws - sudo chmod +x /home/ubuntu/react/_work/react-deploy-aws/build
安全提示:
直接在cloud-init文件中硬编码个人访问令牌存在安全风险,建议使用云服务商的密钥管理服务或cloud-init的机密注入功能来安全传递令牌。
内容的提问来源于stack exchange,提问作者crvxッ
相关产品推荐
相关产品推荐

