|
|
|
@ -0,0 +1,151 @@ |
|
|
|
#################################################################################################### |
|
|
|
## NOTE: Environment variables not declared within the actual "script"s sections, are being read ## |
|
|
|
## from bitbucket's repository/workspace variables' configuration page or the Docker container. ## |
|
|
|
#################################################################################################### |
|
|
|
|
|
|
|
image: |
|
|
|
name: docker-registry.mysmartpbx.org:5000/kazoo_firewall_agent:1.0-rockylinux-9 |
|
|
|
username: $DOCKER_REGISTRY_USERNAME |
|
|
|
password: $DOCKER_REGISTRY_PASSWORD |
|
|
|
# Keeping this parameter just for historic and documentation reasons: |
|
|
|
# If "run-as-user" parameter is set to a given user ID (UID) and the given UID does not exist on |
|
|
|
# the configured Docker Image, some steps may work as expected but there won't be any output from |
|
|
|
# the pipelines steps available on the Pipelines UI. Not matter if the pipeline succeeds or not, |
|
|
|
# not output will be available. Once you remove (or comment) the parameter, steps continue working |
|
|
|
# as expected and they will also contain all the expected output from the steps' scripts. |
|
|
|
#run-as-user: 1000 # circleci UID from main docker image. |
|
|
|
|
|
|
|
|
|
|
|
definitions: |
|
|
|
caches: |
|
|
|
go-deps-cache: |
|
|
|
key: |
|
|
|
files: |
|
|
|
- go.mod |
|
|
|
path: $HOME/go |
|
|
|
steps: |
|
|
|
- step: &default |
|
|
|
name: "default" |
|
|
|
runs-on: |
|
|
|
- "self.hosted" |
|
|
|
- "linux" |
|
|
|
- step: &info-step |
|
|
|
name: "Informational step" |
|
|
|
clone: |
|
|
|
enabled: false |
|
|
|
image: "alpine" # Image size is only 5MB! Remember to override it in future steps if needed. |
|
|
|
- step: &build-rpm-packages |
|
|
|
<<: *default |
|
|
|
name: "Build RockyLinux9 RPM packages" |
|
|
|
caches: |
|
|
|
- go-deps-cache |
|
|
|
script: |
|
|
|
- | |
|
|
|
echo "Preparing source for packaging" |
|
|
|
mkdir -vp /tmp/packaging/rpmbuild/{SOURCES,BUILD,BUILDROOT,i386,x86_64,SPECS} |
|
|
|
mkdir -vp /tmp/packaging/${BITBUCKET_REPO_SLUG} |
|
|
|
cp -R ./* /tmp/packaging/${BITBUCKET_REPO_SLUG} |
|
|
|
cp ./kfa.spec /tmp/packaging/rpmbuild/SPECS/. |
|
|
|
cd /tmp/packaging |
|
|
|
|
|
|
|
echo " - removing files that should not be packaged in the source tar" |
|
|
|
rm -rf ${BITBUCKET_REPO_SLUG}/*.org |
|
|
|
rm -rf ${BITBUCKET_REPO_SLUG}/*.md |
|
|
|
rm -rf ${BITBUCKET_REPO_SLUG}/.git* |
|
|
|
|
|
|
|
echo " - creating the source tar" |
|
|
|
tar -zcvf ${BITBUCKET_REPO_SLUG}.tar.gz ${BITBUCKET_REPO_SLUG} |
|
|
|
cp ${BITBUCKET_REPO_SLUG}.tar.gz rpmbuild/SOURCES/. |
|
|
|
|
|
|
|
- | |
|
|
|
echo "Packaging" |
|
|
|
rpmbuild \ |
|
|
|
--define "_topdir %(pwd)/rpmbuild" \ |
|
|
|
--define "_rpmdir %{_topdir}" \ |
|
|
|
--define "_srcrpmdir %{_topdir}" \ |
|
|
|
--define "custom_version 1.0" \ |
|
|
|
-vv -bb rpmbuild/SPECS/kfa.spec |
|
|
|
mv /tmp/packaging/rpmbuild/x86_64 $BITBUCKET_CLONE_DIR/RPMS |
|
|
|
|
|
|
|
- | |
|
|
|
cd $BITBUCKET_CLONE_DIR |
|
|
|
echo "Pushing STEP artifacts to artifacts repository" |
|
|
|
ROS_VERSION=$(rpm -E %{rhel}) |
|
|
|
export ARTIFACTS_FILENAME=artifacts-${BITBUCKET_REPO_SLUG}-build${BITBUCKET_BUILD_NUMBER}-rocky${ROS_VERSION}-step${BITBUCKET_STEP_UUID}-${BITBUCKET_STEP_RUN_NUMBER}.tar.gz |
|
|
|
echo " - compressing artifacts into ${ARTIFACTS_FILENAME}" |
|
|
|
tar zcvf /tmp/${ARTIFACTS_FILENAME} RPMS/** |
|
|
|
export SKIP_METADATA=1 # Instruct upload_pkgs.sh script to skip triggering repositories metadata update. |
|
|
|
echo " - pushing compressed artifacts to artifacts server" |
|
|
|
/tmp/packager/upload_pkgs.sh "$YUM_REPOSITORY_CREDS" "/artifacts" /tmp/$ARTIFACTS_FILENAME |
|
|
|
artifacts: |
|
|
|
- RPMS/** |
|
|
|
|
|
|
|
|
|
|
|
pipelines: |
|
|
|
custom: # Manual builds. |
|
|
|
pull_artifact_push_packages: |
|
|
|
- variables: |
|
|
|
- name: ARTIFACT_NAME |
|
|
|
description: "Name of the artifact. HINT: can be seen in the output of the step that uploads it." |
|
|
|
- name: ROCKY_OS_VERSION |
|
|
|
description: "RockyLinux OS version these packages were created for. e.g.: 8. NOTE: Used for filtering files to upload and to know to which folder to upload the packages to." |
|
|
|
default: "9" |
|
|
|
allowed-values: |
|
|
|
- "8" |
|
|
|
- "9" |
|
|
|
- name: STABILITY |
|
|
|
description: "Package stability level." |
|
|
|
default: "staging" |
|
|
|
allowed-values: |
|
|
|
- "stable" |
|
|
|
- "staging" |
|
|
|
- "experimental" |
|
|
|
- step: |
|
|
|
name: "Pull artifacts & push packages to YUM repository" |
|
|
|
clone: |
|
|
|
enabled: false # Not need for the repository content for this step. |
|
|
|
script: |
|
|
|
- export ARTIFACTS_URL="http://${YUM_REPOSITORY_CREDS}@docker-registry.mysmartpbx.org/artifacts" |
|
|
|
- export RPMS_LISTING_PATTERN="RPMS/*\.el${ROCKY_OS_VERSION}\.*\.rpm" |
|
|
|
- env # Helpful for debugging purposes. |
|
|
|
- curl -v $ARTIFACTS_URL/$ARTIFACT_NAME -o $ARTIFACT_NAME |
|
|
|
- tar xvf $ARTIFACT_NAME |
|
|
|
- ls -lah $RPMS_LISTING_PATTERN |
|
|
|
- export UPLOAD_URI="/packages/upload/rockylinux/${ROCKY_OS_VERSION}/${STABILITY}/" |
|
|
|
- /tmp/packager/upload_pkgs.sh "$YUM_REPOSITORY_CREDS" "${UPLOAD_URI}" "${RPMS_LISTING_PATTERN}" |
|
|
|
|
|
|
|
branches: |
|
|
|
'master': |
|
|
|
- parallel: |
|
|
|
name: "Build Rocky 9 packages" |
|
|
|
steps: |
|
|
|
- step: # Informational step only. I find pipelines lack to appropiately tell what triggered the build. |
|
|
|
<<: *info-step |
|
|
|
script: |
|
|
|
- echo "Pipeline triggered by a change on ${BITBUCKET_BRANCH} branch" |
|
|
|
- step: |
|
|
|
<<: *build-rpm-packages |
|
|
|
|
|
|
|
|
|
|
|
pull-requests: |
|
|
|
'**': |
|
|
|
- parallel: |
|
|
|
name: "Build Rocky 9 packages" |
|
|
|
steps: |
|
|
|
- step: # Informational step only. I find pipelines lack to appropiately tell what triggered the build. |
|
|
|
<<: *info-step |
|
|
|
script: |
|
|
|
- echo "Pipeline triggered by a PR change" |
|
|
|
- step: |
|
|
|
<<: *build-rpm-packages |
|
|
|
tags: |
|
|
|
'**': |
|
|
|
- parallel: |
|
|
|
name: "Build Rocky 9 packages" |
|
|
|
steps: |
|
|
|
- step: # Informational step only. I find pipelines lack to appropiately tell what triggered the build. |
|
|
|
<<: *info-step |
|
|
|
script: |
|
|
|
- echo "Pipeline triggered by a brand new TAG" |
|
|
|
- step: |
|
|
|
<<: *build-rpm-packages |