使用阿里云-云效部署代码

看到阿里云提供了一套代码集成部署方案,尝试搭建一个测试项目

1 开通服务#

  • 访问云效,根据引导创建基础服务。
  • 使用 codeup 创建基础代码库。(类似 git
  • 使用流水线配置基础部署流程。

2 流水线#

  • 选择模版。(我是 php
  • 根据引导配置每个步骤。

2.1 源#

  • 直接引入在 codeup 上创建的代码库。(默认选的阿里云 code,然后提示升级,创建后再回来找不到仓库了,提交工单才知道要选择 codeup

2.2 测试#

  • 使用默认配置

2.3 构建#

  • 使用默认配置

2.4 主机部署#

  • 使用默认配置
  • 部署脚本我没用 https,改成了 ssh

3 本地配置#

先尝试在本地(windows)初始化代码,发现需要支持多版本的 ssh

3.1 ssh 密钥#

  1. git bash 中输入以下命令,生成多个密钥,注意 SSH Key 不能使用默认的文件名 id_rsa,否则默认的密钥文件:

    ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitee_one -C "gitee-user1@email.com"
    ssh-keygen -t rsa -f ~/.ssh/id_rsa_github_two -C "github-user2@email.com"
  2. 测试生成的 SSH Key

    ssh -T git@gitee.com -i ~/.ssh/id_rsa_gitee_one
    # 连接成功提示
    # Welcome to Gitee.com, gitee-user1!
  3. 配置 config 文件

    # ~/.ssh/config 配置多个git的ssh-key
    # 第一个SSH Key
    Host gitee.com
     HostName gitee.com
     IdentityFile C:\\Users\\Administrator\\.ssh\\id_rsa_gitee_one
     PreferredAuthentications publickey
    # 第二个SSH Key
    Host two.github.com
     HostName github.com
     IdentityFile C:\\Users\\Administrator\\.ssh\\id_rsa_github_two
     PreferredAuthentications publickey
  4. 将对应公钥中的内容添加至 codeup 中。

3.2 代码#

根据 laravel 安装文档进行代码初始化。然后提交到 codeup

4 运行流水线#

测试和构建都没问题,部署一直报错。
对于官方示例提供的脚本:

export GIT_REPO=$(echo ${GIT_REPO} | base64 -d)
export GIT_BRANCH=$(echo ${GIT_BRANCH}| base64 -d)
export COMMIT_ID=$(echo ${COMMIT_ID} | base64 -d)
echo ${GIT_REPO}
echo ${GIT_BRANCH}
echo ${COMMIT_ID}
git clone ${GIT_REPO} -b ${GIT_BRANCH}

提示没有权限,最后直接在 ecs 上进行初始化(已经通过宝塔创建了网站基础目录):

# 进入非空目录,假设是 /workdir/proj1
git clone --no-checkout https://git.oschina.net/NextApp/platform.git tmp
mv tmp/.git .   #将 tmp 目录下的 .git 目录移到当前目录
rmdir tmp
git reset --hard HEAD

手写同步脚本:

cd 网站目录
git pull

网站初始化#

  • composer global require laravel/installer
  • composer update
    这里出现错误 Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
    因为初始化 git 的时候,我把 config 目录移除了,单独 ftp 提交上去再 update 就好了
  • 访问网站。
    could not be opened in append mode: failed to open stream: Permission denied
    因为部署时用的 root 账户,手动把对应文件夹权限改成 www

成功#

使用阿里云-云效部署代码

参考资料:#

本作品采用《CC 协议》,转载必须注明作者和本文链接
秦晓武