Skip to content

Commit

Permalink
add periodic workflow and include build artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
devincowan committed Apr 11, 2024
1 parent 11a2bbe commit 7babf44
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 46 deletions.
31 changes: 28 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:
name: Setup, Build
runs-on: ubuntu-latest
continue-on-error: true
if : ${{ needs.detect-changes.outputs.image_variants != '[]' }}
strategy:
max-parallel: 6
# select a core set of images to build
Expand All @@ -33,7 +34,31 @@ jobs:
- name: Checkout
uses: actions/checkout@v2

# Build the Docker image
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build
run: |
docker build -f ${{ matrix.IMAGE_VARIANT }} .
uses: docker/build-push-action@v5
with:
context: .
file: ${{ matrix.IMAGE_VARIANT }}
tags: quota-microservices
push: false
load: true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Extract built package
uses: shrink/actions-docker-extract@v3
id: extract
with:
image: quota-microservices
path: /output/.
destination: output

# Archive the built package
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: compiled-artifacts
path: output
59 changes: 59 additions & 0 deletions .github/workflows/periodic_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Periodically Build

on:
schedule:
- cron: '0 0 * * 0' # At 00:00 every Sunday

workflow_dispatch:

jobs:
setup-build:
name: Setup, Build
runs-on: ubuntu-latest
continue-on-error: true
strategy:
max-parallel: 6
# select a core set of images to build
matrix:
IMAGE_VARIANT:
- Dockerfile
# - Dockerfile-deb # don't build deb package for now
steps:
- name: Checkout
uses: actions/checkout@v2
if: ${{ github.event.action }} != 'workflow_dispatch'

- name: Checkout, ref = ${{ github.ref_name }}
uses: actions/checkout@v2
if: ${{ github.event.action }} == 'workflow_dispatch'
with:
ref: ${{ github.ref_name }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build
uses: docker/build-push-action@v5
with:
context: .
file: ${{ matrix.IMAGE_VARIANT }}
tags: quota-microservices
push: false
load: true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Extract built package
uses: shrink/actions-docker-extract@v3
id: extract
with:
image: quota-microservices
path: /output/.
destination: output

# Archive the built package
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: compiled-artifacts
path: output
64 changes: 26 additions & 38 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,44 +1,32 @@
FROM centos:centos7.6.1810
RUN yum -y install epel-release &&\
yum makecache -y &&\
yum clean all &&\
FROM centos:centos7.6.1810 as builder
RUN yum makecache -y && \
yum clean all&& \
yum update -y
RUN yum install -y epel-release \
yum-utils \
emacs \
vim-enhanced \
expect \
wget \
git

RUN yum install -y epel-release \
pwgen \
jq

RUN rpm --import https://packages.irods.org/irods-signing-key.asc
RUN wget -qO - https://packages.irods.org/renci-irods.yum.repo | \
tee /etc/yum.repos.d/renci-irods.yum.repo
RUN yum makecache -y fast &&\
yum-utils \
vim-enhanced \
expect \
wget \
git
RUN yum install -y pwgen \
jq
RUN rpm --import https://packages.irods.org/irods-signing-key.asc && \
wget -qO - https://packages.irods.org/renci-irods.yum.repo | tee /etc/yum.repos.d/renci-irods.yum.repo
RUN yum makecache -y && \
yum group install -y "Development Tools" --setopt=group_package_types=mandatory,default,optional

RUN yum install -y sudo python3 centos-release-scl
RUN yum install -y python36-distro devtoolset-10-gcc devtoolset-10-gcc-c++
RUN yum install -y irods-externals-*
WORKDIR /opt
# https://github.com/irods/externals?tab=readme-ov-file#rhel--centos-7
RUN git clone https://github.com/irods/externals.git &&\
cd externals &&\
./install_prerequisites.py &&\
scl enable devtoolset-10 bash
WORKDIR /opt/externals
RUN make
RUN yum install -y --skip-broken irods-externals-*
RUN yum install -y openssl-devel libcurl-devel
RUN yum install -y irods-devel-4.2.11

RUN yum install -y irods-devel-4.2.11-1
COPY . /hydroshare-quota
# CMakeLists.txt must match iRODS version specified. This file is under version control
# cmake3.21 for iRODS 4.3.x
# cmake3.11.4-0 for iRODS 4.2.x
WORKDIR /hydroshare-quota/
RUN /opt/irods-externals/cmake3.11.4-0/bin/cmake . 2>&1 | tee cmake.stdout
RUN cat cmake.stdout
RUN make package 2>&1 | tee make.stdout
# Investigate for Rocky/RHEL 9
RUN mkdir /output && mv *.rpm /output/

WORKDIR /hydroshare-quota
RUN /opt/externals/cmake3.11.4-0/bin/cmake .
RUN make package

# save hydroshare-quota-microservices-centos7-x86_64.rpm
FROM alpine
COPY --from=builder /output /output
16 changes: 11 additions & 5 deletions Dockerfile-deb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM debian:bullseye
FROM debian:bullseye as builder
RUN apt-get update
RUN apt-get install -y libcurl4-openssl-dev libssl-dev build-essential vim
RUN apt-get install -y sudo git python3 python3-distro
Expand All @@ -17,8 +17,11 @@ RUN git clone https://github.com/irods/externals.git &&\
make

COPY . /hydroshare-quota
# vim CMakeLists.txt. # edit 4.3.1
RUN /opt/irods-externals/cmake3.21.4-0/bin/cmake .
# CMakeLists.txt must match iRODS version specified. This file is under version control.
# cmake3.21 for iRODS 4.3.x
# cmake3.11.4-0 for iRODS 4.2.x
WORKDIR /hydroshare-quota
RUN /opt/externals/cmake3.11.4-0/bin/cmake .
RUN mkdir -p DEBAIN && touch DEBIAN/control
SHELL ["/bin/bash", "-c"]
RUN echo $'Package: hydroshare-quota \n\
Expand All @@ -27,12 +30,15 @@ Maintainer: CUAHSI \n\
Architecture: all \n\
Description: hydroshare-quota' > DEBIAN/control

WORKDIR /hydroshare-quota
RUN dpkg-deb --build hydroshare-quota
RUN mkdir /output && mv hydroshare-quota.deb /output/

# for local development:
# docker cp hydroshare-quota.deb data.local.org:/root/
# cat <<EOF | docker exec --interactive data.local.org sh
# dpkg -i /root/hydroshare-quota.deb
# chmod -R 775 /etc/irods
# EOF
# EOF

FROM alpine
COPY --from=builder /output /output

0 comments on commit 7babf44

Please sign in to comment.