Skip to content

Publish & CodeDeploy to Dev #39

Publish & CodeDeploy to Dev

Publish & CodeDeploy to Dev #39

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/