如何通过Github Actions将公共仓库中的静态网站部署到私有Web服务器

42次阅读
没有评论

问题描述

想要通过Github启动一个开源项目,项目中的主题(Markdown页面)可以由社区创建。通过PR将更改合并到主仓库,然后触发Github Actions工作流程。在这个工作流程中,Markdown输入将被处理为静态HTML页面,然后应该部署到一个Nginx Web服务器上。
目前(原型)的部署是通过SCP for GitHub Actions和SSH for GitHub Actions完成的。对于这两个操作,我必须在workflow.yml文件中提供用户名和密码。
为了使项目公开,我需要另一种方法,其他人无法获取凭据。
如何实现我的想法?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

通过使用Github Secrets,您可以实现您的想法。Github Secrets是一种将敏感信息存储在Github仓库中的方法,而不会将其暴露给其他人。以下是如何使用Github Secrets来部署静态网站的步骤:
1. 打开您的Github仓库。
2. 在仓库页面的右上角,点击”Settings”。
3. 在左侧导航栏中,点击”Secrets”。
4. 点击”New repository secret”按钮。
5. 在”Name”字段中,输入一个有意义的名称,例如”WEB_SERVER_USERNAME”。
6. 在”Value”字段中,输入您的Web服务器用户名。
7. 点击”Add secret”按钮。
8. 重复步骤4-7,为Web服务器的密码创建一个新的仓库秘密。
9. 在您的Github Actions工作流程文件中,使用这些仓库秘密来替代用户名和密码。
以下是一个示例workflow.yml文件的片段,展示了如何使用Github Secrets:

name: Deploy Website

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Build and deploy
      run: |
        # Build static HTML pages from markdown
        # Deploy to Nginx web server using SCP or SSH
        # Use ${{ secrets.WEB_SERVER_USERNAME }} and ${{ secrets.WEB_SERVER_PASSWORD }} for authentication

在上面的示例中,我们使用${{ secrets.WEB_SERVER_USERNAME }}${{ secrets.WEB_SERVER_PASSWORD }}来替代用户名和密码。这样,您的凭据将不会暴露在workflow.yml文件中,而是存储在Github Secrets中。
请注意,您需要根据您的实际情况修改workflow.yml文件中的其他部分,以便构建静态HTML页面并将其部署到Nginx Web服务器上。

方案2

使用外部部署系统可能需要更多的工作,但也是一种选择。
另一种方法是使用外部部署系统来处理静态网站的部署。这种方法可能需要更多的工作,但可以更好地保护您的凭据。以下是一个简单的步骤来使用外部部署系统来部署静态网站:
1. 选择一个适合您的需求的外部部署系统,例如Netlify、Vercel或AWS S3。
2. 创建一个帐户并设置您的静态网站项目。
3. 配置外部部署系统以从您的Github仓库获取更改并自动部署静态HTML页面。
4. 在外部部署系统中,设置您的Web服务器的用户名和密码,以便进行身份验证。
5. 将外部部署系统的URL配置为您的Nginx Web服务器的代理。
请注意,使用外部部署系统可能需要更多的配置和管理工作,但可以更好地保护您的凭据,并提供更多的功能和灵活性。

正文完