Github操作在部署之前替换字符串



我正在尝试开发一个Github Action,以便在上传到FTP服务器之前更新我(主要是(php文件中的版本号和DB凭据。

在我的主分支中,我有一个名为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,但这失败了。一切看起来都很好,但服务器没有变化。

您可以使用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

最新更新