| # Copyright 2021 SkyWater PDK Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| # SPDX-License-Identifier: Apache 2.0 |
| |
| name: Build Docker Image for Run DRC for cell GDS (using Magic) Action |
| |
| on: |
| workflow_dispatch: |
| push: |
| pull_request_target: |
| |
| |
| permissions: |
| contents: read |
| |
| |
| jobs: |
| |
| # FIXME: Remove once GitHub Container Registry is working. |
| # docker.pkg.github.com doesn't support buildx built packages, use |
| # docker/build-push-action instead. |
| build-github-package: |
| name: "Building Docker GitHub Package." |
| |
| runs-on: ubuntu-latest |
| |
| permissions: |
| packages: write # ${{ github.event_name == "push" || github.event_name == "workflow_dispatch" }} |
| |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@v2 |
| with: |
| # Always clone the full depth so git-describe works. |
| fetch-depth: 0 |
| submodules: true |
| |
| - name: Set Action Name |
| run: echo "ACTION_NAME=run-drc-for-cell-gds-using-magic" >> $GITHUB_ENV |
| |
| - name: Build container image |
| uses: docker/build-push-action@v1 |
| with: |
| registry: docker.pkg.github.com |
| username: ${{ github.repository_owner }} |
| password: ${{ github.token }} |
| repository: ${{ github.repository }}/${{ env.ACTION_NAME }} |
| path: ${{ env.ACTION_NAME }} |
| tag_with_ref: true |
| tag_with_sha: true |
| add_git_labels: true |
| push: ${{ startsWith(github.ref, 'refs/heads/') }} |
| |
| |
| build-docker-image: |
| name: "Building image." |
| |
| runs-on: ubuntu-latest |
| |
| # Run a local registry |
| services: |
| registry: |
| image: registry:2 |
| ports: |
| - 5000:5000 |
| |
| steps: |
| |
| - name: Dump context |
| uses: crazy-max/ghaction-dump-context@v1 |
| |
| - name: Checkout code |
| uses: actions/checkout@v2 |
| with: |
| # Always clone the full depth so git-describe works. |
| fetch-depth: 0 |
| submodules: true |
| |
| - name: Set Action Name |
| run: echo "ACTION_NAME=run-drc-for-cell-gds-using-magic" >> $GITHUB_ENV |
| |
| - name: Detect Push To Config |
| id: push_to |
| shell: python |
| env: |
| HAS_GCR_JSON_KEY: ${{ !!(secrets.GCR_JSON_KEY) }} |
| run: | |
| import os |
| gh_event = os.environ['GITHUB_EVENT_NAME'] |
| |
| i = [] |
| print("Adding local service.") |
| i.append("localhost:5000/${{ env.ACTION_NAME }}") |
| |
| if "${{ env.HAS_GCR_JSON_KEY }}": |
| print("Adding Google Container Repository (gcr.io)") |
| i.append("gcr.io/skywater-pdk/actions/${{ env.ACTION_NAME }}") |
| |
| #print("Adding GitHub Container Repository (ghcr.io)") |
| #i.append("ghcr.io/${{ github.repository }}/${{ env.ACTION_NAME }}") |
| |
| l = ",".join(i) |
| print("Final locations:", repr(l)) |
| print("::set-output name=images::{}".format(l)) |
| |
| - name: Docker meta |
| id: docker_meta |
| uses: docker/metadata-action@v3 |
| with: |
| images: ${{ steps.push_to.outputs.images }} |
| tags: | |
| type=ref,event=tag |
| type=ref,event=pr |
| type=ref,event=branch |
| type=sha |
| type=sha,format=long |
| |
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@v1 |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v1 |
| with: |
| driver-opts: network=host |
| |
| - name: Login to Google Container Registry |
| if: ${{ contains(steps.push_to.outputs.images, 'gcr.io') }} |
| uses: docker/login-action@v1 |
| with: |
| registry: gcr.io |
| username: _json_key |
| password: ${{ secrets.GCR_JSON_KEY }} |
| |
| - name: Login to GitHub Container Registry |
| if: ${{ contains(steps.push_to.outputs.images, 'ghcr.io') }} |
| uses: docker/login-action@v1 |
| with: |
| username: ${{ github.repository_owner }} |
| password: ${{ github.token }} |
| registry: ghcr.io |
| |
| - name: Build and push |
| uses: docker/build-push-action@v2 |
| id: docker_build |
| with: |
| context: ${{ env.ACTION_NAME }} |
| file: ${{ env.ACTION_NAME }}/Dockerfile |
| push: true |
| tags: | |
| ${{ steps.docker_meta.outputs.tags }} |
| localhost:5000/${{ env.ACTION_NAME }}:latest |
| labels: ${{ steps.docker_meta.outputs.labels }} |
| |
| - name: Inspect |
| run: docker buildx imagetools inspect localhost:5000/${{ env.ACTION_NAME }}:latest |
| |
| - name: Image digest |
| run: echo ${{ steps.docker_build.outputs.digest }} |