Skip to content

fix : cloudformation syntax error #22

fix : cloudformation syntax error

fix : cloudformation syntax error #22

Workflow file for this run

name: Deploy to AWS
on:
push:
branches: [ "main" ]
permissions:
contents: write
jobs:
LoadManifest:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Load YAML and set environment variables
run: |
YAML_CONTENT=$(<manifest.yaml)
# Loop through each key-value pair in the YAML file
while IFS= read -r line; do
# Extract key and value from the line
KEY=$(echo "$line" | awk -F: '{print $1}')
VALUE=$(echo "$line" | awk -F: '{$1=""; print $0}' | xargs)
echo "$KEY=$VALUE" >> $GITHUB_ENV
done <<< "$(echo "$YAML_CONTENT" | sed '/^[[:space:]]*#/d')" # Ignore commented lines
Test:
runs-on: ubuntu-latest
needs: LoadManifest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python 3.11
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install pip-tools
pip install poetry
pip install pytest
python -m piptools compile \
-o requirements.txt \
pyproject.toml
pip install -r requirements.txt
- name: Run Tests
run: |
pytest
Build:
runs-on: ubuntu-latest
needs: Test
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Bump version and push tag
id: tag_version
uses: mathieudutour/github-tag-action@v6.1
with:
github_token: ${{ secrets.GH_TOKEN }}
- name: Create a GitHub release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.tag_version.outputs.new_tag }}
name: Release ${{ steps.tag_version.outputs.new_tag }}
body: ${{ steps.tag_version.outputs.changelog }}
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY}}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: 'us-east-1'
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: Load YAML and set environment variables
run: |
YAML_CONTENT=$(<manifest.yaml)
# Loop through each key-value pair in the YAML file
while IFS= read -r line; do
# Extract key and value from the line
KEY=$(echo "$line" | awk -F: '{print $1}')
VALUE=$(echo "$line" | awk -F: '{$1=""; print $0}' | xargs)
echo "$KEY=$VALUE" >> $GITHUB_ENV
done <<< "$(echo "$YAML_CONTENT" | sed '/^[[:space:]]*#/d')" # Ignore commented lines
- name: Package Lambda Function
run: |
pip install pip-tools
pip install poetry
pip install pytest
python -m piptools compile \
-o requirements.txt \
pyproject.toml
pip install -r requirements.txt -t src/
cd src/
zip -r ../lambda.zip .
- name: Create Artifact Bucket
run: |
aws s3api create-bucket --bucket ${{ env.ENVIRONMENT }}-${{ env.AWS_REGION }}-artifact-bucket
- name: Upload Artifact to S3
run: |
aws s3 cp ./lambda.zip s3://${{ env.ENVIRONMENT }}-${{ env.AWS_REGION }}-artifact-bucket/lambda.zip
Deploy:
runs-on: ubuntu-latest
needs: Build
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Load YAML and set environment variables
run: |
YAML_CONTENT=$(<manifest.yaml)
# Loop through each key-value pair in the YAML file
while IFS= read -r line; do
# Extract key and value from the line
KEY=$(echo "$line" | awk -F: '{print $1}')
VALUE=$(echo "$line" | awk -F: '{$1=""; print $0}' | xargs)
echo "$KEY=$VALUE" >> $GITHUB_ENV
done <<< "$(echo "$YAML_CONTENT" | sed '/^[[:space:]]*#/d')" # Ignore commented lines
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY}}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: 'us-east-1'
- name: Deploy CloudFormation Stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: ${{ env.ENVIRONMENT }}-${{ env.AWS_REGION }}-cloud-data-pipeline
template: aws/cloudformation.yaml
capabilities: CAPABILITY_NAMED_IAM
parameter-overrides: |
Environment= dev
AWSRegion= us-east-1
LambdaArtifactBucket=dev-us-east-1-artifacts-bucket
LambdaArtifactKey=lambda.zip