forked from github/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1,163 changed files
with
12,008 additions
and
6,502 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
148 changes: 148 additions & 0 deletions
148
...s/de-DE/content/actions/guides/deploying-to-amazon-elastic-container-service.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
--- | ||
title: Deploying to Amazon Elastic Container Service | ||
intro: You can deploy to Amazon Elastic Container Service (ECS) as part of your continuous deployment (CD) workflows. | ||
product: '{% data reusables.gated-features.actions %}' | ||
versions: | ||
free-pro-team: '*' | ||
enterprise-server: '>=2.22' | ||
--- | ||
|
||
{% data reusables.actions.enterprise-beta %} | ||
{% data reusables.actions.enterprise-github-hosted-runners %} | ||
|
||
### Einführung | ||
|
||
This guide explains how to use {% data variables.product.prodname_actions %} to build a containerized application, push it to [Amazon Elastic Container Registry (ECR)](https://aws.amazon.com/ecr/), and deploy it to [Amazon Elastic Container Service (ECS)](https://aws.amazon.com/ecs/). | ||
|
||
On every new release in your {% data variables.product.company_short %} repository, the {% data variables.product.prodname_actions %} workflow builds and pushes a new container image to Amazon ECR, and then deploys a new task definition to Amazon ECS. | ||
|
||
### Vorrausetzungen | ||
|
||
Before creating your {% data variables.product.prodname_actions %} workflow, you will first need to complete the following setup steps for Amazon ECR and ECS: | ||
|
||
1. Create an Amazon ECR repository to store your images. | ||
|
||
For example, using [the AWS CLI](https://aws.amazon.com/cli/): | ||
|
||
{% raw %}```bash{:copy} | ||
aws ecr create-repository \ --repository-name MY_ECR_REPOSITORY \ --region MY_AWS_REGION | ||
```{% endraw %} | ||
Ensure that you use the same Amazon ECR repository name (represented here by `MY_ECR_REPOSITORY`) for the `ECR_REPOSITORY` variable in the workflow below. | ||
Ensure that you use the same AWS region value for the `AWS_REGION` (represented here by `MY_AWS_REGION`) variable in the workflow below. | ||
2. Create an Amazon ECS task definition, cluster, and service. | ||
For details, follow the [Getting started wizard on the Amazon ECS console](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun), or the [Getting started guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html) in the Amazon ECS documentation. | ||
Ensure that you note the names you set for the Amazon ECS service and cluster, and use them for the `ECS_SERVICE` and `ECS_CLUSTER` variables in the workflow below. | ||
3. Store your Amazon ECS task definition as a JSON file in your {% data variables.product.company_short %} repository. | ||
The format of the file should be the same as the output generated by: | ||
{% raw %}```bash{:copy} | ||
aws ecs register-task-definition --generate-cli-skeleton | ||
```{% endraw %} | ||
Ensure that you set the `ECS_TASK_DEFINITION` variable in the workflow below as the path to the JSON file. | ||
Ensure that you set the `CONTAINER_NAME` variable in the workflow below as the container name in the `containerDefinitions` section of the task definition. | ||
4. Create {% data variables.product.prodname_actions %} secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` to store the values for your Amazon IAM access key. | ||
For more information on creating secrets for {% data variables.product.prodname_actions %}, see "[Encrypted secrets](/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository)." | ||
See the documentation for each action used below for the recommended IAM policies for the IAM user, and methods for handling the access key credentials. | ||
### Creating the workflow | ||
Once you've completed the prerequisites, you can proceed with creating the workflow. | ||
The following example workflow demonstrates how to build a container image and push it to Amazon ECR. It then updates the task definition with the new image ID, and deploys the task definition to Amazon ECS. | ||
Ensure that you provide your own values for all the variables in the `env` key of the workflow. | ||
{% raw %} | ||
```yaml{:copy} | ||
name: Deploy to Amazon ECS | ||
on: | ||
release: | ||
types: [ created ] | ||
env: | ||
AWS_REGION: MY_AWS_REGION # set this to your preferred AWS region, e.g. us-west-1 | ||
ECR_REPOSITORY: MY_ECR_REPOSITORY # set this to your Amazon ECR repository name | ||
ECS_SERVICE: MY_ECS_SERVICE # set this to your Amazon ECS service name | ||
ECS_CLUSTER: MY_ECS_CLUSTER # set this to your Amazon ECS cluster name | ||
ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION # set this to the path to your Amazon ECS task definition | ||
# file, e.g. .aws/task-definition.json | ||
CONTAINER_NAME: MY_CONTAINER_NAME # set this to the name of the container in the | ||
# containerDefinitions section of your task definition | ||
defaults: | ||
run: | ||
shell: bash | ||
jobs: | ||
deploy: | ||
name: Deploy | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
- 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: $AWS_REGION | ||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v1 | ||
- name: Build, tag, and push image to Amazon ECR | ||
id: build-image | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
IMAGE_TAG: ${{ github.sha }} | ||
run: | | ||
# Build a docker container and | ||
# push it to ECR so that it can | ||
# be deployed to ECS. | ||
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . | ||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | ||
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_ENV | ||
- name: Fill in the new image ID in the Amazon ECS task definition | ||
id: task-def | ||
uses: aws-actions/amazon-ecs-render-task-definition@v1 | ||
with: | ||
task-definition: $ECS_TASK_DEFINITION | ||
container-name: $CONTAINER_NAME | ||
image: ${{ steps.build-image.outputs.image }} | ||
- name: Deploy Amazon ECS task definition | ||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1 | ||
with: | ||
task-definition: ${{ steps.task-def.outputs.task-definition }} | ||
service: $ECS_SERVICE | ||
cluster: $ECS_CLUSTER | ||
wait-for-service-stability: true | ||
``` | ||
{% endraw %} | ||
|
||
### Additional resources | ||
|
||
For more information on the services used in these examples, see the following documentation: | ||
|
||
* "[Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)" in the Amazon AWS documentation. | ||
* Official AWS "[Configure AWS Credentials](https://github.com/aws-actions/configure-aws-credentials)" action. | ||
* Official AWS [Amazon ECR "Login"](https://github.com/aws-actions/amazon-ecr-login) action. | ||
* Official AWS [Amazon ECS "Render Task Definition"](https://github.com/aws-actions/amazon-ecs-render-task-definition) action. | ||
* Official AWS [Amazon ECS "Deploy Task Definition"](https://github.com/aws-actions/amazon-ecs-deploy-task-definition) action. |
Oops, something went wrong.