Implementing Continuous Integration and Continuous Deployment (CI/CD) is crucial for automating the process of building, testing, and deploying your applications. Below are simplified examples for setting up CI/CD pipelines for web services in C# (.NET Core), Java (Spring Boot), and Golang using GitHub Actions as the CI/CD platform. These examples assume your source code is hosted on GitHub.
C# (.NET Core) CI/CD with GitHub Actions:
Create a .github/workflows/dotnet.yml file in your project:
name: CI/CD for .NET Core
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Deploy to AWS Elastic Beanstalk
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_KEY }}
aws elasticbeanstalk create-application-version --application-name MyApp --version-label $GITHUB_SHA --source-bundle S3Bucket=my-s3-bucket,S3Key=$GITHUB_SHA.zip
aws elasticbeanstalk update-environment --environment-name MyEnvironment --version-label $GITHUB_SHA
env:
AWS_REGION: us-west-2In this example, you need to replace MyApp, MyEnvironment, my-s3-bucket, AWS_ACCESS_KEY, and AWS_SECRET_KEY with your specific values.
Java (Spring Boot) CI/CD with GitHub Actions:
Create a .github/workflows/java.yml file in your project:
name: CI/CD for Java
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Build with Maven
run: mvn clean install
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Deploy to AWS Elastic Beanstalk
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_KEY }}
aws elasticbeanstalk create-application-version --application-name MyApp --version-label $GITHUB_SHA --source-bundle S3Bucket=my-s3-bucket,S3Key=$GITHUB_SHA.zip
aws elasticbeanstalk update-environment --environment-name MyEnvironment --version-label $GITHUB_SHA
env:
AWS_REGION: us-west-2In this example, you need to replace MyApp, MyEnvironment, my-s3-bucket, AWS_ACCESS_KEY, and AWS_SECRET_KEY with your specific values.
Golang CI/CD with GitHub Actions:
Create a .github/workflows/go.yml file in your project:
name: CI/CD for Golang
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Build
run: go build
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Deploy to AWS Elastic Beanstalk
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_KEY }}
aws elasticbeanstalk create-application-version --application-name MyApp --version-label $GITHUB_SHA --source-bundle S3Bucket=my-s3-bucket,S3Key=$GITHUB_SHA.zip
aws elasticbeanstalk update-environment --environment-name MyEnvironment --version-label $GITHUB_SHA
env:
AWS_REGION: us-west-2
In this example, you need to replace MyApp, MyEnvironment, my-s3-bucket, AWS_ACCESS_KEY, and AWS_SECRET_KEY with your specific values.
These examples assume AWS Elastic Beanstalk as the deployment target, but you can modify the deployment step based on your chosen hosting provider or deployment target. Also, ensure that you set up the necessary secrets in your GitHub repository for sensitive information like AWS credentials. Adjustments may be needed based on your specific project structure and requirements.

