在我的应用程序准备好进行测试或部署之前,我需要进行一些目录整理。我想利用一个 Makefile 目标来调用存储库中的 shell 脚本以使其与 CI/CD 无关。可以使用 make prepare_directory
命令调用此目标。
我正在使用的 CI 平台是 Github Actions。以下是在新拉取请求上运行的工作流程的相关部分:
name: PR Tests
env:
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Prep directoy
run: make prepare_directory
这是Makefile的相关部分(在本地完全按预期工作):
...
prepare_directory:
./scripts/prepare_directory.sh
clean:
@rm -Rf ./$(BUILDPREFIX)
.PHONY: all clean docker lint prep_avro $(dockerbuilds)
以下是 ./scripts/prepare-directory.sh
脚本的相关部分:
#!/bin/bash -e
# ...
# clone repo using https and GITHUB_TOKEN
git clone https://$GIT_TOKEN@github.com:USERNAME/REPO.git
当我尝试使用该URL进行克隆操作时,从shell脚本中执行时,脚本失败了(连同Github工作流管道一起),出现以下错误:
fatal: unable to access 'https://github.com:USERNAME/REPO.git/': URL using bad/illegal format or missing URL
有人知道我做错了什么吗?
x-access-token:
。此外,我不明白他为什么要使用环境变量;这只会使事情变得更加复杂,没有任何好处。应该只是git clone https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/USERNAME/REPO.git
。 - LinuxDisciple