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' 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: | echo "URL: http://10.10.11.26:8090/api/v1/repos/${{ github.event.repository.owner.login }}/${{ github.event.repository.name }}/actions/workflows/CD.yml/dispatches" curl -X 'POST' \ 'http://10.10.11.26:8090/api/v1/repos/${{ github.event.repository.owner.login }}/${{ github.event.repository.name }}/actions/workflows/CD.yml/dispatches' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Basic ${{ secrets.AUTH_BASIC }}' \ -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 with: debug: true # - 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