Skip to content

Commit

Permalink
Merge pull request #161 from internxt/ci-IN-31-github-actions
Browse files Browse the repository at this point in the history
[IN-31] ci: add needed actions
  • Loading branch information
sg-gs authored Mar 19, 2024
2 parents 083dd09 + f152a4f commit 4a97bb7
Show file tree
Hide file tree
Showing 5 changed files with 227 additions and 0 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/build-and-publish-preview.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Build & Publish Stable Preview
on:
push:
branches: ["master"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Out Repo
uses: actions/checkout@v2
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build and push to ${{ github.event.repository.name }}-dev
uses: docker/build-push-action@v2
with:
context: ./
file: ./infrastructure/preview.Dockerfile
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}-dev:${{ github.sha }}
dispatch_update_preview_image:
needs: build
runs-on: ubuntu-latest
steps:
- name: Dispatch Update Preview Image Command
uses: myrotvorets/trigger-repository-dispatch-action@1.0.0
with:
token: ${{ secrets.PAT }}
repo: internxt/environments
type: update-preview-image-command
payload: |
{
"image": {
"name": "${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}",
"newName": "${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}-dev",
"newTag": "${{ github.sha }}"
}
}
27 changes: 27 additions & 0 deletions .github/workflows/clean-up-pr-preview.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Clean Up PR Preview
on:
pull_request:
types: [closed]
jobs:
dispatch_cleanup_deployment:
runs-on: ubuntu-latest
steps:
- name: Dispatch Cleanup Preview Repository Command
uses: myrotvorets/trigger-repository-dispatch-action@1.0.0
with:
token: ${{ secrets.PAT }}
repo: internxt/environments
type: cleanup-preview-command
payload: |
{
"github": {
"payload": {
"repository": {
"name": "${{ github.event.repository.name }}"
},
"issue": {
"number": ${{ github.event.number }}
}
}
}
}
105 changes: 105 additions & 0 deletions .github/workflows/deploy-pr-preview.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Deploy PR Preview
on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Out Repo
uses: actions/checkout@v2
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build and push to ${{ github.event.repository.name }}-dev
uses: docker/build-push-action@v2
with:
context: ./
file: ./infrastructure/preview.Dockerfile
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}-dev:preview-${{ github.event.number }}-${{ github.event.pull_request.head.sha }}
add_ready_for_preview_label:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: |
ready-for-preview
dispatch_update_deployment:
needs: add_ready_for_preview_label
runs-on: ubuntu-latest
if: ${{ contains(github.event.pull_request.labels.*.name, 'deployed') }}
steps:
- name: Dispatch Update Preview Repository Command
uses: myrotvorets/trigger-repository-dispatch-action@1.0.0
with:
token: ${{ secrets.PAT }}
repo: internxt/environments
type: update-preview-command
payload: |
{
"github": {
"payload": {
"repository": {
"name": "${{ github.event.repository.name }}",
"full_name": "${{ github.event.repository.full_name }}"
},
"issue": {
"number": ${{ github.event.number }},
"labels": ${{ toJSON(github.event.pull_request.labels) }}
}
}
},
"slash_command": {
"args": {
"named": {
"deployment": "${{ github.event.repository.name }}",
"tag": "preview-${{ github.event.number }}-${{ github.event.pull_request.head.sha }}",
"imageSuffix": "-dev"
}
}
}
}
dispatch_check_deployment:
needs: add_ready_for_preview_label
runs-on: ubuntu-latest
if: ${{ contains(github.event.pull_request.labels.*.name, 'preview') }}
steps:
- name: Dispatch Check Preview Repository Command
uses: myrotvorets/trigger-repository-dispatch-action@1.0.0
with:
token: ${{ secrets.PAT }}
repo: internxt/environments
type: check-preview-command
payload: |
{
"github": {
"payload": {
"repository": {
"name": "${{ github.event.repository.name }}",
"full_name": "${{ github.event.repository.full_name }}",
"html_url": "${{ github.event.repository.html_url }}"
},
"issue": {
"number": ${{ github.event.number }},
"labels": ${{ toJSON(github.event.pull_request.labels) }},
"pull_request": {
"html_url": "${{ github.event.pull_request.html_url }}"
}
}
}
},
"slash_command": {
"args": {
"named": {
"notify": "true"
}
}
}
}
30 changes: 30 additions & 0 deletions .github/workflows/slash-command-dispatcher.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Slash Command Dispatch
on:
issue_comment:
types: [created]
jobs:
slash_command_dispatch:
runs-on: ubuntu-latest
if: ${{ contains(github.event.issue.labels.*.name, 'deployed') || contains(github.event.issue.labels.*.name, 'preview') }}
steps:
- name: Slash Command Dispatch
id: scd
uses: peter-evans/slash-command-dispatch@v4
with:
token: ${{ secrets.PAT }}
commands: update-preview,check-preview
permission: write
repository: internxt/environments
issue-type: pull-request
allow-edits: false
reactions: false
- name: Edit comment with error message
if: steps.scd.outputs.error-message
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ github.event.comment.id }}
body: |
> [!CAUTION]
> Couldn't dispatch your command due to error:
> **${{ steps.scd.outputs.error-message }}**
23 changes: 23 additions & 0 deletions infrastructure/preview.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM node:16.14.2-slim

# Create a non-root user
RUN groupadd -r myuser && useradd -r -g myuser myuser -d /app

# Create package cache
RUN apt update && apt upgrade -y && apt autoremove -y \
&& apt install -y --no-install-recommends curl build-essential python3 git \
&& apt clean

# Create the application directory and set permissions
RUN mkdir -p /app && chown -R myuser:myuser /app

USER myuser

WORKDIR /app

COPY --chown=myuser:myuser . ./

# Install dependencies
RUN yarn --ignore-engines && yarn cache clean

CMD yarn dev

0 comments on commit 4a97bb7

Please sign in to comment.