ci: fix to docker deployment #2
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy docker production | |
'on': | |
push: | |
tags: | |
- '*' | |
- '!*-*' | |
workflow_dispatch: {} | |
jobs: | |
job: | |
name: Deploy docker production | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Get version from tag | |
run: | | |
set -x | |
echo "BUILD_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT | |
id: version | |
- name: Docker login | |
run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login --username darkwind8 --password-stdin | |
- name: Install Darklab ssh key | |
run: | | |
mkdir ~/.ssh | true | |
echo "${{ secrets.SSH_KEY_BASE64 }}" | base64 --decode > ~/.ssh/id_rsa | |
echo "Host darkbot" > ~/.ssh/config | |
echo " HostName 37.27.207.42" >> ~/.ssh/config | |
echo " User root" >> ~/.ssh/config | |
echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config | |
echo " IdentitiesOnly yes" >> ~/.ssh/config | |
chmod 700 ~/.ssh | |
chmod 600 ~/.ssh/* | |
ssh-keyscan -H 37.27.207.42 >> ~/.ssh/known_hosts | true | |
ssh-keyscan -H darkbot >> ~/.ssh/known_hosts | true | |
- name: Build image darkwind8/darkbot | |
run: | | |
set -ex | |
export tag_version=${{ steps.version.outputs.BUILD_VERSION }} | |
DOCKER_HOST=ssh://root@darkbot docker build --build-arg "BUILD_VERSION=$tag_version" --tag darkwind8/darkbot:${tag_version}-arm64 . | |
DOCKER_HOST=unix:///var/run/docker.sock docker build --build-arg "BUILD_VERSION=$tag_version" --tag darkwind8/darkbot:${tag_version}-amd64 . | |
DOCKER_HOST=ssh://root@darkbot docker push darkwind8/darkbot:${tag_version}-arm64 | |
sleep 5 | |
DOCKER_HOST=unix:///var/run/docker.sock docker push darkwind8/darkbot:${tag_version}-amd64 | |
sleep 5 | |
docker manifest create darkwind8/darkbot:${tag_version} --amend darkwind8/darkbot:${tag_version}-arm64 --amend darkwind8/darkbot:${tag_version}-amd64 | |
docker manifest push darkwind8/darkbot:${tag_version} | |
docker manifest create darkwind8/darkbot:production --amend darkwind8/darkbot:${tag_version}-arm64 --amend darkwind8/darkbot:${tag_version}-amd64 | |
docker manifest push darkwind8/darkbot:production | |
- name: Switch service image darkwind8/darkbot for swarm to new one | |
run: | | |
set -ex | |
docker pull darkwind8/darkbot:production | |
sleep 5 | |
docker service update --image darkwind8/darkbot:production production-darkbot-app | |
env: | |
DOCKER_HOST: ssh://root@darkbot |