-
Notifications
You must be signed in to change notification settings - Fork 0
82 lines (82 loc) · 3.42 KB
/
cicd.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
81
82
env:
DOCKER_BUILDKIT: "1"
COMPOSE_DOCKER_CLI_BUILD: "1"
BUILDKIT_PROGRESS: "plain"
NO_SQUASH: ""
NO_SILENT: "1"
NONINTERACTIVE: "1"
FORCE_ONLINE: "1"
NBPARALLEL: "2"
RELEASABLE_REPOS: "^corpusops/"
RELEASABLE_BRANCHES: "^(refs/heads/)?(master|main|2.0|workflows)$"
COPS_URL: "https://github.com/corpusops/corpusops.bootstrap"
COPS_ROOT: "${{github.workspace}}/local/corpusops.bootstrap"
silent: "$COPS_ROOT/bin/cops_shell_common output_in_error silent_vv"
DOCKER_RELEASER: "${{ secrets.DOCKER_HUB_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
jobs:
r:
runs-on: ubuntu-24.04
env: {IMAGES: "${{matrix.IMAGES}}"}
steps:
- name: Set vars
run: |-
if ( echo "$GITHUB_REF" | egrep -q "${RELEASABLE_BRANCHES}" ) \
&& ( echo "$GITHUB_REPOSITORY" | egrep -q "${RELEASABLE_REPOS}" )
then releasable=true;else releasable=false;fi
echo "releasable=$releasable" >> $GITHUB_OUTPUT
echo "silent=$(echo $silent)" >> $GITHUB_OUTPUT
id: v
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Activate docker experimental
run: |-
sudo bash -exc "if [ ! -e /etc/docker/daemon.json ];then mkdir /etc/docker||true;echo '{}' > /etc/docker/daemon.json;fi;service docker stop;python -c \
\"d='/etc/docker/daemon.json';\
import json;c=json.load(open(d));c['experimental']=True;\
open(d, 'w').write(json.dumps(c))\"
systemctl restart docker"
- uses: actions/checkout@v3
- name: Cache multiple paths
uses: actions/cache@v3
with:
path: |
~/.cache
local
key: 6-${{ runner.os }}-${{ github.ref }}-${{ github.repository }}-venvstatics
- name: setup
run: set -e;i=$(whoami);sudo sh -c "chown -Rf $i .";
sudo sh -c 'sed -i -re 's/azure.//' /etc/apt/sources.list && apt-get update -qq' && ./main.sh refresh_corpusops;
sudo sh -c 'sed -i -re 's/azure.//' /etc/apt/sources.list && apt-get update -qq && apt-get install -qqy --force-yes parallel'
- name: refresh images
run: set -e;if (echo $IMAGES|grep -q zleftover);then
rm -f */*/*/Dockerfile&&${{steps.v.outputs.silent}} ./refresh_images.sh;
fi
- name: build & release
run: set -e;
if [ "x${{steps.v.outputs.releasable}}" = "xtrue" ];then export DO_RELEASE=1;fi;
./build.sh $IMAGES
# ${{steps.v.outputs.silent}} ./build.sh $IMAGES
strategy:
max-parallel: 5
fail-fast: false
matrix:
IMAGES:
- "library/wordpress/5 library/wordpress/5-apache library/wordpress/5-fpm library/wordpress/5-fpm-alpine library/wordpress/apache library/wordpress/cli library/wordpress/cli-1"
- "library/wordpress/cli-2 library/wordpress/fpm library/wordpress/fpm-alpine"
#- "corpusops/test/a corpusops/test/b corpusops/test/c"
# all images that werent explicitly told to be built would be built in the next batches
# we span them onto N jobs
- "zleftover:1/6"
- "zleftover:2/6"
- "zleftover:3/6"
- "zleftover:4/6"
- "zleftover:5/6"
- "zleftover:6/6"
on:
push:
workflow_dispatch:
schedule: [{cron: '1 0 4,6,8,18,20,22 * *'}]