mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-05-03 14:42:16 +00:00
feat: publish container images for interop-test binaries (#3383)
This patch adds a workflow that automatically publishes a docker image of our `ping` interop-test binaries on every release. Releases are different from Git tags. We publish a tag for each version of each crate but only a single release for each version of the `libp2p` crate. Alternatively, this workflow can also be triggered manually:  1. Select the Git ref you want to run the workflow on. This should be the version of `libp2p` you want to publish the test binary for. For example, if you want to publish a version of the test binary for a hotfix release of a sub-crate, you would pick the respective tag of the hotfix release. 2. Choose the tag of the docker image. To resolve https://github.com/libp2p/test-plans/issues/112, I am planning to create branches off current master that hardcodes the libp2p version in the test-binary to a particular one and then trigger this workflow for the respective branch.
This commit is contained in:
parent
14825c7ecb
commit
1c596af1cf
2
.github/workflows/interop-test.yml
vendored
2
.github/workflows/interop-test.yml
vendored
@ -26,7 +26,7 @@ jobs:
|
||||
- name: Build image
|
||||
run: |
|
||||
cargo build --release -p interop-tests
|
||||
docker build -t rust-libp2p-head --build-arg=TEST_BINARY=target/release/ping . -f ./interop-tests/Dockerfile
|
||||
docker build -t rust-libp2p-head --build-arg=TEST_BINARY=target/release/ping . -f interop-tests/Dockerfile
|
||||
docker image save -o ./interop-tests/ping-image.tar rust-libp2p-head
|
||||
- name: Upload ping versions info
|
||||
uses: actions/upload-artifact@v3
|
||||
|
53
.github/workflows/publish-interop-test-images.yml
vendored
Normal file
53
.github/workflows/publish-interop-test-images.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
name: Publish interop test docker images
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [ created ] # Publishing of a containers is triggered on _releases_. Releases are a GH concept building on top of tags.
|
||||
workflow_dispatch: # This workflow can also be triggered manually which is useful for testing, updates to test binaries or publishing of test binaries for older libp2p versions.
|
||||
inputs:
|
||||
dockerTag:
|
||||
description: 'Docker image tag'
|
||||
required: true
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
PING_TEST_IMAGE_NAME: ${{ github.repository }}/ping-interop-test
|
||||
|
||||
jobs:
|
||||
publish-interop-test-images:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # v1.0.7
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- uses: Swatinem/rust-cache@359a70e43a0bb8a13953b04a90f76428b4959bb6 # v2.2.0
|
||||
with:
|
||||
shared-key: interop-tests
|
||||
save-if: false
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build test binaries
|
||||
run: |
|
||||
sudo apt-get install protobuf-compiler
|
||||
cargo build --release -p interop-tests
|
||||
|
||||
- name: Build and push ping interop docker image
|
||||
run: |
|
||||
TAG="${{ env.REGISTRY }}/${{ env.PING_TEST_IMAGE_NAME }}:${{ inputs.dockerTag || github.event.release.tag_name }}"
|
||||
|
||||
docker build -t $TAG --build-arg=TEST_BINARY=target/release/ping . -f interop-tests/Dockerfile
|
||||
docker push $TAG
|
@ -1,5 +1,6 @@
|
||||
FROM ubuntu:22.04
|
||||
ARG TEST_BINARY
|
||||
COPY $TEST_BINARY /usr/local/bin/testplan
|
||||
LABEL org.opencontainers.image.source https://github.com/libp2p/rust-libp2p
|
||||
ENV RUST_BACKTRACE=1
|
||||
ENTRYPOINT ["testplan"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user