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.
136 lines
3.7 KiB
136 lines
3.7 KiB
3 months ago
|
name: Go Build Test
|
||
|
|
||
|
on:
|
||
|
push:
|
||
|
branches:
|
||
|
- main
|
||
|
pull_request:
|
||
|
branches:
|
||
|
- main
|
||
|
workflow_dispatch:
|
||
|
|
||
|
jobs:
|
||
|
go-build:
|
||
|
name: Test with go ${{ matrix.go_version }} on ${{ matrix.os }}
|
||
|
runs-on: ${{ matrix.os }}
|
||
|
permissions:
|
||
|
contents: write
|
||
|
pull-requests: write
|
||
|
strategy:
|
||
|
matrix:
|
||
|
os: [ubuntu-latest]
|
||
|
go_version: ["1.21.x", "1.22.x"]
|
||
|
|
||
|
steps:
|
||
|
- name: Checkout Server repository
|
||
|
uses: actions/checkout@v4
|
||
|
|
||
|
- name: Set up Go ${{ matrix.go_version }}
|
||
|
uses: actions/setup-go@v5
|
||
|
with:
|
||
|
go-version: ${{ matrix.go_version }}
|
||
|
|
||
|
- name: Get Server dependencies
|
||
|
run: |
|
||
|
go install github.com/magefile/mage@latest
|
||
|
go mod tidy
|
||
|
go mod download
|
||
|
|
||
|
- name: Set up infra services
|
||
|
uses: hoverkraft-tech/compose-action@v2.0.1
|
||
|
# Uncomment and set the correct path to your docker-compose file
|
||
|
with:
|
||
|
compose-file: "./docker-compose.yml"
|
||
|
|
||
|
# run: |
|
||
|
# sudo docker compose up -d
|
||
|
# sudo sleep 30 # Increased sleep time for better stability
|
||
|
# timeout-minutes: 60 # Increased timeout for Docker setup
|
||
|
|
||
|
|
||
|
# - name: Get Internal IP Address
|
||
|
# id: get-ip
|
||
|
# run: |
|
||
|
# IP=$(hostname -I | awk '{print $1}')
|
||
|
# echo "The IP Address is: $IP"
|
||
|
# echo "::set-output name=ip::$IP"
|
||
|
|
||
|
# - name: Update .env
|
||
|
# run: |
|
||
|
# sed -i 's|externalAddress:.*|externalAddress: "http://${{ steps.get-ip.outputs.ip }}:10005"|' config/minio.yml
|
||
|
# cat config/minio.yml
|
||
|
|
||
|
- name: Build and test Server Services
|
||
|
run: |
|
||
|
mage build
|
||
|
mage start
|
||
|
mage check
|
||
|
|
||
|
- name: Checkout Chat repository
|
||
|
uses: actions/checkout@v4
|
||
|
with:
|
||
|
repository: "openimsdk/chat"
|
||
|
path: "chat-repo"
|
||
|
|
||
|
- name: Get Chat dependencies
|
||
|
run: |
|
||
|
cd ${{ github.workspace }}/chat-repo
|
||
|
go mod tidy
|
||
|
go mod download
|
||
|
go install github.com/magefile/mage@latest
|
||
|
|
||
|
- name: Build and test Chat Services
|
||
|
run: |
|
||
|
cd ${{ github.workspace }}/chat-repo
|
||
|
mage build
|
||
|
mage start
|
||
|
mage check
|
||
|
|
||
|
dockerfile-test:
|
||
|
name: Build and Test Dockerfile
|
||
|
runs-on: ubuntu-latest
|
||
|
strategy:
|
||
|
matrix:
|
||
|
go_version: ["1.21"]
|
||
|
|
||
|
steps:
|
||
|
- name: Checkout Repository
|
||
|
uses: actions/checkout@v4
|
||
|
|
||
|
- name: Set up Go ${{ matrix.go_version }}
|
||
|
uses: actions/setup-go@v5
|
||
|
with:
|
||
|
go-version: ${{ matrix.go_version }}
|
||
|
|
||
|
- name: Get dependencies
|
||
|
run: |
|
||
|
go mod tidy
|
||
|
go mod download
|
||
|
go install github.com/magefile/mage@latest
|
||
|
|
||
|
- name: Build Docker Image
|
||
|
run: |
|
||
|
IMAGE_NAME="${{ github.event.repository.name }}-test"
|
||
|
CONTAINER_NAME="${{ github.event.repository.name }}-container"
|
||
|
docker build -t $IMAGE_NAME .
|
||
|
|
||
|
- name: Run Docker Container
|
||
|
run: |
|
||
|
IMAGE_NAME="${{ github.event.repository.name }}-test"
|
||
|
CONTAINER_NAME="${{ github.event.repository.name }}-container"
|
||
|
docker run --name $CONTAINER_NAME -d $IMAGE_NAME
|
||
|
docker ps -a
|
||
|
|
||
|
- name: Test Docker Container Logs
|
||
|
run: |
|
||
|
CONTAINER_NAME="${{ github.event.repository.name }}-container"
|
||
|
docker logs $CONTAINER_NAME
|
||
|
|
||
|
# - name: Cleanup Docker Container
|
||
|
# run: |
|
||
|
# CONTAINER_NAME="${{ github.event.repository.name }}-container"
|
||
|
# IMAGE_NAME="${{ github.event.repository.name }}-test"
|
||
|
# docker stop $CONTAINER_NAME
|
||
|
# docker rm $CONTAINER_NAME
|
||
|
# docker rmi $IMAGE_NAME
|