-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
81 lines (74 loc) · 2.79 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
variables:
specfile: redhawk-adminservice.spec
#Global before script, determine if this is a tag and handle rpm release field accordingly
before_script:
- safe_ref=$(echo ${CI_COMMIT_REF_NAME} | tr -d /| tr '[:upper:]' '[:lower:]')
- if [ -z "$CI_COMMIT_TAG" ]; then
rpm_release="0.$CI_PIPELINE_ID";
else
rpm_release="`rpm --query --queryformat "%{release}\n" --specfile ${specfile} | head -n 1 | awk -F"." "{print $1}"`";
fi
.package: &package
image: ${docker_registry}${docker_rpm_repository}docker:latest-rpm
stage: build
tags:
- docker
script:
- printf "FROM ${docker_registry}${rpmbuild_repository}rpmbuild:$dist-$arch-onbuild" > Dockerfile
- name=$(echo $CI_PROJECT_NAME| tr '[:upper:]' '[:lower:]')
- docker login ${docker_registry} -u ${docker_user} -p ${docker_password}
- docker image build --pull
--tag=$name:$safe_ref-$dist-$arch
--build-arg "project=$CI_PROJECT_NAME"
--build-arg "rpm_release=$rpm_release"
--build-arg "spec_file=$specfile"
--build-arg "arch=$arch" .
- id=$(docker container create $name:$safe_ref-$dist-$arch)
- docker container cp $id:/root/rpmbuild/RPMS/ output/
- docker container rm -f $id || true
- docker image rm -f $name:$safe_ref-$dist-$arch
artifacts:
paths:
- output/*/*.rpm
expire_in: 2 days
except:
- master
- /^(\d+\.)?(\d+)?(\.\d+)$/
package-el7:
variables:
dist: el7
arch: x86_64
<<: *package
deploy:
image: ${docker_registry}centos:7
stage: deploy
dependencies: []
before_script:
- echo "Deploying to $jenkins_url/job/$CI_PROJECT_NAMESPACE/job/$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME"
script:
- if [ -n "$jenkins_url" ]; then
curl --insecure -X POST $jenkins_url/job/$CI_PROJECT_NAMESPACE/job/$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME/buildWithParameters?pipeline_id=$CI_PIPELINE_ID --user $jenkins_user:$jenkins_api_token;
fi
except:
- master
- /^(\d+\.)?(\d+)?(\.\d+)$/
.s3: &s3
image: ${docker_registry}utils/s3cmd:el6-createrepo
stage: deploy
tags:
- s3
script:
- /usr/bin/s3cmd sync s3://$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/yum/$CI_COMMIT_REF_SLUG/$dist/$arch .
- mkdir -p $arch
- for file in `find output -name *.rpm`; do
cp $file $arch;
done
- repomanage --keep=2 --old $arch| xargs rm -f; createrepo --update $arch
- /usr/bin/s3cmd sync -F -v --delete-removed $arch s3://$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/yum/$CI_COMMIT_REF_SLUG/$dist/ && s3cmd setacl -v s3://$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/yum/$CI_COMMIT_REF_SLUG/$dist --acl-public --recursive || true
deploy-el7:
variables:
dist: el7
arch: x86_64
dependencies:
- package-el7
<<: *s3