• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2#  Copyright (c) 2020, The OpenThread Authors.
3#  All rights reserved.
4#
5#  Redistribution and use in source and binary forms, with or without
6#  modification, are permitted provided that the following conditions are met:
7#  1. Redistributions of source code must retain the above copyright
8#     notice, this list of conditions and the following disclaimer.
9#  2. Redistributions in binary form must reproduce the above copyright
10#     notice, this list of conditions and the following disclaimer in the
11#     documentation and/or other materials provided with the distribution.
12#  3. Neither the name of the copyright holder nor the
13#     names of its contributors may be used to endorse or promote products
14#     derived from this software without specific prior written permission.
15#
16#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26#  POSSIBILITY OF SUCH DAMAGE.
27#
28
29name: Docker
30
31on: [push, pull_request]
32
33jobs:
34
35  cancel-previous-runs:
36    runs-on: ubuntu-20.04
37    steps:
38    - uses: rokroskar/workflow-run-cleanup-action@master
39      env:
40        GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
41      if: "github.ref != 'refs/heads/main'"
42
43  buildx:
44    name: buildx-${{ matrix.docker_name }}
45    runs-on: ubuntu-20.04
46    strategy:
47      fail-fast: false
48      matrix:
49        include:
50          - docker_name: environment
51    steps:
52    - uses: actions/checkout@v2
53      with:
54        submodules: true
55
56    - name: Prepare
57      id: prepare
58      run: |
59        DOCKER_IMAGE=openthread/${{ matrix.docker_name }}
60        DOCKER_FILE=etc/docker/${{ matrix.docker_name }}/Dockerfile
61        DOCKER_PLATFORMS=linux/amd64
62        VERSION=latest
63
64        TAGS="--tag ${DOCKER_IMAGE}:${VERSION}"
65
66        echo ::set-output name=docker_image::${DOCKER_IMAGE}
67        echo ::set-output name=version::${VERSION}
68        echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \
69          --build-arg OT_GIT_REF=${{ github.sha }} \
70          --build-arg VERSION=${VERSION} \
71          --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
72          --build-arg VCS_REF=${GITHUB_SHA::8} \
73          ${TAGS} --file ${DOCKER_FILE} .
74
75    - name: Set up Docker Buildx
76      uses: docker/setup-buildx-action@v1
77
78    - name: Docker Buildx (build)
79      run: |
80        docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
81
82    - name: Login to DockerHub
83      if: success() && github.repository == 'openthread/openthread' && github.event_name != 'pull_request'
84      uses: docker/login-action@v1
85      with:
86        username: ${{ secrets.DOCKER_USERNAME }}
87        password: ${{ secrets.DOCKER_PASSWORD }}
88
89    - name: Docker Buildx (push)
90      if: success() && github.repository == 'openthread/openthread' && github.event_name != 'pull_request'
91      run: |
92        docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
93
94    - name: Inspect Image
95      if: always() && github.repository == 'openthread/openthread' && github.event_name != 'pull_request'
96      run: |
97        docker buildx imagetools inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
98