Skip to content

Commit

Permalink
debug docker
Browse files Browse the repository at this point in the history
  • Loading branch information
alvicsam committed Oct 30, 2024
1 parent 369aa6e commit 9646e37
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 51 deletions.
125 changes: 83 additions & 42 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
name: CI

on:
# push:
# branches:
# - master
push:
branches:
- master
tags:
- v*
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

Expand All @@ -17,37 +19,53 @@ env:
CI_IMAGE: "paritytech/ci-unified:bullseye-1.81.0-2024-09-11-v202409111034"

jobs:
set-image:
# This workaround sets the container image for each job using 'set-image' job output.
set-variables:
# This workaround sets the container image for each job using 'set-variables' job output.
# env variables don't work for PR from forks, so we need to use outputs.
runs-on: ubuntu-latest
outputs:
CI_IMAGE: ${{ steps.set_image.outputs.CI_IMAGE }}
VERSION: ${{ steps.version.outputs.VERSION }}
steps:
- id: set_image
- name: Set image
id: set_image
run: echo "CI_IMAGE=${{ env.CI_IMAGE }}" >> $GITHUB_OUTPUT
- name: Define version
id: version
run: |
export COMMIT_SHA=${{ github.sha }}
export COMMIT_SHA_SHORT=${COMMIT_SHA:0:8}
export REF_NAME=${{ github.ref_name }}
export REF_SLUG=${REF_NAME//\//_}
if [[ ${REF_SLUG} == "master" ]]
then
echo "VERSION=${REF_SLUG}-${COMMIT_SHA_SHORT}" >> $GITHUB_OUTPUT
else
echo "VERSION=${REF_SLUG}" >> $GITHUB_OUTPUT
fi
echo "set VERSION=${VERSION}"
fmt:
name: Cargo fmt
runs-on: ubuntu-latest
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4

- name: Cargo fmt
run: cargo +nightly fmt --all -- --check

# todo: fixme
clippy:
name: Clippy
runs-on: ubuntu-latest
needs: [set-image]
# todo: fixme
needs: [set-variables]
continue-on-error: true
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -58,22 +76,23 @@ jobs:
spellcheck:
name: Spellcheck
runs-on: ubuntu-latest
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4

- name: Spellcheck
run: cargo spellcheck check --cfg=.config/spellcheck.toml --checkers hunspell -m 1 $(find . -type f -name '*.rs' ! -path "./target/*" ! -name 'codegen_runtime.rs' ! -name 'weights.rs')

# todo: fixme
check:
name: Check
runs-on: ubuntu-latest
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -90,9 +109,9 @@ jobs:
test:
name: Test
runs-on: parity-large
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -112,9 +131,9 @@ jobs:
deny:
name: Deny
runs-on: ubuntu-latest
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
# this job is allowed to fail, only licenses check is important
continue-on-error: true
steps:
Expand All @@ -129,9 +148,9 @@ jobs:
deny-licenses:
name: Deny License
runs-on: ubuntu-latest
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -142,9 +161,9 @@ jobs:
check-rustdocs:
name: Check Rustdocs
runs-on: ubuntu-latest
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -158,27 +177,12 @@ jobs:
- name: Check Rustdocs
run: cargo doc --no-deps --all --workspace --document-private-items

partial-repo-pallets-build-test:
name: Partial repo pallets build test
runs-on: ubuntu-latest
needs: [set-image]
# we may live with failing partial repo build, it is just a signal for us
continue-on-error: true
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4

- name: Partial repo pallets build test
run: ./scripts/verify-pallets-build.sh --no-revert

build:
name: Build
runs-on: parity-large
needs: [set-image]
needs: [set-variables]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
image: ${{ needs.set-variables.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -189,12 +193,49 @@ jobs:
cache-on-failure: true
cache-all-crates: true

- name: Build
- name: Build and pack artifact
run: |
cargo fetch
CARGO_NET_OFFLINE=true time cargo build --release --workspace
mkdir -p ./artifacts
strip ./target/release/substrate-relay
mv -v ./target/release/substrate-relay ./artifacts/
mv -v ./deployments/local-scripts/bridge-entrypoint.sh ./artifacts/
mv -v ./ci.Dockerfile ./artifacts/
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}-${{ github.sha }}
path: artifacts
retention-days: 1

build_docker:
name: Build docker image
runs-on: ubuntu-latest
needs: [set-variables]
env:
VERSION: ${{ needs.set-variables.outputs.VERSION }}
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: build-${{ github.sha }}

- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ./ci.Dockerfile
push: false
# build-args:
tags: |
docker.io/paritytech/substrate-relay:${{ env.VERSION }}
docker.io/paritytech/bridges-common-relay:${{ env.VERSION }}
#todo: collect artifacts
#build image substrate-relay
#build image bridges-common-relay
#build and push image substrate-relay
Expand Down
20 changes: 11 additions & 9 deletions ci.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ ENV RUST_BACKTRACE 1
ENV DEBIAN_FRONTEND=noninteractive

RUN set -eux; \
apt-get update && \
apt-get install -y --no-install-recommends \
curl ca-certificates libssl-dev && \
apt-get update && \
apt-get install -y --no-install-recommends \
curl ca-certificates libssl-dev && \
update-ca-certificates && \
groupadd -g 1000 user && \
useradd -u 1000 -g user -s /bin/sh -m user && \
# apt clean up
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
groupadd -g 1000 user && \
useradd -u 1000 -g user -s /bin/sh -m user && \
# apt clean up
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# switch to non-root user
USER user
Expand All @@ -29,6 +29,8 @@ ARG PROJECT=substrate-relay
COPY --chown=user:user ./${PROJECT} ./
COPY --chown=user:user ./bridge-entrypoint.sh ./

RUN echo ${PROJECT}}

# check if executable works in this container
RUN ./${PROJECT} --version

Expand Down

0 comments on commit 9646e37

Please sign in to comment.