password
查看人数
type
status
date
slug
summary
category
icon
tags
作者
状态
配置ssh key
左侧菜单栏:CI/CD 变量,添加自己的变量名和变量值

运行脚本编写
总体思路和手动执行一样,先把代码打包,然后再通过ssh上传服务器,在执行启动命令。
添加两个任务分别为:build、deploy,也可以根据需要添加自己的任务。
build
这个build-job是一个在GitLab CI/CD(持续集成/持续部署)中定义的步骤,用于自动化Docker镜像的构建和打包过程。以下是各个部分的解释:
- image: docker:latest: 这行指定使用的Docker镜像为最新的docker镜像。这通常是基础镜像,用于构建其他镜像。
- stage: build: 这个阶段定义了这个job属于build阶段,即构建和测试代码阶段,不涉及部署。
- artifacts:: 这部分描述了构建过程中产生的可打包文件。
- untracked: false: 设置为false表示不会包含未跟踪的文件(即Git忽略的文件)。
- when: on_success: 如果这个job成功完成,才会生成artifacts。
- access: all: 所有GitLab用户都将能够访问这些artifacts。
- expire_in: 30 days: 这些artifacts将在30天后自动过期并从存储中删除。
- paths: - djangoapi.tar.gz: 指定要打包的文件,这里是名为djangoapi.tar.gz的tar.gz压缩包,包含了所有当前目录下的内容。
- script:: 这是执行的命令列表。在这个例子中,tar -czvf djangoapi.tar.gz * 命令会创建一个名为djangoapi.tar.gz的压缩包,包括当前目录下所有的文件和子目录。gitlab cicd可能是对GitLab CI/CD流程的引用,但没有具体的内容,可能需要根据实际项目配置来填充。
- deploy
这个deploy-job定义了一个在GitLab CI/CD中的部署步骤,它运行在deploy阶段。以下是各部分的解释:
- image: docker:latest: 使用的是最新的Docker镜像,这通常用于部署环境。
- stage: deploy: 这个job只在test阶段的两个job都成功完成后才会运行,实现连续部署策略。
- environment: production: 指定部署环境为生产环境。
- script:: 这里是执行的一系列命令:
- eval $(ssh-agent -s): 启动SSH代理服务,用于安全地管理私钥。
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null: 将私钥内容添加到SSH密钥代理中,这里假设SSH_PRIVATE_KEY是一个环境变量,且已清除回车符。
- mkdir -p ~/.ssh 和 chmod 700 ~/.ssh: 创建并设置~/.ssh目录的权限,保证私钥的安全。
- ssh-keyscan 114.72.41.114 >> ~/.ssh/known_hosts: 添加目标服务器的公钥到信任列表,防止首次连接时提示警告。
- scp XXX.tar.gz root@124.71.4.214:/app/XXX/: 使用SCP协议将XXX.tar.gz文件上传到远程服务器的/apps/XXX/目录。
- ssh -o StrictHostKeyChecking=no root@114.72.41.114 "需要执行的shell命令": 使用SSH登录远程服务器,并执行一个shell命令。这部分需要替换为实际的命令,以解压并部署打包后的应用。
- echo "Application successfully deployed.": 在部署成功后,输出一条消息确认部署完成。
完整代码示例
有关使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:躁静有徒
- 链接:https://blog.zaojingyoutu.top//article/f88d5efd-25fa-49c4-8da6-cce29f9f25f8
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章