Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
name: 'Run Docker' |
|
description: 'Run a docker image for Protobuf CI testing' |
|
inputs: |
|
image: |
|
required: true |
|
description: "The docker image to use" |
|
type: string |
|
command: |
|
required: true |
|
description: "A raw docker command to run" |
|
type: string |
|
run-flags: |
|
required: false |
|
description: "Additional flags to pass to docker run" |
|
type: string |
|
|
|
# WARNING: loading from cache appears to be slower than pull! |
|
docker-cache: |
|
required: false |
|
description: "Enabled caching of pulled docker images." |
|
|
|
runs: |
|
using: 'composite' |
|
steps: |
|
- name: Authenticate for GAR use |
|
shell: bash |
|
run: gcloud auth configure-docker -q us-docker.pkg.dev |
|
|
|
- name: Setup QEMU for possible emulation |
|
uses: docker/setup-qemu-action@e81a89b1732b9c48d79cd809d8d81d79c4647a18 # v2.1.0 |
|
|
|
- name: Check docker cache |
|
if: ${{ inputs.docker-cache }} |
|
id: check-docker-cache |
|
uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920 # v3.2.4 |
|
with: |
|
path: ci/docker/ |
|
key: ${{ inputs.image }} |
|
|
|
- name: Pull and store if cache miss |
|
shell: bash |
|
if: ${{ inputs.docker-cache && steps.check-docker-cache.outputs.cache-hit != 'true' }} |
|
run: > |
|
time docker pull -q ${{ inputs.image }} && |
|
mkdir -p ci/docker/$(dirname ${{ inputs.image }}) && |
|
time docker image save ${{ inputs.image }} --output ./ci/docker/${{ inputs.image }}.tar |
|
|
|
- name: Use the cached image on cache hit |
|
shell: bash |
|
if: ${{ inputs.docker-cache && steps.check-docker-cache.outputs.cache-hit == 'true' }} |
|
run: time docker image load --input ./ci/docker/${{ inputs.image }}.tar |
|
|
|
- name: Pull fresh docker image |
|
shell: bash |
|
if: ${{ !inputs.docker-cache }} |
|
run: time docker pull -q ${{ inputs.image }} |
|
|
|
- name: Run docker |
|
shell: bash |
|
run: > |
|
time docker run ${{ inputs.run-flags}} -v${{ github.workspace }}:/workspace |
|
${{ inputs.image }} ${{ inputs.command }}
|
|
|