df3466007c
Co-authored-by: Anton Maklakov <anton@espressif.com> Co-authored-by: Omar Chebib <omar.chebib@espressif.com>
130 lines
3.6 KiB
YAML
130 lines
3.6 KiB
YAML
stages:
|
|
- generate_version
|
|
- build
|
|
- deploy
|
|
|
|
generate_version:
|
|
stage: generate_version
|
|
image: alpine
|
|
tags:
|
|
- build
|
|
- amd64
|
|
variables:
|
|
GIT_SUBMODULE_STRATEGY: none
|
|
artifacts:
|
|
reports:
|
|
dotenv: version.env
|
|
script:
|
|
- VERSION=${CI_COMMIT_TAG:-""}
|
|
- VERSION=${VERSION//"-"/"_"} # replace dashes with underscores in the version
|
|
- VERSION=${VERSION:-g${CI_COMMIT_SHORT_SHA}}
|
|
- echo "VERSION=$VERSION" > version.env
|
|
|
|
- cat version.env
|
|
|
|
.build_linux_template:
|
|
stage: build
|
|
image: $CI_DOCKER_REGISTRY/qemu-build:7
|
|
tags:
|
|
- build
|
|
- amd64
|
|
variables:
|
|
# Don't use parallel:matrix here,
|
|
# becuase needs:project doesn't support it
|
|
# https://docs.gitlab.com/ee/ci/yaml/#needsproject
|
|
PLATFORM: x86_64-linux-gnu
|
|
TARGET: "" # to be set in the job
|
|
artifacts:
|
|
paths:
|
|
- dist/qemu-*.tar.xz
|
|
- dist/archive_name_*
|
|
expire_in: 1 week
|
|
script:
|
|
- ./.github/workflows/scripts/configure-native.sh
|
|
- ninja -C build install
|
|
|
|
- find ./install/qemu/share/qemu -maxdepth 1 -mindepth 1 -not -name 'esp*.bin' -exec rm -rfv {} \;
|
|
- DIST_DIR=${PWD}/dist
|
|
- mkdir -p ${DIST_DIR}
|
|
- cd ./install
|
|
- export ARCHIVE_NAME=qemu-${TARGET}-${VERSION}-${PLATFORM}.tar.xz
|
|
- tar cJvf ${DIST_DIR}/${ARCHIVE_NAME} qemu
|
|
- echo $ARCHIVE_NAME >${DIST_DIR}/archive_name_${TARGET}_${PLATFORM}
|
|
|
|
# these build jobs names are used in needs:project in idf/qemu-tests
|
|
# don't rename it without updating the needs:project in idf/qemu-tests
|
|
|
|
build_linux_xtensa_softmmu:
|
|
extends: .build_linux_template
|
|
variables:
|
|
TARGET: xtensa-softmmu
|
|
|
|
build_linux_riscv32_softmmu:
|
|
extends: .build_linux_template
|
|
variables:
|
|
TARGET: riscv32-softmmu
|
|
|
|
build_linux_riscv32_user:
|
|
extends: .build_linux_template
|
|
variables:
|
|
TARGET: riscv32-linux-user
|
|
|
|
upload_to_http:
|
|
image: espressif/scp
|
|
stage: deploy
|
|
tags:
|
|
- deploy
|
|
- shiny
|
|
when: manual
|
|
allow_failure: true
|
|
variables:
|
|
# don't use "GIT_STRATEGY: none", because we need cleaning old artifacts in 'dist/' that came from previous pipelines
|
|
SSH_KEY: "$HTTP_UPLOAD_KEY" # used inside 'espressif/scp'
|
|
script:
|
|
# List of archives in dist/
|
|
- DIST_FILE_LIST=$(find dist -name archive_name_\* -exec cat {} \+ | xargs -n1 | sort -u | xargs)
|
|
- cd dist
|
|
# Create a checksum file
|
|
- export RELEASE_CHECKSUM_FILE="qemu-${VERSION}-checksum.sha256"
|
|
- |
|
|
for n in $DIST_FILE_LIST; do
|
|
sz=$(stat -c%s "${n}");
|
|
printf "# %s: %s bytes\n" "${n}" "${sz}" >> ${RELEASE_CHECKSUM_FILE};
|
|
sha256sum -b "${n}" >> ${RELEASE_CHECKSUM_FILE};
|
|
done
|
|
- DIST_FILE_LIST="${DIST_FILE_LIST} ${RELEASE_CHECKSUM_FILE}"
|
|
- scp ${DIST_FILE_LIST} ${HTTP_UPLOAD_DIR}
|
|
# Show info
|
|
- /bin/ls -l ${DIST_FILE_LIST}
|
|
- sha256sum ${DIST_FILE_LIST}
|
|
- cat "${RELEASE_CHECKSUM_FILE}"
|
|
- echo -e "\nArchives were published there:\n\n$(for n in ${DIST_FILE_LIST}; do echo "${HTTP_PUBLIC_DIR}/${n}"; done)\n"
|
|
|
|
.update_idf_tools:
|
|
allow_failure: true
|
|
variables:
|
|
TOOL_NAME: "qemu"
|
|
TOOL_MEMBERS: "qemu-riscv32 qemu-xtensa"
|
|
TOOL_VERSION: ${VERSION}
|
|
trigger:
|
|
project: idf/idf-tools-updater
|
|
strategy: depend
|
|
|
|
internal_update_idf_tools:
|
|
extends: .update_idf_tools
|
|
stage: deploy
|
|
needs: [ generate_version, upload_to_http ]
|
|
when: manual
|
|
variables:
|
|
TOOL_SHA256_URL: ${HTTP_PUBLIC_DIR}/qemu-${VERSION}-checksum.sha256
|
|
|
|
github_update_idf_tools:
|
|
extends: .update_idf_tools
|
|
stage: deploy
|
|
needs: [ generate_version ]
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
when: manual
|
|
variables:
|
|
TOOL_SHA256_URL: ${GH_REPO_URL}/releases/download/${CI_COMMIT_TAG}/qemu-${VERSION}-checksum.sha256
|