【问题标题】:Github Actions Substitute String before DeployingGithub Actions 在部署前替换字符串
【发布时间】:2021-06-17 20:22:22
【问题描述】:

我正在尝试开发一个 Github Action 来更新我(主要是)php 文件中的版本号和数据库凭据,然后再上传到 FTP 服务器。

在我的主分支中,我有一个名为 VERSION.md 的文本文件,内容为 2.0.1

该操作应在每次推送提交时运行。

在部署到 FTP 服务器之前,这些替换是必需的(当然,真正的存储库文件不应该更改,只需要更改上传到服务器的文件)。

  • 对于每个文件,字符串__VERSION__ 应替换为我的VERSION.md 文件的内容。
  • 另外,仅对文件db_connection.php,字符串__DB-PASSWORD__应替换为对应的秘密DB_PASSWORD

这是我目前的工作流程:

on: push
name: FTP Deploy
jobs:
  web-deploy:
    name: Ubuntu VM
    runs-on: ubuntu-latest
    steps:
    - name: Getting latest Code
      uses: actions/checkout@v2.3.2
    
    # at this position I tried the string replacing

    - name: Sync Files
      uses: SamKirkland/FTP-Deploy-Action@4.0.0
      with:
        server: ${{ secrets.ftp_server }}
        username: ${{ secrets.ftp_username }}
        password: ${{ secrets.ftp_password }}
        server-dir: "public_html/"
        exclude: .git*
          - .git*/**
          - fonts/ttf/**
          - symbols/**
          - README.md
          - VERSION.md

作为第一次测试,我已经尝试过

- name: Set Tokens
      run: perl -pi -e 's/getString\(R\.string\.token\)/"$ENV{TOKEN}"/' 'index.php'
      env:
        TOKEN: ${{ secrets.TOKEN }}

仅为index.php 将字符串TOKEN 替换为存储在我的秘密中的令牌,但这失败了。一切看起来都不错,但服务器没有任何变化。

【问题讨论】:

  • 您的工作流程是什么样的,它是如何失败的?
  • 感谢您的回答,@BenjaminW。我已经改进了上面的问题,希望得到帮助或提示:)

标签: github yaml version github-actions building-github-actions


【解决方案1】:

您可以使用sed 来执行此操作

例如将 'foo' 替换为 'bar' - sed -i 's/foo/bar/g' input_file

- name: Replace credentials
  run: |
    find . -name "*" -exec sed -i "s/__VERSION__ /$(cat VERSION.md)/g" {} +
    sed -i 's/__DB-PASSWORD__/${{ secrets.DB_PASSWORD }}/g' db_connection.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2020-12-20
    • 2020-02-17
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多