Skip to content

[Dispatch] Release #304

[Dispatch] Release

[Dispatch] Release #304

name: "[Dispatch] Release"
on:
workflow_dispatch:
inputs:
version:
description: 'enter version(x.y.z)'
required: true
default: '2.0.0'
container_arch:
type: choice
description: 'choose container architecture'
default: linux/amd64
options:
- "linux/amd64"
- "linux/amd64,linux/arm64"
env:
ARCH: ${{ github.event.inputs.container_arch }}
VERSION: ${{ github.event.inputs.version }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
jobs:
mirinae:
runs-on: ubuntu-latest
steps:
- name: Invoke mirinae release workflow
id: mirinae
uses: convictional/[email protected]
with:
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
github_token: ${{ secrets.PAT_TOKEN }}
workflow_file_name: dispatch_mirinae_release.yaml
wait_workflow: true
propagate_failure: true
wait_interval: 5
ref: ${{ github.ref_name }}
storybook:
runs-on: ubuntu-latest
needs: mirinae
steps:
- name: Invoke storybook release workflow
uses: convictional/[email protected]
with:
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
github_token: ${{ secrets.PAT_TOKEN }}
workflow_file_name: dispatch_storybook_release.yaml
wait_workflow: false
propagate_failure: false
ref: ${{ github.ref_name }}
versioning_and_docker:
runs-on: ubuntu-latest
needs: mirinae
outputs:
new_commit_sha: ${{ steps.get_sha.outputs.NEW_COMMIT_SHA }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
token: ${{ secrets.PAT_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Restore cached node_modules
id: restore-node-cache
uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.OS }}-node-modules-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-modules-
- name: Install dependencies
if: steps.restore-node-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Change version
run: |
converted_version=$(echo ${{ env.VERSION }} | sed -E 's/^([0-9]+\.[0-9]+)\.([a-zA-Z]+)/\1.0-\2/')
npm version $converted_version --no-git-tag-version --allow-same-version --no-commit-hooks --include-workspace-root -w=web
echo "converted_version=$converted_version" >> "$GITHUB_OUTPUT"
- name: Configure git
run: |
git config --global user.email "${{ vars.GIT_EMAIL }}"
git config --global user.name "${{ vars.GIT_USERNAME }}"
- name: Check if there are any changes
id: check_changes
run: |
git diff --exit-code --quiet || echo "::set-output name=changed::true"
continue-on-error: true
- name: Commit changes and Set current commit SHA to output
if: steps.check_changes.outputs.changed == 'true'
id: get_sha
run: |
git commit -am "chore: version ${{ env.VERSION }}"
echo "NEW_COMMIT_SHA=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Push changes
if: steps.check_changes.outputs.changed == 'true'
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.PAT_TOKEN }}
branch: ${{ github.ref }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.CLOUDFORET_DEV_DOCKER_USERNAME }}
password: ${{ secrets.CLOUDFORET_DEV_DOCKER_PASSWORD }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Login to Amazon ECR
run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${{ secrets.ECR_REPO }}
- name: Build and push to dockerhub
uses: docker/build-push-action@v4
env:
BUILDKIT_COLORS: 1
with:
context: .
file: ./apps/web/Dockerfile
platforms: ${{ env.ARCH }}
push: true
cache-from: ${{ vars.DOCKER_REPO_OWNER }}/${{ github.event.repository.name }}:latest
cache-to: type=inline
tags: |
${{ vars.DOCKER_REPO_OWNER }}/${{ github.event.repository.name }}:latest
${{ vars.DOCKER_REPO_OWNER }}/${{ github.event.repository.name }}:${{ env.VERSION }}
${{ secrets.ECR_REPO }}/${{ github.event.repository.name }}:latest
${{ secrets.ECR_REPO }}/${{ github.event.repository.name }}:${{ env.VERSION }}
provenance: false
- name: Notice when job fails
if: failure()
uses: 8398a7/[email protected]
with:
status: ${{job.status}}
fields: repo,workflow,job
author_name: Github Action Slack
tagging:
needs: versioning_and_docker
runs-on: ubuntu-latest
env:
NEW_COMMIT_SHA: ${{ needs.versioning_and_docker.outputs.new_commit_sha }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ env.NEW_COMMIT_SHA }}
- name: Configure git
run: |
git config --global user.email "${{ vars.GIT_EMAIL }}"
git config --global user.name "${{ vars.GIT_USERNAME }}"
- name: Git tagging
run: |
git tag ${{ env.VERSION }}
git push origin ${{ env.VERSION }}
- name: Notice when job fails
if: failure()
uses: 8398a7/[email protected]
with:
status: ${{job.status}}
fields: repo,workflow,job
author_name: Github Action Slack
notification:
needs: tagging
runs-on: ubuntu-latest
steps:
- name: Slack
if: always()
uses: 8398a7/[email protected]
with:
status: ${{job.status}}
fields: repo,message,commit,author,action,ref,workflow,job
author_name: Github Action Slack