@@ -24,46 +24,41 @@ jobs:
2424 BUILD_DATE : today
2525 PLATFORMS : << parameters.platforms >>
2626 steps :
27+ - run :
28+ name : " Prepare workflow environment variables"
29+ command : |
30+ echo 'export BRANCH="$CIRCLE_BRANCH"' >> $BASH_ENV
31+ cat $BASH_ENV
32+ source $BASH_ENV
33+ echo "Workflow environment variables:"
34+ echo $BRANCH
2735 - run : uname -a
2836 - run : docker info
29- - run : |
30- echo "CIRCLE_WORKFLOW_ID = " $CIRCLE_WORKFLOW_ID
31- git clone https://github.com/seleniumhq-community/docker-seleniarm.git
32- cd docker-seleniarm
33- git checkout $CIRCLE_BRANCH
34- echo $PWD
35- - run : |
36- echo "Install QEMU binaries"
37- curl -L https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v6.2.0-2/xpack-qemu-arm-6.2.0-2-linux-$(uname -m | sed 's/x86_64/x64/' | sed 's/aarch64/arm64/').tar.gz -o xpack-qemu-arm-6.2.0-2-linux-$(uname -m | sed 's/x86_64/x64/' | sed 's/aarch64/arm64/').tar.gz \
38- && tar xvfz xpack-qemu-arm-6.2.0-2-linux-$(uname -m | sed 's/x86_64/x64/' | sed 's/aarch64/arm64/').tar.gz \
39- && echo "export PATH=$PWD/xpack-qemu-arm-6.2.0-2/bin:$PATH" > ~/.bashrc \
40- && source ~/.bashrc \
41- && qemu-system-aarch64 --version
42- - run : |
43- echo "Build Docker images"
44- cd docker-seleniarm
45- echo $PWD
46- export BRANCH=$CIRCLE_BRANCH
47- #export PLATFORMS=
48- NAME=${NAMESPACE} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} PLATFORMS=${PLATFORMS} make build_multi
49- - run : |
50- echo "Save Docker Images in Cache"
51- export VERSION=$CIRCLE_BRANCH
52- echo $NAMESPACE/base:$VERSION-$BUILD_DATE
53- echo $NAMESPACE/node-base:$VERSION-$BUILD_DATE
54- echo $NAMESPACE/hub:$VERSION-$BUILD_DATE
55- echo $NAMESPACE/node-chromium:$VERSION-$BUILD_DATE
56- echo $NAMESPACE/standalone-chromium:$VERSION-$BUILD_DATE
57- echo $NAMESPACE/node-firefox:$VERSION-$BUILD_DATE
58- echo $NAMESPACE/standalone-firefox:$VERSION-$BUILD_DATE
59- docker save -o multi-arch-images.tar \
60- $NAMESPACE/base:$VERSION-$BUILD_DATE \
61- $NAMESPACE/node-base:$VERSION-$BUILD_DATE \
62- $NAMESPACE/hub:$VERSION-$BUILD_DATE \
63- $NAMESPACE/node-chromium:$VERSION-$BUILD_DATE \
64- $NAMESPACE/standalone-chromium:$VERSION-$BUILD_DATE \
65- $NAMESPACE/node-firefox:$VERSION-$BUILD_DATE \
66- $NAMESPACE/standalone-firefox:$VERSION-$BUILD_DATE
37+ - checkout
38+ - run :
39+ name : " Build Docker images"
40+ command : |
41+ echo "Branch is $BRANCH"
42+ NAME=${NAMESPACE} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} PLATFORMS=${PLATFORMS} BUILD_ARGS=${BUILD_ARGS} make build_multi
43+ - run :
44+ name : " Save Docker Images in Cache"
45+ command : |
46+ export VERSION=$CIRCLE_BRANCH
47+ echo $NAMESPACE/base:$VERSION-$BUILD_DATE
48+ echo $NAMESPACE/node-base:$VERSION-$BUILD_DATE
49+ echo $NAMESPACE/hub:$VERSION-$BUILD_DATE
50+ echo $NAMESPACE/node-chromium:$VERSION-$BUILD_DATE
51+ echo $NAMESPACE/standalone-chromium:$VERSION-$BUILD_DATE
52+ echo $NAMESPACE/node-firefox:$VERSION-$BUILD_DATE
53+ echo $NAMESPACE/standalone-firefox:$VERSION-$BUILD_DATE
54+ docker save -o multi-arch-images.tar \
55+ $NAMESPACE/base:$VERSION-$BUILD_DATE \
56+ $NAMESPACE/node-base:$VERSION-$BUILD_DATE \
57+ $NAMESPACE/hub:$VERSION-$BUILD_DATE \
58+ $NAMESPACE/node-chromium:$VERSION-$BUILD_DATE \
59+ $NAMESPACE/standalone-chromium:$VERSION-$BUILD_DATE \
60+ $NAMESPACE/node-firefox:$VERSION-$BUILD_DATE \
61+ $NAMESPACE/standalone-firefox:$VERSION-$BUILD_DATE
6762 - save_cache :
6863 key : multi-arch-images-{{ .Branch }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}-<< parameters.platforms >>
6964 paths :
@@ -80,38 +75,102 @@ jobs:
8075 NAMESPACE : seleniarm
8176 BUILD_DATE : today
8277 steps :
78+ - checkout
8379 - restore_cache :
8480 keys :
8581 - multi-arch-images-{{ .Branch }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}-<< parameters.platforms >>
8682 - run : uname -a
8783 - run : docker info
88- - run : |
89- echo "CIRCLE_WORKFLOW_ID = " $CIRCLE_WORKFLOW_ID
90- echo "Load built images into Docker"
91- docker load -i multi-arch-images.tar
92- - run : |
93- git clone https://github.com/seleniumhq-community/docker-seleniarm.git
94- cd docker-seleniarm
95- git checkout $CIRCLE_BRANCH
96- echo $PWD
97- - run : |
98- echo "Use Python3 and pip3 instead of Python2.7"
99- cd docker-seleniarm
100- sed -i 's/pip /pip3 /g' tests/bootstrap.sh
101- sed -i 's/python /python3 /g' tests/bootstrap.sh
102- sed -i 's/-m pip3 /-m pip /g' tests/bootstrap.sh
84+ - run :
85+ name : " Load built images from cache into Docker"
86+ command : |
87+ echo "CIRCLE_WORKFLOW_ID = " $CIRCLE_WORKFLOW_ID
88+ docker load -i multi-arch-images.tar
89+ - run :
90+ name : " Use Python3 and pip3 instead of Python2.7"
91+ command : |
92+ echo "Use Python3 and pip3 instead of Python2.7"
93+ sed -i 's/pip /pip3 /g' tests/bootstrap.sh
94+ sed -i 's/python /python3 /g' tests/bootstrap.sh
95+ sed -i 's/-m pip3 /-m pip /g' tests/bootstrap.sh
10396 - run :
97+ name : " Test Docker images"
10498 no_output_timeout : 2m
10599 command : |
106- echo "Test Docker images"
107- cd docker-seleniarm
108- echo $PWD
109100 export USE_RANDOM_USER=false
110- #export BUILD_DATE=$(date '+%Y%m%d')
111101 export BRANCH=$CIRCLE_BRANCH
112- #export ARCH=`dpkg --print-architecture`
113102 USE_RANDOM_USER_ID=${USE_RANDOM_USER} NAMESPACE=${NAMESPACE} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} SKIP_BUILD=true make test_multi_arch
114103
104+ deploy-multi-arch :
105+ parameters :
106+ platforms :
107+ type : string
108+ build-args :
109+ type : string
110+ machine-type :
111+ type : executor
112+ executor : << parameters.machine-type >>
113+ environment :
114+ NAMESPACE : seleniarm
115+ PLATFORMS : << parameters.platforms >>
116+ BUILD_ARGS : << parameters.build-args >>
117+ DEPLOY_BRANCH : trunk
118+ GITHUB_USER : seleniumhq-community
119+ GITHUB_REPO : docker-seleniarm
120+ SELENIUM_VERSION : 4.1.3
121+ steps :
122+ - run :
123+ name : " Prepare workflow environment variables"
124+ command : |
125+ echo "Prepare workflow environment variables"
126+ echo 'export BRANCH="$SELENIUM_VERSION"' >> $BASH_ENV
127+ echo 'export GITHUB_REPO="$CIRCLE_PROJECT_REPONAME"' >> $BASH_ENV
128+ echo 'export GITHUB_USER="$CIRCLE_PROJECT_USERNAME"' >> $BASH_ENV
129+ echo 'export BUILD_DATE=$(date '+%Y%m%d')' >> $BASH_ENV
130+ echo 'export RELEASE_TAG="seleniarm-v`echo $BRANCH`-`echo $BUILD_DATE`"' >> $BASH_ENV
131+ cat $BASH_ENV
132+ source $BASH_ENV
133+ echo "Workflow environment variables:"
134+ echo BRANCH="$BRANCH"
135+ echo GITHUB_REPO="$GITHUB_REPO"
136+ echo GITHUB_USER="$GITHUB_USER"
137+ echo BUILD_DATE="$BUILD_DATE"
138+ echo RELEASE_TAG="$RELEASE_TAG"
139+ echo PLATFORMS="$PLATFORMS"
140+ echo BUILD_ARGS="$BUILD_ARGS"
141+ echo DEPLOY_BRANCH="$DEPLOY_BRANCH"
142+ - checkout
143+ - run : uname -a
144+ - run : docker info
145+ - run :
146+ name : " Check if branch is deployable (contains [deploy] in commit msg on $DEPLOY_BRANCH"
147+ command : |
148+ export CI_DEPLOY=`git log --format=oneline -n 1 | grep '\[deploy\]'` && echo "$CI_DEPLOY"
149+ if [ -z "$CI_DEPLOY" ] || [ "$CIRCLE_BRANCH" != "$DEPLOY_BRANCH" ]; then
150+ echo "Cancelling run. Pass [deploy] in commit message on $DEPLOY_BRANCH to deploy"
151+ circleci-agent step halt
152+ else
153+ echo "[deploy] is present in commit message to $DEPLOY_BRANCH. Running workflow to deploy container images"
154+ fi
155+ - run :
156+ name : " Build and Push Docker images"
157+ command : |
158+ echo "Login to Docker, and setup to use a buildx builder and push built multi-arch images"
159+ docker buildx use `docker buildx create`
160+ docker buildx ls
161+ docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
162+ NAME=${NAMESPACE} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} PLATFORMS=${PLATFORMS} BUILD_ARGS=${BUILD_ARGS} make build_multi
163+ - run :
164+ name : " Generate release notes"
165+ command : |
166+ export LATEST_TAG=$(git describe --tags --abbrev=0)
167+ sh generate_multi-arch-release_notes.sh $LATEST_TAG $CIRCLE_BRANCH $BRANCH $BUILD_DATE
168+ sudo apt-get update -y && sudo apt-get install python3-venv
169+ go install github.com/github-release/[email protected] 170+ cat release_notes.md
171+ export GITHUB_TOKEN=$(sh get-access-token.sh | tail -n 1)
172+ github-release release --tag $RELEASE_TAG --name $RELEASE_TAG --description "`cat release_notes.md`"
173+
115174workflows :
116175 build-and-test-multi-arch :
117176 jobs :
@@ -133,5 +192,19 @@ workflows:
133192 requires : [build-multi-arch-amd64]
134193 platforms : linux/amd64
135194 machine-type : ubuntu2004amd64
195+
196+ deploy-multi-arch :
197+ jobs :
198+ - deploy-multi-arch :
199+ name : deploy-multi-arch
200+ platforms : linux/arm64,linux/amd64,linux/arm/v7
201+ build-args : --push
202+ machine-type : ubuntu2004arm64
203+ filters :
204+ branches :
205+ only :
206+ - trunk
207+
208+
136209
137210
0 commit comments