Publish & CodeDeploy to Dev #37
Workflow file for this run
This file contains 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: Publish & CodeDeploy to Dev | |
on: | |
workflow_dispatch: | |
env: | |
DEFAULT_DEV_VERSION: v0.0.1 | |
jobs: | |
containers: | |
name: Build and push containers | |
runs-on: ubuntu-20.04 | |
environment: dev | |
outputs: | |
node-image-ref: ${{ steps.write-output.outputs.node-image-ref }} | |
node-release-cid: ${{ steps.write-output.outputs.node-release-cid }} | |
strategy: | |
matrix: | |
image-name: ["node"] | |
steps: | |
- name: Clear artifacts | |
uses: kolpav/purge-artifacts-action@v1 | |
continue-on-error: true | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
expire-in: 7days | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Build and push container | |
id: build-and-push | |
uses: ./.github/actions/build-push | |
with: | |
registry: disco-dev.forta.network | |
name: ${{ matrix.image-name }} | |
version: ${{ env.DEFAULT_DEV_VERSION }} | |
aws_access_key: ${{ secrets.DEV_RELEASE_AWS_ACCESS_KEY }} | |
aws_secret_key: ${{ secrets.DEV_RELEASE_AWS_SECRET_KEY }} | |
release_artifacts_bucket_name: dev-forta-releases | |
- name: Write output values | |
id: write-output | |
run: | | |
echo "::set-output name=${{ matrix.image-name }}-release-cid::${{ steps.build-and-push.outputs.release-cid }}" | |
echo "::set-output name=${{ matrix.image-name }}-image-ref::${{ steps.build-and-push.outputs.image-reference }}" | |
publish-hash: | |
name: Publish Hash to Contract | |
needs: containers | |
runs-on: ubuntu-latest | |
environment: dev | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Echo Hash | |
run: | | |
echo "release-cid=${{ needs.containers.outputs.node-release-cid }}" | |
- name: Publish Hash | |
run: | | |
./scripts/publish-release.sh ${{ needs.containers.outputs.node-release-cid }} ${{ secrets.DEV_PUBLISH_AUTOTASK_KEY }} ${{ secrets.DEV_PUBLISH_AUTOTASK_URL }} | |
build-deploy: | |
name: Build and deploy | |
needs: [containers] | |
runs-on: ubuntu-20.04 | |
environment: dev | |
steps: | |
- name: Echo Image References | |
run: | | |
echo "node=${{ needs.containers.outputs.node-image-ref }}" | |
- name: Clear artifacts | |
uses: kolpav/purge-artifacts-action@v1 | |
continue-on-error: true | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
expire-in: 7days | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.19 | |
- name: Create build for revision | |
run: | | |
./scripts/build.sh ${{ needs.containers.outputs.node-image-ref }} \ | |
'remote' ${{ needs.containers.outputs.node-release-cid }} ${{ github.sha }} ${{ env.DEFAULT_DEV_VERSION }} | |
chmod 755 forta | |
- name: Configure AWS credentials (build artifact -> S3) | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.DEV_RELEASE_AWS_ACCESS_KEY }} | |
aws-secret-access-key: ${{ secrets.DEV_RELEASE_AWS_SECRET_KEY }} | |
aws-region: us-east-1 | |
- name: Copy build to build artifacts bucket | |
env: | |
BUCKET_NAME: ${{ secrets.DEV_BUILD_ARTIFACTS_BUCKET_NAME }} | |
REVISION: ${{ github.sha }} | |
run: | | |
aws s3 cp forta "s3://$BUCKET_NAME/forta-$REVISION" | |
- name: Prepare Distribution | |
run: | | |
mkdir dist | |
cp forta dist/ | |
cp appspec.yml dist/ | |
cp -R scripts dist/ | |
- name: Zip Distribution | |
uses: vimtor/action-zip@v1 | |
with: | |
files: dist/ | |
dest: deploy.zip | |
- uses: actions/upload-artifact@v1 | |
with: | |
name: deploy-artifact | |
path: ${{ github.workspace }}/deploy.zip | |
- name: Configure AWS credentials (CodeDeploy) | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.DEV_DEPLOY_AWS_ACCESS_KEY }} | |
aws-secret-access-key: ${{ secrets.DEV_DEPLOY_AWS_SECRET_KEY }} | |
aws-region: us-east-1 | |
- name: AWS CodeDeploy | |
uses: sourcetoad/aws-codedeploy-action@v1 | |
with: | |
aws_access_key: ${{ secrets.DEV_DEPLOY_AWS_ACCESS_KEY }} | |
aws_secret_key: ${{ secrets.DEV_DEPLOY_AWS_SECRET_KEY }} | |
aws_region: us-east-1 | |
codedeploy_name: dev-forta-node | |
codedeploy_group: dev-forta-deploy-group | |
s3_bucket: dev-forta-codedeploy | |
s3_folder: dev | |
directory: ./dist/ |