Continuous Delivery #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Delivery | |
on: | |
workflow_dispatch: | |
# push: | |
# branches: | |
# - main | |
jobs: | |
Continuous-Delivery: | |
runs-on: ubuntu-latest | |
env: | |
SSH_HOST: ${{ secrets.DEPLOYMENT_HOST }} | |
SSH_USER: ${{ secrets.DEPLOYMENT_USER }} | |
SSH_KEY: ${{ secrets.DEPLOYMENT_KEY }} | |
SSH_PATH: ${{ secrets.DEPLOYMENT_PATH }} | |
steps: | |
- name: Configure SSH | |
run: | | |
mkdir -p ~/.ssh/ | |
cat >>~/.ssh/config <<END | |
Host staging | |
HostName $SSH_HOST | |
User $SSH_USER | |
IdentityFile ~/.ssh/staging.key | |
StrictHostKeyChecking no | |
END | |
echo "$SSH_KEY" > ~/.ssh/staging.key | |
chmod 600 ~/.ssh/staging.key | |
- name: Check out | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
cache: 'yarn' | |
- name: Install production dependencies into node_modules.new | |
run: | | |
yarn install --frozen-lockfile --production | |
mv node_modules node_modules.new | |
- name: Install dependencies | |
run: yarn --frozen-lockfile | |
- name: Build | |
run: yarn build | |
- name: Stop and delete service | |
run: ssh staging '$SSH_PATH/stop-service.sh && rm -rf $SSH_PATH/node_modules && rm -rf $SSH_PATH/dist' | |
- name: Copy dist to target host | |
run: | | |
scp -r ./node_modules.new/ staging:$SSH_PATH/node_modules | |
scp -r ./dist staging:$SSH_PATH | |
- name: Start service | |
run: ssh staging '$SSH_PATH/start-service.sh' |