Skip to content

Commit

Permalink
v1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamie Curnow committed Feb 22, 2021
0 parents commit e107918
Show file tree
Hide file tree
Showing 7 changed files with 273 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.idea
._*
.DS_Store
RPMS
SRPMS
DEPS
BUILD*
SOURCES
53 changes: 53 additions & 0 deletions Jenkinsfile.centos7
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
@Library('jc21') _

pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
disableConcurrentBuilds()
}
agent {
label 'rpm'
}
stages {
stage('Prepare') {
steps {
sh 'docker pull ${DOCKER_CI_TOOLS}'
}
}
stage('Build') {
steps {
ansiColor('xterm') {
sh './build 7 golang'
}
}
}
stage('Sign') {
steps {
ansiColor('xterm') {
rpmSign()
}
}
}
stage('Publish') {
steps {
dir(path: 'RPMS') {
archiveArtifacts(artifacts: '**/*/*.rpm', caseSensitive: true, onlyIfSuccessful: true)
}
dir(path: 'SRPMS') {
archiveArtifacts(artifacts: '**/*.src.rpm', caseSensitive: true, onlyIfSuccessful: true, allowEmptyArchive: true)
}
rpmGithubRelease('centos7')
}
}
}
post {
success {
juxtapose event: 'success'
sh 'figlet "SUCCESS"'
}
failure {
juxtapose event: 'failure'
sh 'figlet "FAILURE"'
}
}
}
53 changes: 53 additions & 0 deletions Jenkinsfile.centos8
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
@Library('jc21') _

pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
disableConcurrentBuilds()
}
agent {
label 'rpm'
}
stages {
stage('Prepare') {
steps {
sh 'docker pull ${DOCKER_CI_TOOLS}'
}
}
stage('Build') {
steps {
ansiColor('xterm') {
sh './build 8 golang'
}
}
}
stage('Sign') {
steps {
ansiColor('xterm') {
rpmSign()
}
}
}
stage('Publish') {
steps {
dir(path: 'RPMS') {
archiveArtifacts(artifacts: '**/*/*.rpm', caseSensitive: true, onlyIfSuccessful: true)
}
dir(path: 'SRPMS') {
archiveArtifacts(artifacts: '**/*.src.rpm', caseSensitive: true, onlyIfSuccessful: true, allowEmptyArchive: true)
}
rpmGithubRelease('centos8')
}
}
}
post {
success {
juxtapose event: 'success'
sh 'figlet "SUCCESS"'
}
failure {
juxtapose event: 'failure'
sh 'figlet "FAILURE"'
}
}
}
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# [redis-renamer](https://github.com/jc21/redis-renamer)

Builds for Centos 7/8 hosted on [yum.jc21.com](https://yum.jc21.com)

33 changes: 33 additions & 0 deletions SPECS/redis-renamer.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
%define debug_package %{nil}

%global gh_user jc21

Name: redis-renamer
Version: 1.0.0
Release: 1%{?dist}
Summary: Takes the keys from one Redis server/db and transfer them to another server/db
Group: Applications/System
License: MIT
URL: https://github.com/%{gh_user}/%{name}
Source: https://github.com/%{gh_user}/%{name}/archive/v%{version}.tar.gz
BuildRequires: git golang

%description
Redis Renamer will simply rename the matching keys with a given prefix.

%prep
%setup -qn %{name}-%{version}

%build
go build -v -ldflags="-X main.version=%{version}" -o bin/%{name} cmd/%{name}/main.go

%install
install -Dm0755 bin/%{name} %{buildroot}%{_bindir}/%{name}

%files
%{_bindir}/%{name}

%changelog
* Tue Feb 23 2021 Jamie Curnow <[email protected]> 1.0.0-1
- https://github.com/jc21/redis-renamer/releases/tag/v1.0.0

115 changes: 115 additions & 0 deletions build
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
#!/bin/bash

##################################################
#
# ./build CENTOS_VERSION [DOCKER_TAG] [SPEC_FILE]
#
# If no docker tag, `latest` is used
# If no Spec file (without .spec), all spec files
# found will be built.
#
# ie:
# ./build 7 golang php-pecl-memcache_php72_php73
#
##################################################

CWD=$(pwd)
CYAN='\E[1;36m'
RED='\E[1;31m'
YELLOW='\E[1;33m'
GREEN='\E[1;32m'
BLUE='\E[1;34m'
RESET='\E[0m'

CENTOS_VERSION=$1
if [ "$CENTOS_VERSION" == "" ]; then
echo -e "${RED}ERROR: You must specify a Centos version to build for, either 7 or 8"
echo -e "ie: ./build 7${RESET}"
exit 1
fi

DOCKER_TAG=$2
if [ "$DOCKER_TAG" == "" ]; then
DOCKER_TAG=latest
fi

SPECIFIC_SPEC_FILE=$3

# Loop over all Specs in the SPECS folder
for SPECFILE in SPECS/*.spec; do
PACKAGE=${SPECFILE#"SPECS/"}
PACKAGE=${PACKAGE%".spec"}

if [ "${SPECIFIC_SPEC_FILE}" == "" ] || [ "${SPECIFIC_SPEC_FILE}" == "${PACKAGE}" ]; then
echo -e "${BLUE}${GREEN}Building ${CYAN}${PACKAGE} ${GREEN}for Centos ${CENTOS_VERSION}${RESET}"

# Make sure docker exists
if hash docker 2>/dev/null; then
# Generate a Docker image based on env vars and centos version, for use both manually and in CI
eval "DOCKER_IMAGE=\$\{DOCKER_RPMBUILD_EL${CENTOS_VERSION}:-jc21/rpmbuild-centos${CENTOS_VERSION}\}"
eval "DOCKER_IMAGE=${DOCKER_IMAGE}"

# Folder setup
echo -e "${BLUE}${YELLOW}Folder setup${RESET}"
rm -rf RPMS/* SRPMS/*
mkdir -p {RPMS,SRPMS,DEPS,SPECS,SOURCES}
chmod -R 777 {RPMS,SRPMS}

# Pull latest builder image
echo -e "${BLUE}${YELLOW}Pulling docker image: ${DOCKER_IMAGE}:${DOCKER_TAG}${RESET}"
docker pull "${DOCKER_IMAGE}:${DOCKER_TAG}"

# Use the build to change the ownership of folders
echo -e "${BLUE}${YELLOW}Temporarily changing ownership${RESET}"
docker run --rm \
-v "${CWD}:/home/rpmbuilder/rpmbuild" \
"${DOCKER_IMAGE}:${DOCKER_TAG}" \
sudo chown -R rpmbuilder:rpmbuilder /home/rpmbuilder/rpmbuild

# Do the build
echo -e "${BLUE}${YELLOW}Building ${PACKAGE}${RESET}"

DISABLE_MIRROR=
if [ -n "$NOMIRROR" ]; then
DISABLE_MIRROR=-m
fi

# If centos 8, we want -n option
NOBEST=
if [ "${CENTOS_VERSION}" == "8" ]; then
NOBEST=-n
fi

# Docker Run
RPMBUILD=/home/rpmbuilder/rpmbuild
docker run --rm \
--name "rpmbuild-${BUILD_TAG:-centos${CENTOS_VERSION}-${PACKAGE}}" \
-v "${CWD}/DEPS:${RPMBUILD}/DEPS" \
-v "${CWD}/RPMS:${RPMBUILD}/RPMS" \
-v "${CWD}/SRPMS:${RPMBUILD}/SRPMS" \
-v "${CWD}/SPECS:${RPMBUILD}/SPECS" \
-v "${CWD}/SOURCES:${RPMBUILD}/SOURCES" \
-e "GOPROXY=${GOPROXY}" \
"${DOCKER_IMAGE}:${DOCKER_TAG}" \
/bin/build-spec ${DISABLE_MIRROR} ${NOBEST} -o -r /home/rpmbuilder/rpmbuild/DEPS/*/*.rpm -- "/home/rpmbuilder/rpmbuild/SPECS/${PACKAGE}.spec"

BUILD_SUCCESS=$?

# Change ownership back
echo -e "${BLUE}${YELLOW}Reverting ownership${RESET}"
docker run --rm \
-v "${CWD}:/home/rpmbuilder/rpmbuild" \
"${DOCKER_IMAGE}:${DOCKER_TAG}" \
sudo chown -R "$(id -u):$(id -g)" /home/rpmbuilder/rpmbuild

# do we need to exit the loop?
if [ $BUILD_SUCCESS -ne 0 ]; then
echo -e "${BLUE}${RED}Exiting due to error${RESET}"
exit ${BUILD_SUCCESS}
fi
else
echo -e "${RED}ERROR: Docker command is not available${RESET}"
exit 1
fi
fi
done
7 changes: 7 additions & 0 deletions rpm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"publish": {
"PACKAGE": "redis-renamer",
"GH_USER": "jc21-rpm",
"VERSION": "1.0.0"
}
}

0 comments on commit e107918

Please sign in to comment.