CI/CD to AWS with GitHub Actions
Twitter bot with Kotlin in AWS (7 part series)
This article is part of the Twitter bot with Kotlin in AWS series showing how I created a Twitter bot for Vue 3 updates. But this article works as an independent article on how to automatically deploy to AWS from your GitHub repository.
Now let's wrap it up by setting up continuous build and deployment of our Kotlin Lambda function to AWS. This will make sure the Lambda function is always up to date with the code in the master branch, no need to manually deploy your changes.
AWS IAM User ​
First, we need an IAM user. If you already have one, you can use the existing Access key ID and Secret access secret key. Or you can just click the "Create access key" button and generate new tokens.
GitHub Actions ​
We need to add two secrets to the GitHub repository. Go to your repository, click the "Settings" tab, and then "Secrets" in the side menu. Add the secrets AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from the IAM user.
Luckily the GitHub Actions run on machines with a lot of software pre-installed, which includes the AWS CLI and Gradle.
Now head to "Actions" in the tab menu. Click "Set up this workflow" from any template. Add this yml code, which will set up Gradle, configure the AWS CLI, build the project, and update the function.
name: CI/CD
on:
push:
branches: [master]
jobs:
CI-CD:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Gradle setup
run: gradle wrapper
- name: Build & Deploy
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws configure set default.region eu-west-1
./gradlew build
aws lambda update-function-code --function-name twitter-bot-vue-3 --zip-file fileb://build/libs/twitter-bot-vue-3.jar
Wrap Up ​
That completes our series on how to create your own Twitter bot running in AWS. Check out the Twitter account @vue_3 for the completed product. Also, you can find all the code on GitHub.