diff --git a/.github/workflows/action.yaml b/.github/workflows/action.yaml new file mode 100644 index 000000000..51114f570 --- /dev/null +++ b/.github/workflows/action.yaml @@ -0,0 +1,133 @@ +name: Deploy my Lambda Function + +# trigger on all push events to main branch +on: + push: + branches: + - main + +jobs: + + lint: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install linting libraries + run: | + cd function + pip install flake8 + - name: Lint with flake8 + run: | + # Select identifies which errors should cause the job to fail + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # The exit zero flag will show errors as warnings and not fail the run + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + + build: + runs-on: ubuntu-latest + needs: lint + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install libraries + run: | + cd function + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt -t .; fi + - name: Create zip bundle + run: | + cd function + zip -r ../${{ github.sha }}.zip . + - name: Archive artifact + uses: actions/upload-artifact@v2 + with: + name: zipped-bundle + path: ${{ github.sha }}.zip + + upload: + runs-on: ubuntu-latest + needs: build + steps: + - name: Download artifact + uses: actions/download-artifact@v2 + with: + name: zipped-bundle + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: Upload to S3 + run: aws s3 cp ${{ github.sha }}.zip s3:///${{ github.repository }}/${{ github.sha }}.zip + + nonprod: + runs-on: ubuntu-latest + needs: upload + strategy: + matrix: + input: ["Hello", "Hi"] + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: Create test function + run: | + aws lambda create-function --function-name test-function-${{ matrix.input }} \ + --code S3Bucket=,S3Key=${{ github.repository }}/${{ github.sha }}.zip \ + --handler lambda_function.lambda_handler --runtime python3.8 \ + --role arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/ + - name: Invoke test function + run: | + aws lambda invoke --function-name test-function-${{ matrix.input }} \ + --payload $(echo "{\"input\": \"${{ matrix.input }}\"}" | base64) \ + --output json out + if grep -q "Error" out; then + exit1 + fi + - name: Destroy test function + if: ${{ always() }} + run: | + aws lambda delete-function --function-name test-function-${{ matrix.input }} + + deploy: + runs-on: ubuntu-latest + needs: upload + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: Update function code + run: | + aws lambda update-function-code \ + --function-name \ + --s3-bucket \ + --s3-key ${{ github.repository }}/${{ github.sha }}.zip \ + --publish + + docs: + runs-on: ubuntu-latest + needs: deploy + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Deploy docs + uses: mhausenblas/mkdocs-deploy-gh-pages@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CONFIG_FILE: mkdocs.yaml \ No newline at end of file diff --git a/docs/about.md b/docs/about.md new file mode 100644 index 000000000..72bd5a7b4 --- /dev/null +++ b/docs/about.md @@ -0,0 +1,17 @@ +# About Us + +## Consectetur adipiscing elit + +Praesent at augue ornare, posuere neque nec, pharetra velit. Etiam placerat nulla et nisl tincidunt commodo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec cursus, nibh ac porttitor mollis, purus erat tempor sapien, in commodo quam nisl ac metus. Morbi maximus elit ac hendrerit accumsan. Sed vestibulum diam ligula, non scelerisque nunc eleifend ut. Nulla vel libero leo. Vestibulum eleifend ultrices eros a imperdiet. Quisque fermentum eros a dolor tincidunt, at ullamcorper augue ullamcorper. Suspendisse quis odio felis. Phasellus viverra tellus quis ex tempor, in convallis est efficitur. Suspendisse dolor risus, vestibulum sed erat et, sodales scelerisque quam. Pellentesque maximus, lacus in lacinia gravida, nibh augue lacinia lorem, et placerat ipsum enim euismod dolor. Nam ut metus ut arcu tincidunt luctus efficitur id justo. + +Cras ipsum justo, tincidunt nec ultrices id, lobortis et arcu. Fusce tristique lobortis tortor sed dictum. Quisque maximus sagittis augue quis aliquam. Maecenas congue felis viverra nisi dictum commodo. Praesent nec libero at ligula mattis lobortis nec non ligula. Donec sollicitudin auctor odio et fringilla. Suspendisse semper odio id turpis tristique dapibus. + +## Integer malesuada malesuada + +Posuere Morbi mollis lectus vitae mi interdum, sed porttitor justo ultricies. Donec facilisis nunc lacus, quis convallis neque facilisis ullamcorper. Maecenas ligula metus, fermentum vel vehicula id, commodo mollis quam. Duis ac libero at tortor vestibulum lacinia. Cras congue lectus nec metus aliquam ornare. Suspendisse metus leo, egestas et pulvinar id, tempus eget massa. + +Donec ac eros urna. Praesent ac justo a eros convallis venenatis eget quis lorem. Vestibulum posuere ligula sed pellentesque rhoncus. Donec fringilla, quam eget efficitur accumsan, felis lacus ullamcorper magna, eu pretium nibh urna sed urna. In varius sodales nibh, quis malesuada mauris convallis sed. Nunc porta ligula a vehicula faucibus. Etiam sed vehicula nisl, nec convallis nibh. Morbi rhoncus dui ipsum, at dictum mi condimentum in. Nullam placerat dignissim augue ut ultricies. Nulla ultrices dui turpis, ut ornare nibh pretium sit amet. Aliquam dictum, arcu ac rutrum consectetur, velit eros pharetra metus, a fringilla eros ligula sit amet ipsum. Sed nec magna ut diam feugiat accumsan at ut nisl. Phasellus tellus enim, porta vitae luctus sed, tincidunt ullamcorper nulla. Nunc rutrum eros a venenatis ultrices. Nullam aliquet tincidunt libero a maximus. + +## Duis ac metus + +Ac nisl consequat pharetra. Nunc bibendum placerat suscipit. Phasellus non scelerisque magna. Cras blandit odio eu ligula consectetur, eu volutpat leo suscipit. Curabitur pretium ipsum in consectetur sodales. Aenean nulla dolor, dictum nec viverra sit amet, mattis vitae orci. Sed pretium nisi quis molestie tristique. Proin mattis ut purus at aliquet. Nunc ipsum urna, pellentesque eu enim sed, vehicula vehicula neque. Ut posuere rhoncus quam quis rutrum. Nunc tincidunt tellus ligula, ut feugiat ligula feugiat nec. Suspendisse ipsum dolor, hendrerit eget pharetra placerat, accumsan eget ex. Maecenas sed posuere arcu. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 000000000..5744f7687 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,21 @@ +# Welcome to the Microservice Docs + +## nav: + - Home: [index.md](./docs/index.md) + - About: [about.md](./docs/about.md) + +## Lorem ipsum dolor + +Sit amet, consectetur adipiscing elit. Aenean et nunc a lectus dictum luctus. In eu ipsum sollicitudin, mollis massa quis, gravida urna. Praesent vitae malesuada est. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean sagittis vestibulum metus vel efficitur. Fusce pulvinar, quam sed eleifend finibus, lorem risus lobortis felis, quis finibus enim ligula ac libero. Proin imperdiet odio dolor, quis mattis arcu commodo sit amet. Aliquam dignissim, turpis eget lacinia dignissim, elit lectus imperdiet urna, sed congue enim purus ac odio. Etiam dignissim sapien in justo laoreet, at euismod metus consequat. Nulla in sapien a leo aliquam vestibulum quis vel libero. Nam viverra dignissim sem vitae imperdiet. Nulla facilisi. Donec nec magna vel tortor suscipit sodales. Vestibulum pharetra, magna eu consequat porttitor, odio dui dictum odio, eget sollicitudin velit leo condimentum lorem. Duis sodales, est sit amet tempus volutpat, sapien dolor rutrum sapien, at mattis augue lorem sit amet velit. Maecenas vitae lacus vehicula, bibendum tortor quis, imperdiet risus. + +## Nunc rhoncus lectus + +ac urna interdum, vitae suscipit enim congue. Cras sagittis semper eleifend. Duis ut gravida neque. Donec rhoncus magna a metus dignissim, scelerisque cursus elit varius. Nullam sit amet tortor enim. Etiam finibus purus id accumsan finibus. Vestibulum venenatis neque et ligula tempor pharetra. Vestibulum molestie tellus et mi feugiat tempor. Donec vestibulum sapien eu facilisis commodo. Donec mollis consectetur rutrum. Morbi in semper nisl, in convallis ex. + +Aenean magna risus, aliquet vel ex nec, imperdiet sodales tellus. Mauris a pretium sem. Quisque lectus massa, vulputate id consequat et, scelerisque vitae diam. Sed erat neque, gravida et quam eget, sagittis pulvinar nisl. Praesent pulvinar hendrerit ante sed commodo. Morbi ut ipsum placerat, placerat nunc non, fringilla lacus. Integer dapibus facilisis mi, sodales facilisis purus rhoncus sit amet. + +## Praesent ut mi ut + +lorem finibus dignissim vel non massa. Nulla facilisi. Aliquam a dolor sit amet enim tristique condimentum ut eu turpis. Curabitur aliquam aliquet massa ut dignissim. Sed convallis at mi sit amet eleifend. Nullam ac est nisl. Morbi gravida purus non eleifend porttitor. Nulla viverra nunc ut orci porttitor imperdiet. Curabitur placerat sit amet odio congue tempor. + +Fusce sodales ipsum in volutpat sollicitudin. Nam leo odio, molestie vel elementum vel, feugiat id neque. Ut et nibh nulla. Proin luctus arcu sed massa tempor, vitae commodo nibh lacinia. Vivamus vel feugiat odio, eu tristique lacus. Aliquam in sapien scelerisque arcu blandit cursus eget at massa. Aenean mattis urna mi, in tempus libero gravida at. Vestibulum imperdiet sit amet ex ac pharetra. Nulla congue odio libero, quis cursus libero interdum at. Donec posuere tellus ut nibh ultricies, rutrum lobortis augue vehicula. Vestibulum fringilla iaculis ante, vitae finibus leo tincidunt in. Nam eget nulla quis nulla lobortis accumsan in quis dolor. \ No newline at end of file diff --git a/function/lambda_function.py b/function/lambda_function.py index 2809ce09b..d0b247f79 100644 --- a/function/lambda_function.py +++ b/function/lambda_function.py @@ -8,12 +8,16 @@ def lambda_handler(event, context): Returns: string: greeting response """ - print('Starting functions\n---------------------------------------------' + print('Starting functions\n---------------------------------------------') if event["input"] == "Hello": return "World" + if event["input"] == "Hi": + + return "Hi There" + else: raise \ No newline at end of file diff --git a/function/requirements.txt b/function/requirements.txt index 65a457e70..569d20bbe 100644 --- a/function/requirements.txt +++ b/function/requirements.txt @@ -1,2 +1,2 @@ -Github==1.55 +PyGithub==1.55 boto3==1.17.96 \ No newline at end of file diff --git a/mkdocs.yaml b/mkdocs.yaml new file mode 100644 index 000000000..c646d23ba --- /dev/null +++ b/mkdocs.yaml @@ -0,0 +1,5 @@ +site_name: My Docs +nav: + - Home: index.md + - About: about.md +theme: readthedocs \ No newline at end of file