Skip to content

Commit

Permalink
fix deploy on push instead of deleting it
Browse files Browse the repository at this point in the history
  • Loading branch information
Bilelkihal committed Jan 17, 2025
1 parent 37d4010 commit dde6565
Showing 1 changed file with 31 additions and 39 deletions.
70 changes: 31 additions & 39 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
# Workflow to deploy OntoPortal UI to stage/prod systems
#
# Required github secrets:
#
# CONFIG_REPO - github repo containing config and customizations for UI. Format 'author/private_config_repo'
# it is used for getting capistrano deployment configuration for stages on the github actions runner and
# PRIVATE_CONFIG_REPO env var is constructed from it which is used by capistrano on the UI hosts for pulling configs.
#
# GH_PAT - github Personal Access Token for accessing private config repo
#
# SSH_JUMPHOST - ssh jump/proxy host though which deployments have to though if UI nodes live on private network.
# SSH_JUMPHOST_USER - username to use to connect to the ssh jump/proxy.
#
# DEPLOY_ENC_KEY - key for decrypting deploymnet ssh key residing in config/
# this SSH key is used for accessing jump host, UI nodes, and private github repo.

name: Capistrano Deployment

# Controls when the action will run.
on:
push:
Expand All @@ -26,67 +11,74 @@ on:
inputs:
BRANCH:
description: "Branch/tag to deploy"
options:
- stage
- test
- master
default: stage
required: true
environment:
description: "target environment to deploy to"
description: "Target environment to deploy to"
type: choice
options:
- staging
- agroportal
- test
default: stage
default: staging

jobs:
deploy:
runs-on: ubuntu-latest
env:
BUNDLE_WITHOUT: default #install gems required primarely for deployment in order to speed up workflow
BUNDLE_WITHOUT: default # Install gems required primarily for deployment to speed up workflow
PRIVATE_CONFIG_REPO: ${{ format('[email protected]:{0}.git', secrets.CONFIG_REPO) }}

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: set branch/tag and environment to deploy from inputs
- name: Set branch/tag and environment to deploy from inputs
run: |
# workflow_dispatch default input doesn't get set on push so we need to set defaults
# via shell parameter expansion
# https://dev.to/mrmike/github-action-handling-input-default-value-5f2g
USER_INPUT_BRANCH=${{ inputs.branch }}
echo "BRANCH=${USER_INPUT_BRANCH:github.head_ref:-master}" >> $GITHUB_ENV
# Set default branch/tag for push events
BRANCH=${{ github.head_ref || 'master' }}
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
USER_INPUT_ENVIRONMENT=${{ inputs.environment }}
echo "TARGET=${USER_INPUT_ENVIRONMENT:-staging}" >> $GITHUB_ENV
# Set default environment for push events
if [ "${{ github.event_name }}" = "push" ]; then
TARGET="staging" # Default to staging for push
else
TARGET=${{ inputs.environment }}
fi
echo "TARGET=$TARGET" >> $GITHUB_ENV
CONFIG_REPO=${{ secrets.CONFIG_REPO }}
GH_PAT=${{ secrets.GH_PAT }}
echo "PRIVATE_CONFIG_REPO=https://${GH_PAT}@github.com/${CONFIG_REPO}" >> $GITHUB_ENV
echo "SSH_JUMPHOST=${{ secrets.SSH_JUMPHOST }}" >> $GITHUB_ENV
echo "SSH_JUMPHOST_USER=${{ secrets.SSH_JUMPHOST_USER }}" >> $GITHUB_ENV
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3

- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7.6 # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: get-deployment-config
bundler-cache: true # Runs 'bundle install' and caches installed gems automatically

- name: Get deployment config
uses: actions/checkout@v3
with:
repository: ${{ secrets.CONFIG_REPO }} # repository containing deployment settings
repository: ${{ secrets.CONFIG_REPO }} # Repository containing deployment settings
token: ${{ secrets.GH_PAT }} # `GH_PAT` is a secret that contains your PAT
path: deploy_config
- name: copy-deployment-config
run: cp -r deploy_config/ontoportal_web_ui/${{ inputs.environment }}/* .
# add ssh hostkey so that capistrano doesn't complain

- name: Copy deployment config
run: cp -r deploy_config/ontoportal_web_ui/${{ env.TARGET }}/* .

# Add SSH host key so that Capistrano doesn't complain
- name: Add jumphost's hostkey to Known Hosts
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_JUMPHOST }}"
ssh-keyscan -H ${{ secrets.SSH_JUMPHOST }} > ~/.ssh/known_hosts
shell: bash

- uses: miloserdow/capistrano-deploy@master
with:
target: ${{ env.TARGET }} # which environment to deploy
deploy_key: ${{ secrets.DEPLOY_ENC_KEY }} # Name of the variable configured in Settings/Secrets of your github project
target: ${{ env.TARGET }} # Which environment to deploy
deploy_key: ${{ secrets.DEPLOY_ENC_KEY }} # Name of the variable configured in Settings/Secrets of your GitHub project

0 comments on commit dde6565

Please sign in to comment.