137 lines
4.8 KiB
YAML
137 lines
4.8 KiB
YAML
name: Build and Push Docker Image
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- develop
|
|
paths-ignore:
|
|
- 'README.md'
|
|
# - '.github/**'
|
|
pull_request:
|
|
branches:
|
|
- develop
|
|
paths-ignore:
|
|
- 'README.md'
|
|
# - '.github/**'
|
|
workflow_dispatch:
|
|
branches:
|
|
- develop
|
|
paths-ignore:
|
|
- 'README.md'
|
|
# - '.github/**'
|
|
|
|
|
|
jobs:
|
|
|
|
testing:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
go-version:
|
|
- 1.24.x
|
|
os:
|
|
- ubuntu-latest
|
|
steps:
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
- uses: actions/checkout@v4
|
|
- run: |
|
|
go get -u .
|
|
go test ./.
|
|
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
needs: [ testing ]
|
|
steps:
|
|
- name: Extract Version
|
|
id: version_step
|
|
run: |
|
|
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
|
|
echo REPO_VERSION=${GITHUB_REF_NAME#v} >> $GITHUB_OUTPUT
|
|
echo RELEASE_DATE=$(date --rfc-3339=date) >> ${GITHUB_ENV}
|
|
echo COMMIT_SHA_SHORT=$(echo ${{ github.sha }} | cut -c1-10) >> $GITHUB_OUTPUT
|
|
- name: Dump GitHub context
|
|
env:
|
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
|
run: echo "$GITHUB_CONTEXT"
|
|
- name: Dump job context
|
|
env:
|
|
JOB_CONTEXT: ${{ toJson(job) }}
|
|
run: echo "$JOB_CONTEXT"
|
|
- name: Dump steps context
|
|
env:
|
|
STEPS_CONTEXT: ${{ toJson(steps) }}
|
|
run: echo "$STEPS_CONTEXT"
|
|
# echo "##[set-output name=version;]VERSION=${GITHUB_REF#$"refs/tags/v"}"
|
|
# echo "##[set-output name=version_tag;]$GITHUB_REPOSITORY:${GITHUB_REF#$"refs/tags/v"}"
|
|
# echo "##[set-output name=latest_tag;]$GITHUB_REPOSITORY:latest"
|
|
# - name: Print Version
|
|
# run: |
|
|
# echo ${{steps.version_step.outputs.version_tag}}
|
|
# echo ${{steps.version_step.outputs.latest_tag}}
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
- name: Set up Docker BuildX
|
|
uses: docker/setup-buildx-action@v3
|
|
with:
|
|
platforms: |
|
|
linux/amd64
|
|
- name: Login to DockerHub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: docker.savin.nyc
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
# - name: PrepareReg Names
|
|
# id: read-docker-image-identifiers
|
|
# run: |
|
|
# echo VERSION_TAG=$(echo ${{ steps.version_step.outputs.version_tag }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
|
# echo LASTEST_TAG=$(echo ${{ steps.version_step.outputs.latest_tag }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
|
- name: Build and Push
|
|
id: docker_build
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
# context: .
|
|
# file: ./Dockerfile
|
|
platforms: |
|
|
linux/amd64
|
|
push: true
|
|
tags: |
|
|
docker.savin.nyc/${{ github.event.repository.name }}:nightly
|
|
docker.savin.nyc/${{ github.event.repository.name }}:${{ steps.version_step.outputs.COMMIT_SHA_SHORT }}
|
|
# ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }}
|
|
# latest
|
|
# build-args: |
|
|
# docker.savin.nyc/${{ github.event.repository.name }}:latest
|
|
# build-args: |
|
|
# ${{steps.version_step.outputs.version}}
|
|
# docker.savin.nyc/${{ github.event.repository.name }}:${{ env.RELEASE_VERSION }}
|
|
# tags: |
|
|
# ${{env.VERSION_TAG}}
|
|
# ${{env.LASTEST_TAG}}
|
|
|
|
- name: Auto Execute a Workflow
|
|
run: |
|
|
curl -X 'POST' \
|
|
'http://10.10.11.26:8090/api/v1/repos/${{ github.repository_owner }}/${{ github.repository.name }}/actions/workflows/CD.yml/dispatches' \
|
|
-H 'Accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-H 'Authorization: Basic ${{ echo -n "secrets.SECRET_USERNAME:secrets.SECRET_PASSWORD" | base64 }}' \
|
|
-H 'Authorization: token ${{ secrets.GHA_TOKEN }}' \
|
|
-d '{"ref":"${{ github.ref }}","inputs":{"Version":"${{ steps.version_step.outputs.COMMIT_SHA_SHORT }}","Env":"${{ github.ref_name}}"}}'
|
|
shell: bash
|
|
# - name: Auto Deploy (Dev)
|
|
## if: ${{ contains(github.ref, 'develop') and env.AUTO_DEPLOY_DEV == 'true' }}
|
|
# id: auto-deploy-dev
|
|
# uses: https://git.savin.nyc/gh-actions/auto-exec-workflow@v1
|
|
# with:
|
|
# GITEA_TOKEN: ${{ secrets.GHA_TOKEN }}
|
|
# Version: ${{ steps.version.output.updated-version }}
|
|
|
|
- name: Output Summary
|
|
id: output-summary
|
|
shell: bash
|
|
run: |
|
|
echo "CI pipeline has been compiled for ${{ github.repository }} with a new version ${{ steps.vars.outputs.COMMIT_SHORT_SHA }}" >> $GITHUB_STEP_SUMMARY
|