Como o código-fonte do projeto está hospedado no github, a implantação é feita em um servidor remoto e implantada usando nginx.
No processo de implantação atual, quando uma atualização for necessária, alterne para a ramificação principal localmente, execute a operação de construção, obtenha o diretório dist criado, carregue-o em um diretório nginx do serviço remoto e reinicie o serviço nginx. Com base no exposto acima, use o GitHub Actions for CI/CD process.
Quando o código é enviado para o branch master, ou quando o master mescla pr separadamente, o pipeline é executado. O
arquivo do pipeline é armazenado na .github/workflows/deploy.yml
versão baseada em node16.x, instala o pnpm globalmente, instala as dependências do projeto e constrói.
Após a conclusão da compilação, use Actions ssh-scp-ssh-pipelines
https://github.com/marketplace/actions/ssh-scp-ssh-pipelines
Três chaves precisam ser configuradas para usar este plugue
DC_HOST
: host remoto ip
DC_PASS
: senha
DC_USER
: nome de usuário
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
name: ssh deploy
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js Build
uses: actions/setup-node@v3
with:
node-version: 16.16.0
cache: 'npm'
- run: npm i -g pnpm
- run: pnpm install
- run: pnpm run build
- run: ls -l
- name: scp ssh pipelines
uses: cross-the-world/ssh-scp-ssh-pipelines@latest
env:
LASTSSH: "Doing something after copying"
with:
host: ${
{
secrets.DC_HOST }}
user: ${
{
secrets.DC_USER }}
pass: ${
{
secrets.DC_PASS }}
scp: |
./dist/* => /usr/share/nginx/visual-editor/dist
last_ssh: |
echo $LASTSSH
nginx -t
nginx -s reload
O que precisa ser feito, configure as três chaves, verifique o caminho e reinicie o comando. depuração.
Diagrama esquemático da conclusão em execução