Initial update #261
This file contains hidden or 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: Feature branch build | |
| on: | |
| push: | |
| branches-ignore: | |
| - main | |
| jobs: | |
| deploy-app: | |
| runs-on: arc-runner-set | |
| 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 |