publish.yml 11.7 KiB
Newer Older
# This file is part of .gitlab-ci.yml
# Here are all jobs that are executed during "publish" stage

publish-rustdoc:
  stage: publish
  extends: .kubernetes-env
  variables:
    CI_IMAGE: node:18
    GIT_DEPTH: 100
    RUSTDOCS_DEPLOY_REFS: "master"
  rules:
    - if: $CI_PIPELINE_SOURCE == "pipeline"
      when: never
    - if: $CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_REF_NAME == "master"
    - if: $CI_COMMIT_REF_NAME == "master"
  needs:
    - job: build-rustdoc
      artifacts: true
    - job: build-implementers-guide
      artifacts: true
  script:
    # If $CI_COMMIT_REF_NAME doesn't match one of $RUSTDOCS_DEPLOY_REFS space-separated values, we
    # exit immediately.
    # Putting spaces at the front and back to ensure we are not matching just any substring, but the
    # whole space-separated value.
    # setup ssh
    - eval $(ssh-agent)
    - ssh-add - <<< ${GITHUB_SSH_PRIV_KEY}
    - mkdir ~/.ssh && touch ~/.ssh/known_hosts
    - ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
    # Set git config
    - git config user.email "[email protected]"
    - git config user.name "${GITHUB_USER}"
    - git config remote.origin.url "[email protected]:/paritytech/${CI_PROJECT_NAME}.git"
    - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
    - git fetch origin gh-pages
    # Save README and docs
    - cp -r ./crate-docs/ /tmp/doc/
    - cp -r ./artifacts/book/ /tmp/
    - cp README.md /tmp/doc/
    # we don't need to commit changes because we copy docs to /tmp
    - git checkout gh-pages --force
    # Enable if docs needed for other refs
    # Install `index-tpl-crud` and generate index.html based on RUSTDOCS_DEPLOY_REFS
    # - which index-tpl-crud &> /dev/null || yarn global add @substrate/index-tpl-crud
    # - index-tpl-crud upsert ./index.html ${CI_COMMIT_REF_NAME}
    # Ensure the destination dir doesn't exist.
    - rm -rf ${CI_COMMIT_REF_NAME}
    - mv -f /tmp/doc ${CI_COMMIT_REF_NAME}
    # dir for implementors guide
    - mkdir -p book
    - mv /tmp/book/html/* book/
    # Upload files
    - git add --all
    # `git commit` has an exit code of > 0 if there is nothing to commit.
    # This causes GitLab to exit immediately and marks this job failed.
    # We don't want to mark the entire job failed if there's nothing to
    # publish though, hence the `|| true`.
    - git commit -m "___Updated docs for ${CI_COMMIT_REF_NAME}___" ||
      echo "___Nothing to commit___"
    - git push origin gh-pages --force
  after_script:
    - rm -rf .git/ ./*

# cumulus

.build-push-image:
  image: $BUILDAH_IMAGE
  variables:
    DOCKERFILE: "" # docker/path-to.Dockerfile
    IMAGE_NAME: "" # docker.io/paritypr/image_name
  script:
    # Exit if the job is not running in a merge queue
    # - if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi
    - $BUILDAH_COMMAND build
      --format=docker
      --build-arg VCS_REF="${CI_COMMIT_SHA}"
      --build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
      --build-arg IMAGE_NAME="${IMAGE_NAME}"
      --tag "$IMAGE_NAME:${DOCKER_IMAGES_VERSION}"
      --file ${DOCKERFILE} .
    - echo "$PARITYPR_PASS" |
      buildah login --username "$PARITYPR_USER" --password-stdin docker.io
    - $BUILDAH_COMMAND info
    - $BUILDAH_COMMAND push --format=v2s2 "$IMAGE_NAME:${DOCKER_IMAGES_VERSION}"
  after_script:
    - buildah logout --all

build-push-image-polkadot-parachain-debug:
  stage: publish
  extends:
    - .kubernetes-env
    - .common-refs
    - .build-push-image
  needs:
    - job: build-linux-stable-cumulus
      artifacts: true
  variables:
    DOCKERFILE: "docker/dockerfiles/polkadot-parachain/polkadot-parachain-debug_unsigned_injected.Dockerfile"
    IMAGE_NAME: "docker.io/paritypr/polkadot-parachain-debug"

build-push-image-test-parachain:
  stage: publish
  extends:
    - .kubernetes-env
    - .common-refs
    - .build-push-image
  needs:
    - job: build-test-parachain
      artifacts: true
  variables:
    DOCKERFILE: "docker/dockerfiles/test-parachain_injected.Dockerfile"
    IMAGE_NAME: "docker.io/paritypr/test-parachain"
# publish-s3:
#   stage: publish
#   extends:
#     - .kubernetes-env
#     - .publish-refs
#   image: paritytech/awscli:latest
#   needs:
#     - job: build-linux-stable-cumulus
#       artifacts: true
#   variables:
#     GIT_STRATEGY: none
#     BUCKET: "releases.parity.io"
#     PREFIX: "cumulus/${ARCH}-${DOCKER_OS}"
#   script:
#     - echo "___Publishing a binary with debug assertions!___"
#     - echo "___VERSION = $(cat ./artifacts/VERSION) ___"
#     - aws s3 sync ./artifacts/ s3://${BUCKET}/${PREFIX}/$(cat ./artifacts/VERSION)/
#     - echo "___Updating objects in latest path___"
#     - aws s3 sync s3://${BUCKET}/${PREFIX}/$(cat ./artifacts/VERSION)/ s3://${BUCKET}/${PREFIX}/latest/
#   after_script:
#     - aws s3 ls s3://${BUCKET}/${PREFIX}/latest/
#       --recursive --human-readable --summarize

# publish-benchmarks-assets-s3: &publish-benchmarks
#   stage: publish
#   extends:
#     - .kubernetes-env
#     - .benchmarks-refs
#   image: paritytech/awscli:latest
#   needs:
#     - job: benchmarks-assets
#       artifacts: true
#   variables:
#     GIT_STRATEGY: none
#     BUCKET: "releases.parity.io"
#     PREFIX: "cumulus/$CI_COMMIT_REF_NAME/benchmarks-assets"
#   script:
#     - echo "___Publishing benchmark results___"
#     - aws s3 sync ./artifacts/ s3://${BUCKET}/${PREFIX}/
#   after_script:
#     - aws s3 ls s3://${BUCKET}/${PREFIX}/ --recursive --human-readable --summarize

# publish-benchmarks-collectives-s3:
#   <<: *publish-benchmarks
#   variables:
#     GIT_STRATEGY: none
#     BUCKET: "releases.parity.io"
#     PREFIX: "cumulus/$CI_COMMIT_REF_NAME/benchmarks-collectives"
#   needs:
#     - job: benchmarks-collectives
#       artifacts: true

### Polkadot

build-push-image-polkadot-debug:
  stage: publish
  extends:
    - .kubernetes-env
    - .common-refs
    - .build-push-image
  needs:
    - job: build-linux-stable
      artifacts: true
  variables:
    DOCKERFILE: "docker/dockerfiles/polkadot/polkadot_injected_debug.Dockerfile"
    IMAGE_NAME: "docker.io/paritypr/polkadot-debug"

build-push-image-colander:
  stage: publish
  extends:
    - .kubernetes-env
    - .common-refs
    - .build-push-image
  needs:
    - job: build-test-collators
      artifacts: true
  variables:
    DOCKERFILE: "docker/dockerfiles/collator_injected.Dockerfile"
    IMAGE_NAME: "docker.io/paritypr/colander"

build-push-image-malus:
  stage: publish
  extends:
    - .kubernetes-env
    - .common-refs
    - .build-push-image
  needs:
    - job: build-malus
      artifacts: true
  variables:
    DOCKERFILE: "docker/dockerfiles/malus_injected.Dockerfile"
    IMAGE_NAME: "docker.io/paritypr/malus"

build-push-image-substrate-pr:
  stage: publish
  extends:
    - .kubernetes-env
    - .common-refs
    - .build-push-image
  needs:
    - job: build-linux-substrate
      artifacts: true
  variables:
    DOCKERFILE: "docker/dockerfiles/substrate_injected.Dockerfile"
    IMAGE_NAME: "docker.io/paritypr/substrate"
# old way

# .build-push-image-polkadot:
#   before_script:
#     # - test -s ./artifacts/VERSION || exit 1
#     # - test -s ./artifacts/EXTRATAG || exit 1
#     - VERSION="$(cat ./artifacts/VERSION)"
#     - EXTRATAG="$(cat ./artifacts/EXTRATAG)"
#     - echo "Polkadot version = ${VERSION} (EXTRATAG = ${EXTRATAG})"
#   script:
#     # - test "$DOCKER_USER" -a "$DOCKER_PASS" ||
#     #   ( echo "no docker credentials provided"; exit 1 )
#     - cd ./artifacts
#     - $BUILDAH_COMMAND build
#       --format=docker
#       --build-arg VCS_REF="${CI_COMMIT_SHA}"
#       --build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
#       --build-arg IMAGE_NAME="${IMAGE_NAME}"
#       --tag "$IMAGE_NAME:$VERSION"
#       --tag "$IMAGE_NAME:$EXTRATAG"
#       --file ${DOCKERFILE} .
#     # The job will success only on the protected branch
#     # - echo "$DOCKER_PASS" |
#     #   buildah login --username "$DOCKER_USER" --password-stdin docker.io
#     # - $BUILDAH_COMMAND info
#     # - $BUILDAH_COMMAND push --format=v2s2 "$IMAGE_NAME:$VERSION"
#     # - $BUILDAH_COMMAND push --format=v2s2 "$IMAGE_NAME:$EXTRATAG"
#   after_script:
#     - buildah logout --all

# publish-polkadot-debug-image:
#   stage: publish
#   image: ${BUILDAH_IMAGE}
#   extends:
#     - .kubernetes-env
#     - .build-push-image-polkadot
#   rules:
#     - if: $CI_PIPELINE_SOURCE == "web"
#     - if: $CI_PIPELINE_SOURCE == "schedule"
#     - if: $CI_COMMIT_REF_NAME == "master"
#     - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
#     - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1
#   variables:
#     GIT_STRATEGY: none
#     DOCKER_USER: ${PARITYPR_USER}
#     DOCKER_PASS: ${PARITYPR_PASS}
#     # docker/dockerfiles/polkadot/polkadot_injected_debug.Dockerfile
#     DOCKERFILE: polkadot_injected_debug.Dockerfile
#     IMAGE_NAME: docker.io/paritypr/polkadot-debug
#   needs:
#     - job: build-linux-stable
#       artifacts: true
#   after_script:
#     # pass artifacts to the zombienet-tests job
#     # https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#with-variable-inheritance
#     - echo "PARACHAINS_IMAGE_NAME=${IMAGE_NAME}" > ./artifacts/parachains.env
#     - echo "PARACHAINS_IMAGE_TAG=$(cat ./artifacts/EXTRATAG)" >> ./artifacts/parachains.env
#   artifacts:
#     reports:
#       # this artifact is used in zombienet-tests job
#       dotenv: ./artifacts/parachains.env
#     expire_in: 1 days

# publish-test-collators-image:
#   # service image for zombienet
#   stage: publish
#   extends:
#     - .kubernetes-env
#     - .build-push-image-polkadot
#     - .zombienet-refs
#   variables:
#     CI_IMAGE: ${BUILDAH_IMAGE}
#     GIT_STRATEGY: none
#     DOCKER_USER: ${PARITYPR_USER}
#     DOCKER_PASS: ${PARITYPR_PASS}
#     # docker/dockerfiles/collator_injected.Dockerfile
#     DOCKERFILE: collator_injected.Dockerfile
#     IMAGE_NAME: docker.io/paritypr/colander
#   needs:
#     - job: build-test-collators
#       artifacts: true
#   after_script:
#     - buildah logout --all
#     # pass artifacts to the zombienet-tests job
#     - echo "COLLATOR_IMAGE_NAME=${IMAGE_NAME}" > ./artifacts/collator.env
#     - echo "COLLATOR_IMAGE_TAG=$(cat ./artifacts/EXTRATAG)" >> ./artifacts/collator.env
#   artifacts:
#     reports:
#       # this artifact is used in zombienet-tests job
#       dotenv: ./artifacts/collator.env

# publish-malus-image:
#   # service image for Simnet
#   stage: publish
#   extends:
#     - .kubernetes-env
#     - .build-push-image-polkadot
#     - .zombienet-refs
#   variables:
#     CI_IMAGE: ${BUILDAH_IMAGE}
#     GIT_STRATEGY: none
#     DOCKER_USER: ${PARITYPR_USER}
#     DOCKER_PASS: ${PARITYPR_PASS}
#     # docker/dockerfiles/malus_injected.Dockerfile
#     DOCKERFILE: malus_injected.Dockerfile
#     IMAGE_NAME: docker.io/paritypr/malus
#   needs:
#     - job: build-malus
#       artifacts: true
#   after_script:
#     - buildah logout "$IMAGE_NAME"
#     # pass artifacts to the zombienet-tests job
#     - echo "MALUS_IMAGE_NAME=${IMAGE_NAME}" > ./artifacts/malus.env
#     - echo "MALUS_IMAGE_TAG=$(cat ./artifacts/EXTRATAG)" >> ./artifacts/malus.env
#   artifacts:
#     reports:
#       # this artifact is used in zombienet-tests job
#       dotenv: ./artifacts/malus.env

# substrate

# publish-substrate-image-pr:
#   # service image for zombienet
#   stage: publish
#   extends:
#     - .kubernetes-env
#     - .build-push-image-polkadot
#     - .zombienet-refs
#   variables:
#     CI_IMAGE: ${BUILDAH_IMAGE}
#     GIT_STRATEGY: none
#     DOCKER_USER: ${PARITYPR_USER}
#     DOCKER_PASS: ${PARITYPR_PASS}
#     DOCKERFILE: substrate_injected.Dockerfile
#     IMAGE_NAME: docker.io/paritypr/substrate
#   needs:
#     - job: build-linux-substrate
#       artifacts: true
#   after_script:
#     - buildah logout "$IMAGE_NAME"