diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy-manually.yml similarity index 60% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy-manually.yml index a813ef5..c87cfa1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy-manually.yml @@ -2,30 +2,40 @@ name: Deploy on: push: branches: - - alpha - - beta - main + workflow_dispatch: + inputs: + environment: + description: 'Deployment environment' + required: true + type: choice + options: + - dev + - stg + - prd jobs: extract_environment: runs-on: ubuntu-latest outputs: environment: ${{ steps.extract_environment.outputs.environment }} + env: + EVENT: ${{ github.event_name }} + DEPLOY_ENV: ${{ github.event.inputs.environment }} steps: - name: Extract Environment run: | - if [ ${GITHUB_REF} == "refs/heads/main" ]; then + if [ ${EVENT} == "workflow_dispatch" ]; then + echo "##[set-output name=environment;]$(echo ${DEPLOY_ENV})" + elif [ ${GITHUB_REF} == "refs/heads/main" ]; then echo "##[set-output name=environment;]$(echo "prd")" - elif [ ${GITHUB_REF} == "refs/heads/alpha" ]; then - echo "##[set-output name=environment;]$(echo "dev")" - elif [ ${GITHUB_REF} == "refs/heads/beta" ]; then - echo "##[set-output name=environment;]$(echo "stg")" fi id: extract_environment semantic_release: runs-on: ubuntu-latest outputs: + #new_release_published: ${{ steps.semantic.outputs.last_release_version != steps.semantic.outputs.new_release_version }} new_release_published: ${{ steps.semantic.outputs.new_release_published }} new_release_version: ${{ steps.semantic.outputs.new_release_version }} steps: @@ -41,77 +51,51 @@ jobs: conventional-changelog-eslint branches: | [ - 'main', - { - name: 'alpha', - prerelease: true - }, - { - name: 'beta', - prerelease: true - } + 'main' ] env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} deploy: + if: needs.semantic_release.outputs.new_release_published == 'true' needs: [extract_environment, semantic_release] - runs-on: [self-hosted, "${{ needs.extract_environment.outputs.environment }}"] + runs-on: + [self-hosted, '${{ needs.extract_environment.outputs.environment }}'] steps: - name: Checkout uses: actions/checkout@v2 - name: Update Pip - if: needs.semantic_release.outputs.new_release_published == 'true' run: | python3 -m pip install --upgrade pip - name: Install Docker Compose - if: needs.semantic_release.outputs.new_release_published == 'true' run: | python3 -m pip install docker-compose --upgrade - name: Install AWS CLI - if: needs.semantic_release.outputs.new_release_published == 'true' run: | python3 -m pip install awscli --upgrade - name: Install AWS Elastic Beanstalk CLI - if: needs.semantic_release.outputs.new_release_published == 'true' run: | python3 -m pip install awsebcli --upgrade - name: Configure AWS Region - if: needs.semantic_release.outputs.new_release_published == 'true' uses: aws-actions/configure-aws-credentials@v1 id: aws with: aws-region: us-east-1 - - name: Extract Environment - if: needs.semantic_release.outputs.new_release_published == 'true' - shell: bash - run: | - if [ ${GITHUB_REF} == "refs/heads/main" ]; then - echo "##[set-output name=result;]$(echo "prd")" - elif [ ${GITHUB_REF} == "refs/heads/alpha" ]; then - echo "##[set-output name=result;]$(echo "dev")" - elif [ ${GITHUB_REF} == "refs/heads/beta" ]; then - echo "##[set-output name=result;]$(echo "stg")" - fi - id: extract_environment - - name: Login to AWS ECR - if: needs.semantic_release.outputs.new_release_published == 'true' id: login_ecr uses: aws-actions/amazon-ecr-login@v1 - name: Build, Tag, and Push Image to AWS ECR - if: needs.semantic_release.outputs.new_release_published == 'true' env: - ENV: ${{ steps.extract_environment.outputs.result }} + ENV: ${{ needs.extract_environment.outputs.environment }} IMAGE_TAG: ${{ needs.semantic_release.outputs.new_release_version }} ACCOUNT_ID: ${{ steps.aws.outputs.aws-account-id }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} @@ -120,9 +104,8 @@ jobs: docker-compose -f build.docker-compose.yml push - name: Create ZIP file to Deploy AWS Beanstalk - if: needs.semantic_release.outputs.new_release_published == 'true' env: - ENV: ${{ steps.extract_environment.outputs.result }} + ENV: ${{ needs.extract_environment.outputs.environment }} IMAGE_TAG: ${{ needs.semantic_release.outputs.new_release_version }} ACCOUNT_ID: ${{ steps.aws.outputs.aws-account-id }} run: | @@ -132,11 +115,10 @@ jobs: zip deploy.zip docker-compose.yml -r .ebextensions - name: Deploy AWS Beanstalk - if: needs.semantic_release.outputs.new_release_published == 'true' env: - ENV: ${{ steps.extract_environment.outputs.result }} + ENV: ${{ needs.extract_environment.outputs.environment }} AWS_REGION: us-east-1 - APP_NAME: maestro + APP_NAME: ${{ github.event.repository.name }} run: | eb use $APP_NAME-$ENV echo -e "deploy:\n artifact: deploy.zip" >> .elasticbeanstalk/config.yml