Skip to content

Commit 905feca

Browse files
committed
Move typesense
1 parent de5c156 commit 905feca

3 files changed

Lines changed: 85 additions & 123 deletions

File tree

Lines changed: 66 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
name: Build Search Index
2-
2+
permissions:
3+
packages: write
4+
contents: write
35
on:
46
schedule:
57
# Run once a day
68
- cron: '10 0 * * *'
79
workflow_dispatch:
10+
inputs:
11+
noop:
12+
description: 'noop'
13+
required: false
14+
default: 'noop'
815

916
jobs:
1017
build:
@@ -59,83 +66,70 @@ jobs:
5966
docker run -i --env-file typesense-scraper-updated.env -e "CONFIG=$(cat typesense-scraper-config.json | jq -r tostring)" typesense/docsearch-scraper
6067
curl 'http://172.17.0.2:8108/keys' -X POST -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" -H 'Content-Type: application/json' -d '{"value": "N4N8bF0XwyvzwCGwm3CKB0QcnwyWtygo","description": "Search only","actions": ["documents:search"],"collections":["*"]}'
6168
62-
- name: repository name fix
63-
run: echo "image_repository_name=reference-search" >> $GITHUB_ENV
69+
- name: repository name fix and env
70+
run: |
71+
echo "letsencrypt_email=${{ secrets.LETSENCRYPT_EMAIL }}" >> $GITHUB_ENV
72+
echo "TAG_NAME=latest" >> $GITHUB_ENV
73+
if [ "${{ github.event.release.tag_name }}" != "" ]; then
74+
echo "TAG_NAME=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
75+
fi;
76+
if [ "${{ github.event.inputs.version }}" != "" ]; then
77+
echo "TAG_NAME=${{ github.event.inputs.version }}" >> $GITHUB_ENV
78+
fi;
79+
echo "image_repository_name=servicestack/reference-search" >> $GITHUB_ENV
80+
echo "domain=search.reference.servicestack.net" >> $GITHUB_ENV
81+
echo "letsencrypt_email=${{ secrets.LETSENCRYPT_EMAIL }}" >> $GITHUB_ENV
82+
echo "app_name=servicestack-reference-search" >> $GITHUB_ENV
83+
echo "typesense_api_key=${{ secrets.TYPESENSE_API_KEY }}" >> $GITHUB_ENV
6484
65-
- name: Configure AWS credentials
66-
uses: aws-actions/configure-aws-credentials@v1
85+
- name: Write .env file
86+
run: |
87+
echo "HOST_DOMAIN=${{ env.domain }}" > .env
88+
echo "LETSENCRYPT_EMAIL=${{ env.letsencrypt_email }}" >> .env
89+
echo "TYPESENSE_API_KEY=${{ env.typesense_api_key }}" >> .env
90+
cp search-server/typesense-server/docker-compose.yml ./
91+
92+
- name: Login to GitHub Container Registry
93+
uses: docker/login-action@v2
6794
with:
68-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
69-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
70-
aws-region: ${{ secrets.AWS_REGION }}
71-
72-
- name: Login to Amazon ECR
73-
id: login_ecr
74-
uses: aws-actions/amazon-ecr-login@v1
75-
76-
- name: Build and push to ECR
77-
id: push_image_to_ecr
78-
uses: docker/build-push-action@v2.2.2
95+
registry: ghcr.io
96+
username: ${{ github.actor }}
97+
password: ${{ secrets.GITHUB_TOKEN }}
98+
99+
- name: Build and push Docker images
100+
uses: docker/build-push-action@v3
101+
if: ${{ github.event.inputs.version == '' || github.event.inputs.version == 'latest' }}
79102
with:
80103
file: ./typesense-data/Dockerfile
81104
context: ./typesense-data/
82105
push: true
83-
tags: ${{ steps.login_ecr.outputs.registry }}/${{ env.image_repository_name }}:latest
84-
85-
deploy_ecs:
86-
needs: build
87-
runs-on: ubuntu-20.04
88-
steps:
89-
- name: checkout
90-
uses: actions/checkout@v2
91-
92-
- name: Configure AWS credentials
93-
uses: aws-actions/configure-aws-credentials@v1
106+
tags: ghcr.io/${{ env.image_repository_name }}:${{ env.TAG_NAME }}
107+
108+
# Copy only the docker-compose.yml to remote server home folder
109+
- name: copy compose file via scp
110+
uses: appleboy/scp-action@v0.1.3
94111
with:
95-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
96-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
97-
aws-region: ${{ secrets.AWS_REGION }}
98-
99-
- name: Login to Amazon ECR
100-
id: login_ecr
101-
uses: aws-actions/amazon-ecr-login@v1
102-
103-
- name: Repository name fix and env values setup
104-
run: |
105-
echo "image_repository_name=reference-search" >> $GITHUB_ENV
106-
echo "domain=search.reference.servicestack.net" >> $GITHUB_ENV
107-
echo "letsencrypt_email=${{ secrets.LETSENCRYPT_EMAIL }}" >> $GITHUB_ENV
108-
echo "app_name=servicestack-reference-search" >> $GITHUB_ENV
109-
echo "cluster_name=default" >> $GITHUB_ENV
110-
echo "image_url=${{ steps.login_ecr.outputs.registry }}/reference-search:latest" >> $GITHUB_ENV
111-
echo "aws_region=${{ secrets.AWS_REGION }}" >> $GITHUB_ENV
112-
echo "typesense_api_key=${{ secrets.TYPESENSE_API_KEY }}" >> $GITHUB_ENV
113-
114-
- name: Populate task definition template
115-
uses: danielr1996/envsubst-action@1.0.0
112+
host: 52.201.116.245
113+
username: ${{ secrets.DEPLOY_USERNAME }}
114+
port: 22
115+
key: ${{ secrets.DEPLOY_KEY }}
116+
source: "docker-compose.yml,.env"
117+
target: "~/.deploy/reference-typesense"
118+
119+
# Deploy Docker image with ServiceStack application using `docker compose up` remotely
120+
- name: remote docker-compose up via ssh
121+
uses: appleboy/ssh-action@v0.1.5
116122
env:
117-
RELEASE_VERSION: latest
118-
APP_NAME: ${{ env.app_name }}
119-
IMAGE_URL: ${{ env.image_url }}
120-
HOST_DOMAIN: ${{ env.domain }}
121-
TYPESENSE_API_KEY: ${{ env.typesense_api_key }}
122-
LETSENCRYPT_EMAIL: ${{ env.letsencrypt_email }}
123-
AWS_REGION: ${{ env.aws_region }}
124-
CLUSTER_NAME: ${{ env.cluster_name }}
125-
with:
126-
input: search-server/typesense-server/typesense-task-def.json
127-
output: task-definition.json
128-
129-
- name: Create task definition if doesn't exist
130-
run: aws ecs describe-task-definition --task-definition ${{ env.app_name }} || aws ecs register-task-definition --cli-input-json file://task-definition.json
131-
132-
- name: Create ECS Service if not exists.
133-
run: aws ecs describe-services --cluster ${{ env.cluster_name }} --services ${{ env.app_name }} | jq '.services[0]' -e || aws ecs create-service --cluster ${{ env.cluster_name }} --service-name ${{ env.app_name }} --task-definition ${{ env.app_name }} --desired-count 1
134-
135-
- name: Deploy new revision of the task definition
136-
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
123+
APPTOKEN: ${{ secrets.GITHUB_TOKEN }}
124+
USERNAME: ${{ secrets.DEPLOY_USERNAME }}
137125
with:
138-
task-definition: task-definition.json
139-
service: ${{ env.app_name }}
140-
cluster: ${{ env.cluster_name }}
141-
force-new-deployment: true
126+
host: 52.201.116.245
127+
username: ${{ secrets.DEPLOY_USERNAME }}
128+
key: ${{ secrets.DEPLOY_KEY }}
129+
port: 22
130+
envs: APPTOKEN,USERNAME
131+
script: |
132+
echo $APPTOKEN | docker login ghcr.io -u $USERNAME --password-stdin
133+
cd ~/.deploy/reference-typesense
134+
docker-compose pull
135+
docker-compose up -d
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: '3.9'
2+
services:
3+
servicestack-reference-search:
4+
image: ghcr.io/servicestack/referece-search:latest
5+
network_mode: bridge
6+
ports:
7+
- "8108"
8+
environment:
9+
VIRTUAL_HOST: "${HOST_DOMAIN}"
10+
LETSENCRYPT_HOST: "${HOST_DOMAIN}"
11+
LETSENCRYPT_EMAIL: "${LETSENCRYPT_EMAIL}"
12+
TYPESENSE_API_KEY: "${TYPESENSE_API_KEY}"
13+
command:
14+
- "--data-dir"
15+
- "/data"
16+
- "--api-key"
17+
- "${TYPESENSE_API_KEY}"
18+
- "--enable-cors"
19+

search-server/typesense-server/typesense-task-def.json

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)