You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
4.5 KiB

%define ccdir /var/lib/concourse/
Name: concourse
Version: 7.2.0
Release: 1%{?dist}
Source0: https://github.com/concourse/concourse/archive/v%{version}.tar.gz
Summary: Concourse is a container-based continuous thing-doer written in Go and Elm.
Group: System/Pipeline
License: Apache
URL: https://concourse-ci.org/
BuildRequires: golang
#Requires:
%description
Concourse is an open-source continuous thing-doer.
Built on the simple mechanics of resources, tasks, and jobs,
Concourse presents a general approach to automation that makes it great for CI/CD.
%package web
Source100: concourse-web.config
Summary: Concourse Web
Requires: concourse
BuildArch: noarch
%description web
%package worker
Source200: concourse-worker.config
Summary: Concourse Worker
Requires: concourse
%description worker
%package fly
Summary: A command line interface that runs a build in a container with ATC
%description fly
%prep
%setup -q -c %{name}-%{version}
mkdir -p src/github.com/concourse/
tar xvf %{SOURCE0}
mv concourse-%{version} src/github.com/concourse/concourse/
mkdir -p src/github.com/cloudfoundry/
cd src/github.com/cloudfoundry/
git clone https://github.com/cloudfoundry/guardian
%build
export GOPATH=`pwd`
export GO111MODULE=on
pushd src/github.com/concourse/concourse
%ifarch ppc64
export CGO_ENABLED=1
%endif
go mod download
go build -v -trimpath -gcflags=all="-N -l" -ldflags "-extldflags -s -w -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -buildid "%{version}" -X 'github.com/concourse.Version="%{version}"'" -o concourse ./cmd/concourse
pushd fly
go build -v -trimpath -gcflags=all="-N -l" -ldflags "-extldflags -s -w -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -buildid "%{version}" -X 'gibhub.com/concourse.Version="%{version}"'" -o fly
popd
### TODO: port elm/ghc to ppc64le
### currently build as noarch on x64 and use assets on other arches
%ifarch x86_64
#pushd web/assets/css/
npm install -g lessc
#$GOPATH/src/github.com/concourse/concourse/node_modules/lessc/node_modules/less/bin/lessc -x main.less > main.css;
yarnpkg build-less
yarnpkg build-elm
npm install -g webpack
npm install -g webpack-cli
#$GOPATH/src/github.com/concourse/concourse/node_modules/webpack-cli/bin/cli.js --mode production
yarnpkg build-js
#popd
%endif
popd
pushd src/github.com/cloudfoundry/guardian
go build -v -trimpath -gcflags=all="-N -l" -ldflags "-extldflags -s -w -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -buildid "%{version}" -X 'main.version="%{version}"'" -o gdn ./cmd/gdn
popd
%install
mkdir -p %{buildroot}%{ccdir}/bin/
cp -rv src/github.com/concourse/concourse/concourse %{buildroot}%{ccdir}/bin/
mkdir -p %{buildroot}%{_bindir}
cp -rv src/github.com/concourse/concourse/fly/fly %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_unitdir}
cat > %{buildroot}%{_unitdir}/concourse-web.service <<EOF
[Unit]
Description=Concourse CI Web Process
After=postgresql.service
[Service]
User=concourse
Restart=on-failure
EnvironmentFile=%{ccdir}etc/web/config
ExecStart=%{ccdir}bin/concourse web
[Install]
WantedBy=multi-user.target
EOF
cat > %{buildroot}%{_unitdir}/concourse-worker.service <<EOF
[Unit]
Description=Concourse CI Worker
After=network-online.target
[Service]
User=concourse
Restart=on-failure
EnvironmentFile=%{ccdir}etc/worker/config
ExecStart=%{ccdir}bin/concourse worker
[Install]
WantedBy=multi-user.target
EOF
mkdir -p %{buildroot}%{ccdir}/etc/web/
cp %{SOURCE100} %{buildroot}%{ccdir}/etc/web/config
mkdir -p %{buildroot}%{ccdir}/etc/worker/
cp %{SOURCE200} %{buildroot}%{ccdir}/etc/worker/config
mkdir -p %{buildroot}%{ccdir}/web/
%ifarch x86_64
cp -rv src/github.com/concourse/concourse/web/public %{buildroot}%{ccdir}/web/
%endif
mkdir -p %{buildroot}%{ccdir}/keys/
cp src/github.com/cloudfoundry/guardian/gdn %{buildroot}/%{_bindir}/
%pre
getent group concourse > /dev/null || groupadd -r concourse
getent passwd concourse > /dev/null || useradd -r -d %{ccdir} -g concourse -s /sbin/nologin -c "Concourse User" concourse
exit 0
%post web
%systemd_post concourse-web.service
%preun web
%systemd_preun concourse-web.service
%postun web
%systemd_postun concourse-web.service
%post worker
%systemd_post concourse-worker.service
%postun worker
%systemd_postun concourse-worker.service
%preun worker
%systemd_preun concourse-worker.service
%files
%{ccdir}/bin/concourse
%ifarch x86_64
%files web
%config(noreplace) %{ccdir}/etc/web/config
%{ccdir}/
%{ccdir}/web/public/
%{_unitdir}/concourse-web.service
%endif
%files worker
%config(noreplace) %{ccdir}/etc/worker/config
%{_unitdir}/concourse-worker.service
%{_bindir}/gdn
%files fly
%{_bindir}/fly
%changelog