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.
119 lines
4.0 KiB
119 lines
4.0 KiB
kind: pipeline
|
|
name: build
|
|
|
|
|
|
clone:
|
|
depth: 1
|
|
|
|
|
|
steps:
|
|
|
|
- name: build
|
|
image: docker.0k.io/0k-mirror-freezer
|
|
volumes:
|
|
- {name: docker, path: /var/run/docker.sock}
|
|
settings:
|
|
## This key/known host are for git mirrors repos, and parent
|
|
## odoo_base repository.
|
|
ssh_private_key: {from_secret: SSH_PRIVATE_KEY}
|
|
ssh_known_hosts: {from_secret: SSH_KNOWN_HOSTS}
|
|
## This docker json should contain both mirror access and official
|
|
## final build docker repository access.
|
|
docker_config_json: {from_secret: DOCKER_CONFIG_JSON}
|
|
commands:
|
|
- |
|
|
ip=$(curl -q myip.kal.fr 2>/dev/null)
|
|
name=$(dig -x "$ip" +short)
|
|
echo "===== BUILDING ON: ${DRONE_SYSTEM_HOSTNAME}"
|
|
echo "===== SLAVE: $name ($ip)"
|
|
- |
|
|
mkdir -p /root/.ssh
|
|
cat <<EOF > /root/.ssh/config
|
|
Host git.0k.io
|
|
User mirror
|
|
Port 10022
|
|
EOF
|
|
- DEBUG=1 freeze docker.0k.io git.0k.io:/var/git/mirror
|
|
- |
|
|
echo "====== PUSHING onbuild freezed (and patched) IMAGE: $(cat image)"
|
|
docker push "$(cat image)" ## this will push the new onbuild image
|
|
- |
|
|
image="docker.0k.io/mirror/odoo:${DRONE_COMMIT_BRANCH//\//_}"
|
|
release="docker.0k.io/mirror/odoo/$(cat release)"
|
|
echo "PUSHING IMAGE: $release"
|
|
docker push "$release"
|
|
echo "TAGGING AND PUSHING: $image"
|
|
docker tag "$release" "$image"
|
|
docker push "$image"
|
|
## Warning: without 'ssh://', the port doesn't see to be used and it tries to
|
|
## connect to git.0k.io:22 (ssh fingerprint allows to infer this).
|
|
- |
|
|
release=$(cat release)
|
|
git checkout -b "tmp"
|
|
git commit -am "chg: pkg: release freezing in $release"
|
|
git tag "release/candidate/$release"
|
|
git push "${DRONE_GIT_SSH_URL}" "release/candidate/$release"
|
|
- |
|
|
release=$(cat release)
|
|
echo "PUSHED DOCKER IMAGE: docker.0k.io/mirror/odoo/$release"
|
|
echo "PUSHED GIT TAG: release/candidate/$release"
|
|
- name: rocket
|
|
## mirror of ref: mike1pol/drone-rocket
|
|
image: docker.0k.io/drone-rocket
|
|
settings:
|
|
url: {from_secret: ROCKETCHAT_URL}
|
|
user_id: {from_secret: ROCKETCHAT_USER_ID}
|
|
token: {from_secret: ROCKETCHAT_TOKEN}
|
|
channel: '#odoo_releases'
|
|
commands:
|
|
- release=$(cat release)
|
|
- |
|
|
## DRONE will substitute bash variables BEFORE bash
|
|
export COMMIT_MESSAGE=$(echo -e ${DRONE_COMMIT_MESSAGE} | head -n 1)
|
|
- |
|
|
## DRONE will wrongly try to display the code of this step, actually
|
|
## running things in backticks to display " + command " on stdout.
|
|
## Mainly because it didn't quote backticks, but quoted backslash.
|
|
## Drone actually run this docker by injecting a /usr/drone/bin/init
|
|
## with code from these commands, but also an 'echo + command' line
|
|
## just before.
|
|
## This won't have any consequences in this step apart from annoying
|
|
## error messages in drone step output
|
|
export MESSAGE="{{#success build.status}}✅{{else}}❌{{/success}} Build {{build.status}} \
|
|
// *Summary:* $COMMIT_MESSAGE [ _${DRONE_COMMIT_AUTHOR_NAME}_ ]
|
|
build: [{{build.number}}]({{build.link}}) / branch: \`{{build.branch}}\` / \
|
|
commit: \`${DRONE_COMMIT_SHA:0:8}\`
|
|
{{#success build.status}}
|
|
*GIT TAG:* \`release/candidate/$release\` _(freezed version)_
|
|
*DOCKER IMAGES:*
|
|
- \`docker.0k.io/mirror/odoo/$release\` _(unique tag)_
|
|
- \`docker.0k.io/mirror/odoo:${DRONE_COMMIT_BRANCH//\//_}\` _(floating reference)_
|
|
Total Build time was $((DRONE_JOB_FINISHED - DRONE_JOB_STARTED))s
|
|
{{/success}}"
|
|
- rocket
|
|
when:
|
|
status:
|
|
- success
|
|
- failure
|
|
|
|
|
|
|
|
volumes:
|
|
- name: docker
|
|
host:
|
|
path: /var/run/docker.sock
|
|
|
|
## Need to configure secret 'dockerconfigjson' in drone secrets to
|
|
## hold a valid config.json file content. These secrets here allow
|
|
## to access 'docker.0k.io/*' images.
|
|
image_pull_secrets:
|
|
- dockerconfigjson
|
|
|
|
trigger:
|
|
branch:
|
|
- test/*
|
|
- rc/*
|
|
- build/*
|
|
|
|
node:
|
|
instance: builder
|