Skip to content

Initial update

Initial update #260

name: Feature branch build
on:
push:
branches-ignore:
- main
jobs:
deploy-app:
runs-on: self-hosted
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
KUBECONFIG_FILE: '${{ secrets.KUBECONFIG_PROD }}'
steps:
- id: install-aws-cli
uses: unfor19/install-aws-cli-action@v1
with:
version: 2 # default
verbose: false # default
arch: amd64 # allowed values: amd64, arm64
rootdir: "" # defaults to "PWD"
workdir: "" # defaults to "PWD/unfor19-awscli"
- name: Checkout
uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16'
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-2
role-duration-seconds: 1200
role-session-name: MySessionName
- name: Branch name
run: echo running on branch ${{ github.ref_name }}
- name: Export formatted git variables
id: vars
shell: bash
run: |
echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
echo "##[set-output name=branch_formatted;]$(echo ${GITHUB_REF#refs/heads/} | tr / -)"
- name: Print out variables
run: |
echo "Sha: ${{ steps.vars.outputs.sha_short }}"
echo "Branch formatted: ${{ steps.vars.outputs.branch_formatted }}"
- run: |
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
- run: 'mkdir ~/.kube && echo "$KUBECONFIG_FILE" > ~/.kube/config'
env:
KUBECONFIG_FILE: ${{secrets.KUBECONFIG_PROD}}
- run: sudo chown $(id -u):$(id -g) ~/.kube/config
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- run: npm install -g bun
- run: bun install
- run: bun lint
- run: bun build:prod
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
push: true
tags: alexbrown201/devnotnull-ui:${{ steps.vars.outputs.branch_formatted }}
- name: Create S3 bucket
run: aws s3api create-bucket --bucket devnotnull-ui-feat-${{ steps.vars.outputs.branch_formatted }} --region us-east-1 || true
- name: Copy S3 bucket assets
run: aws s3 cp ./build s3://devnotnull-ui-feat-${{ steps.vars.outputs.branch_formatted }} --recursive
- run: |
aws s3api delete-public-access-block --bucket devnotnull-ui-feat-${{ steps.vars.outputs.branch_formatted }}
- run: |
aws s3api put-bucket-policy --bucket devnotnull-ui-feat-${{ steps.vars.outputs.branch_formatted }} --policy '{ "Version": "2012-10-17", "Statement": { "Action": ["s3:GetObject", "s3:PutObject"], "Effect": "Allow", "Resource": "arn:aws:s3:::devnotnull-ui-feat-${{ steps.vars.outputs.branch_formatted }}/*", "Principal": "*" }}'
- run: |
aws s3api put-bucket-cors --bucket devnotnull-ui-feat-${{ steps.vars.outputs.branch_formatted }} --cors-configuration '{"CORSRules" : [{"AllowedHeaders":["*"],"AllowedMethods":["GET","HEAD", "POST"],"AllowedOrigins":["*"],"ExposeHeaders":[]}]}'
- run: helm repo add devnotnull https://devnotnull-helm.s3.eu-west-2.amazonaws.com
- run: helm repo update
- run: helm uninstall devnotnull-ui-${{ steps.vars.outputs.branch_formatted }}
continue-on-error: true
- run: |
helm install devnotnull-ui-${{ steps.vars.outputs.branch_formatted }} devnotnull/nodejs \
--version 2 \
--namespace default \
--set env.NODE_RUNTIME_ENV=development \
--set env.CDN_BUCKET=${{ steps.vars.outputs.branch_formatted }} \
--set image.repository=alexbrown201/devnotnull-ui:${{ steps.vars.outputs.branch_formatted }} \
--set port=3000 \
--set service.type=LoadBalancer \
--set image.pullPolicy=Always \
--set replicaCount=1