Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions .github/workflows/publish_latest_server_image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: "Publish server image(latest)"

on:
schedule:
- cron: '0 23 * * *'
workflow_dispatch:

jobs:
build_latest:
runs-on: ubuntu-latest
env:
REPOSITORY_URL: apache/hugegraph
BRANCH: master
IMAGE_URL: hugegraph/hugegraph:latest
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
OWNER: hugegraph
REPO: actions
LAST_COMMIT_HASH: ${{vars.LAST_COMMIT_HASH}}

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

- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Checkout latest
uses: actions/checkout@v3
with:
repository: ${{ env.REPOSITORY_URL }}
ref: ${{ env.BRANCH }}
Comment on lines +33 to +34
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the difference between ${{ env.BRANCH }} & $BRANCH? how to choose

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They do not have real difference, but in Github action docs, it said that:
"Runner environment variables are always interpolated on the runner machine. However, parts of a workflow are processed by GitHub Actions and are not sent to the runner. You cannot use environment variables in these parts of a workflow file. Instead, you can use contexts. For example, an if conditional, which determines whether a job or step is sent to the runner, is always processed by GitHub Actions. You can use a context in an if conditional statement to access the value of an variable."
It mease that we can not directly use $BRANCH in these parts like "if" or "with", and we must use env context to get them. Because they are processed by github action, but not runner machine. You can not use $BRANCH to get the value. In github action, there is not $BRANCH, but only the env context or other context.
But in "run statement", these vars are sent to runner machine instead of github action, where we can use $BRANCH directly to get the value.

BTW, in "if conditional statement", use ${{ }} seems to be the recommended way, I have fixed it.

fetch-depth: 2

- name: Get current commit-hash
run: |
current_commit_hash=$(git rev-parse HEAD)
Copy link
Copy Markdown
Collaborator

@imbajin imbajin Aug 26, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: seems current_commit VS last_commit is enough

rename to current_commit (remove hash suffix)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to keep the style same as the one in name "Get current commit-hash"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to keep the style same as the one in name "Get current commit-hash"

fine, u could update the title style or not

echo "CURRENT_COMMIT_HASH=$current_commit_hash" >> $GITHUB_ENV

- name: Check if an update is needed
run: |
need_update='false'
if [[ "$CURRENT_COMMIT_HASH" != "$LAST_COMMIT_HASH" ]]; then
need_update='true'
fi
echo "NEED_UPDATE=$need_update" >> $GITHUB_ENV
# TODO: replace `if` statements for exit if github provide support for exit gracefully,
# see https://github.com/actions/runner/issues/662 for more details

- name: Build X86 Image
if: ${{ env.NEED_UPDATE == 'true' }}
uses: docker/build-push-action@v4
with:
context: .
load: true
tags: ${{ env.IMAGE_URL }}
cache-from: type=gha
cache-to: type=gha,mode=max
Comment on lines +59 to +60
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: check if the docker image cache work well (seems doesn't take effect now?)

could fix it in next/another PR, just address it


- name: Test X86 Image
if: ${{ env.NEED_UPDATE == 'true' }}
run: |
docker images
docker run -itd --name=graph -p 18080:8080 $IMAGE_URL
sleep 20s
curl 0.0.0.0:18080 || exit
docker ps -a
sleep 20s
curl 0.0.0.0:18080 || exit
docker ps -a

- name: Build ARM & Push all
if: ${{ env.NEED_UPDATE == 'true' }}
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ env.IMAGE_URL }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Updata last commit-hash
if: ${{ env.NEED_UPDATE == 'true' }}
run: |
curl -L -X PATCH \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
https://api.github.com/repos/$OWNER/$REPO/actions/variables/LAST_COMMIT_HASH \
-d '{"name":"LAST_COMMIT_HASH","value":"'"$CURRENT_COMMIT_HASH"'"}'
69 changes: 69 additions & 0 deletions .github/workflows/publish_release_server_image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: "Publish server image(release)"
on:
workflow_dispatch:
inputs:
branch:
required: true
default: ''
description: 'The branch name should be like *-x.x.x, for example release-1.0.0'

jobs:
build_latest:
runs-on: ubuntu-latest
env:
REPOSITORY_URL: apache/hugegraph
BRANCH: ${{inputs.branch}}
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make all the env.xxx capital letters


steps:
- name: Set image_url
run: |
image_url=hugegraph/hugegraph:$(echo "${{ inputs.branch }}" | grep -oP '(\d+\.\d+\.\d+)')
echo $image_url && echo "image_url=$image_url" >> $GITHUB_ENV

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

- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Checkout latest
uses: actions/checkout@v3
with:
repository: ${{ env.REPOSITORY_URL }}
ref: ${{ env.BRANCH }}
fetch-depth: 2

- name: Build X86 Image
uses: docker/build-push-action@v4
with:
context: .
load: true
tags: ${{ env.image_url }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Test X86 Image
run: |
echo "$image_url"
docker images
docker run -itd --name=graph -p 18080:8080 $image_url
sleep 20s
curl 0.0.0.0:18080 || exit
docker ps -a
sleep 20s
curl 0.0.0.0:18080 || exit
docker ps -a

- name: Build ARM & Push all
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ env.image_url }}
cache-from: type=gha
cache-to: type=gha,mode=max