name: ci
on:
create: {}
pull_request:
branches: [main]
push:
branches: [main, ci-test]
env:
DOCKER_REPO: public.ecr.aws/cookpad/ecamo
jobs:
test:
name: test-webapp
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: actions-rs/cargo@v1
with:
command: build
- uses: actions-rs/cargo@v1
with:
command: test
test-fastlyce:
name: test-fastlyce
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: wasm32-wasi
override: true
- run: cargo build
working-directory: ./contrib/fastlyce
docker-build:
name: docker-build
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
role-skip-session-tagging: 'true'
if: "${{ github.event_name == 'push' || github.event_name == 'create' }}"
- name: Login to ECR Public
run: 'aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws'
if: "${{ github.event_name == 'push' || github.event_name == 'create' }}"
- uses: actions/checkout@master
- run: 'echo $GITHUB_SHA > REVISION'
- run: "docker pull ${DOCKER_REPO}:latest || :"
- name: "docker tag ${DOCKER_REPO}:${TAG} ${DOCKER_REPO}:latest"
run: |
TAG=$(basename "${{ github.ref }}")
docker pull ${DOCKER_REPO}:${TAG} || :
docker tag ${DOCKER_REPO}:${TAG} ${DOCKER_REPO}:latest || :
if: "${{ startsWith(github.ref, 'refs/tags/v') }}"
- run: "docker pull ${DOCKER_REPO}:builder || :"
- run: "docker build --pull --cache-from ${DOCKER_REPO}:builder --target builder -t ${DOCKER_REPO}:builder -f Dockerfile ."
- run: "docker build --pull --cache-from ${DOCKER_REPO}:builder --cache-from ${DOCKER_REPO}:latest -t ${DOCKER_REPO}:stage-${GITHUB_SHA} -f Dockerfile ."
- run: "docker push ${DOCKER_REPO}:stage-${GITHUB_SHA}"
if: "${{ github.event_name == 'push' || github.event_name == 'create' }}"
- run: "docker push ${DOCKER_REPO}:builder"
if: "${{ github.ref == 'refs/heads/main' }}"
docker-push:
name: docker-push
runs-on: ubuntu-latest
needs: [test, docker-build]
if: "${{ github.event_name == 'push' || github.event_name == 'create' }}"
permissions:
id-token: write
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
role-skip-session-tagging: 'true'
- name: Login to ECR Public
run: 'aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws'
- run: "docker pull ${DOCKER_REPO}:stage-${GITHUB_SHA}"
- run: |
docker tag ${DOCKER_REPO}:stage-${GITHUB_SHA} ${DOCKER_REPO}:${GITHUB_SHA}
docker push ${DOCKER_REPO}:${GITHUB_SHA}
- run: |
docker tag ${DOCKER_REPO}:stage-${GITHUB_SHA} ${DOCKER_REPO}:latest
docker push ${DOCKER_REPO}:latest
if: "${{ github.ref == 'refs/heads/main' }}"
- run: |
TAG=$(basename "${{ github.ref }}")
docker tag ${DOCKER_REPO}:stage-${GITHUB_SHA} ${DOCKER_REPO}:${TAG}
docker push ${DOCKER_REPO}:${TAG}
if: "${{ startsWith(github.ref, 'refs/tags/v') }}"