name: Build and Deploy description: Build and deploy RPM packages inputs: PUBLICATOR: description: Publicator token required: true CI_DEPLOY: description: CI deploy token required: true runs: using: "composite" steps: - name: Checkout code run: | git clone ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git ${GITHUB_WORKSPACE} git checkout ${GITHUB_REF_NAME} export SPECFILE=$(find . -type f -name "*.spec") echo "SPECFILE=${SPECFILE}" > .env source .env echo "SPECFILE = ${SPECFILE}" - name: Debug Print environment variables run: | source .env env - name: Debug os version and check exists spec run: | cat /etc/*release* echo "check specfile" && [ -f ${SPECFILE} ] || exit 1 - name: Remove djam_personal repo run: | if grep -q "djam_personal" /etc/urpmi/urpmi.cfg; then sudo urpmi.removemedia djam_personal; fi - name: Update repo run: | sudo urpmi.update -fa - name: Download sources artifacts run: | abfyml=.abf.yml if [ -e "${abfyml}" ]; then echo "parsing file '${abfyml}'" sed -ne '/^[Ss]ources\:.*$/,$p' ${abfyml} | \ sed -rn '$G;s/^[\"'\''[:space:]]*([^[:space:]:\"'\'']+)[\"'\''[:space:]]*.*[\"'\''[:space:]]*([0-9a-fA-F]{40})[\"'\''[:space:]]*$/\1 \2/p' | \ while read -r file sha; do echo -n "found entry: file=${file} ... " if [ -e "${file}" ]; then if echo "${sha} ${file}" | sha1sum -c --status; then echo "sha1sum correct" else echo "sha1sum INCORRECT! skipping..." fi else echo -n "try to download... " if curl -L "https://file-store.rosalinux.ru/download/${sha}" -o "${file}"; then echo "ok" echo -n "check sum... " if echo "${sha} ${file}" | sha1sum -c --status; then echo "ok" else echo "sha1sum INCORRECT! skipping..." echo "remove file ${file}" rm -f "${file}" fi else echo "filed! skipping..." fi fi done fi - name: Linter run: | source .env rpmlint ${SPECFILE} - name: Install dependies run: | source .env sudo urpmi --buildrequires --auto ${SPECFILE} - name: Build rpm run: | source .env rpmbuild -ba ${SPECFILE} - name: DEBUG tokens env: CI_DEPLOY_SEC: ${{ secrets.CI_DEPLOY }} CI_DEPLOY: ${{ inputs.CI_DEPLOY }} PUBLICATOR: ${{ inputs.PUBLICATOR }} run: | echo "Deploying artifacts..." echo "********************************************************************" if [ -n "${CI_DEPLOY_SEC}" ]; then echo "CI_DEPLOY_SEC: ${CI_DEPLOY_SEC:0:3}***${CI_DEPLOY_SEC: -3}" else echo "CI_DEPLOY: не передан" fi if [ -n "${CI_DEPLOY}" ]; then echo "CI deploy token: ${CI_DEPLOY:0:3}***${CI_DEPLOY: -3}" else echo "CI deploy token: не передан" fi if [ -n "${PUBLICATOR}" ]; then echo "Publicator token: ${PUBLICATOR:0:3}***${PUBLICATOR: -3}" else echo "Publicator token: не передан" fi echo "********************************************************************" - name: Deploy in repos packages if: github.ref == 'refs/heads/rosa2016.1' env: CI_DEPLOY: ${{ secrets.CI_DEPLOY }} run: | cd /home/builder/rpmbuild/SRPMS/ for file in *.rpm; do curl --user ${GITHUB_REPOSITORY_OWNER}:${{ inputs.CI_DEPLOY }} \ --upload-file "$file" \ ${GITHUB_SERVER_URL}/api/packages/${GITHUB_REPOSITORY_OWNER}/generic/srpms/"$file" done for file in /home/builder/rpmbuild/RPMS/x86_64/*.rpm; do curl --user ${GITHUB_REPOSITORY_OWNER}:${{ inputs.CI_DEPLOY }} \ --upload-file "$file" \ ${GITHUB_SERVER_URL}/api/packages/${GITHUB_REPOSITORY_OWNER}/rpm/upload done - name: Deploy in buildkitie if: github.ref == 'refs/heads/rosa2016.1' env: PUBLICATOR: ${{ secrets.PUBLICATOR }} run: | echo "Deploying src artifacts..." for file in /home/builder/rpmbuild/SRPMS/*.rpm; do curl -X POST https://api.buildkite.com/v2/packages/organizations/r11-team/registries/r11-srpms/packages \ -H "Authorization: Bearer ${{ inputs.PUBLICATOR }}" \ -F "file=@$file" done echo "Deploying rpm artifacts..." for file in /home/builder/rpmbuild/RPMS/x86_64/*.rpm; do curl -X POST https://api.buildkite.com/v2/packages/organizations/r11-team/registries/r11-x86-64/packages \ -H "Authorization: Bearer ${{ inputs.PUBLICATOR }}" \ -F "file=@$file" done container: image: packages.buildkite.com/r11-team/r11/builder:latest