Skip to content

Git克隆代码

bash
#!/bin/bash

# 确保脚本在出现错误时退出
set -e

# 读取环境变量 CI_PROJECT_ID 和 CI_PROJECT_HTTP_URL 和 CI_COMMIT_ID
if [ -z "$CI_PROJECT_ID" ]; then
  echo "环境变量 CI_PROJECT_ID 未设置,退出脚本。"
  exit 1
fi

if [ -z "$CI_PROJECT_HTTP_URL" ]; then
  echo "环境变量 CI_PROJECT_HTTP_URL 未设置,退出脚本。"
  exit 1
fi

if [ -z "$CI_COMMIT_ID" ]; then
  echo "环境变量 CI_COMMIT_ID 未设置,退出脚本。"
  exit 1
fi

# 判断当前目录是否存在以 CI_PROJECT_ID 命名的文件夹
if [ ! -d "$CI_PROJECT_ID" ]; then
  echo "文件夹 $CI_PROJECT_ID 不存在,正在创建..."
  mkdir "$CI_PROJECT_ID"
fi

# 进入文件夹
cd "$CI_PROJECT_ID"

# 判断是否存在 .git 文件夹
if [ -d ".git" ]; then
  echo ".git 文件夹存在,执行 git fetch..."
  git fetch
else
  echo ".git 文件夹不存在,执行 git clone..."
  git clone "$CI_PROJECT_HTTP_URL" .
fi

# 切换到指定的 commitId
echo "切换到 commit $CI_COMMIT_ID..."
git checkout "$CI_COMMIT_ID"

# 返回上层目录
cd ..

# 复制文件夹到 temp/${CI_PROJECT_ID}
echo "复制文件夹到 temp/${CI_PROJECT_ID}..."
mkdir -p "temp"
cp -r "$CI_PROJECT_ID" "temp/$CI_PROJECT_ID"

# 进入 temp/${CI_PROJECT_ID}
cd "temp/$CI_PROJECT_ID"

# 执行 flutter build
echo "执行 flutter build..."
flutter build
最近更新