123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- name: CI
- on:
- push:
- branches: [ '*' ]
- pull_request:
- release:
- types: [ created, edited ]
- workflow_dispatch:
- inputs:
- gva_version:
- required: true
- type: string
- jobs:
- init:
- if: github.repository_owner == 'flipped-aurora'
- runs-on: ubuntu-latest
- steps:
- - name: init
- run: |
- echo "flipped-aurora"
- frontend:
- if: github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'release'
- name: Frontend node ${{ matrix.node-version }}
- runs-on: ubuntu-latest
- strategy:
- matrix:
- node-version: [16.8.0]
- steps:
- - name: Check out branch
- uses: actions/checkout@v2
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v1
- with:
- node-version: ${{ matrix.node-version }}
- - name: Build test
- run: |
- npm install
- npm run build
- working-directory: ./web
- backend:
- if: github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'release'
- name: Backend go
- runs-on: ubuntu-latest
- strategy:
- matrix:
- go-version: [1.21]
- steps:
- - name: Set up Go ${{ matrix.go-version }}
- uses: actions/setup-go@v1
- with:
- go-version: ${{ matrix.go-version }}
- id: go
- - name: Check out branch
- uses: actions/checkout@v2
- - name: Download dependencies
- run: |
- go get -v -t -d ./...
- if [ -f Gopkg.toml ]; then
- curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
- dep ensure
- fi
- working-directory: ./server
- - name: Test and Build
- run: |
- go build -v -race
- working-directory: ./server
- devops-test:
- if: github.ref == 'refs/heads/test'
- name: devops-test
- needs:
- - init
- - backend
- - frontend
- runs-on: ubuntu-latest
- strategy:
- matrix:
- node-version: [16.8.0]
- go-version: [1.21]
- steps:
- - name: Check out branch
- uses: actions/checkout@v2
- - name: Sed Config
- env:
- PROD: ${{ secrets.PROD }}
- TESTING: ${{ secrets.TESTING }}
- shell: bash
- run: |
- git branch
- ls -l
- sed -i "s/${PROD}/${TESTING}/g" web/.env.production
- sed -i 's/${basePath}:${basePort}/${basePath}/g' web/src/view/systemTools/formCreate/index.vue
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2.1.2
- with:
- node-version: ${{ matrix.node-version }}
- - name: Build-Node
- run: |
- cd web/ && yarn install && yarn run build
- - name: Use Go ${{ matrix.go-version }}
- uses: actions/setup-go@v1
- with:
- go-version: ${{ matrix.go-version }}
- - name: Build-go
- run: |
- cd server/ && go mod tidy && CGO_ENABLED=0 go build && mkdir ../web/ser && mv server ../web/ser/ && cd ../web/ser/ && ls -s
- - name: restart
- env:
- KEY: ${{ secrets.KEY }}
- HOST: ${{ secrets.HOST }}
- USER: ${{ secrets.USER }}
- PROT: ${{ secrets.PROT }}
- MKDIRTEST: ${{ secrets.MKDIRTEST }}
- run: |
- mkdir -p ~/.ssh/ && echo "$KEY" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
- ssh-keyscan github.com >> ~/.ssh/known_hosts
- scp -P ${PROT} -o StrictHostKeyChecking=no -r web/dist/* ${USER}@${HOST}:${MKDIRTEST}dist/
- scp -P ${PROT} -o StrictHostKeyChecking=no -r web/ser/* ${USER}@${HOST}:${MKDIRTEST}
- ssh -p ${PROT} -o StrictHostKeyChecking=no ${USER}@${HOST} "cd ${MKDIRTEST}resource/ && rm -rf ${MKDIRTEST}resource/*"
- scp -P ${PROT} -o StrictHostKeyChecking=no -r server/resource/* ${USER}@${HOST}:${MKDIRTEST}resource/
- ssh -p ${PROT} -o StrictHostKeyChecking=no ${USER}@${HOST} "cd ${MKDIRTEST} && bash restart.sh > /dev/null 2>&1 &"
- release-pr:
- if: ${{ github.event_name == 'workflow_dispatch' && github.repository_owner == 'flipped-aurora'}}
- runs-on: ubuntu-latest
- steps:
- - name: Check out branch
- uses: actions/checkout@v2
- - name: Sed Config
- env:
- GVA_VERSION: ${{ inputs.gva_version }}
- shell: bash
- run: |
- sed -i 's/当前版本.*`$/当前版本:v'${GVA_VERSION##v}'`/' web/src/core/config.js
- sed -i 's/当前版本.*$/当前版本:v'${GVA_VERSION##v}'/' server/core/server.go
- sed -i 's/当前版本.*$/当前版本:v'${GVA_VERSION##v}'/' web/src/core/gin-vue-admin.js
- sed -i 's/"version": ".*",$/"version": "'${GVA_VERSION##v}'",/' web/package.json
- git config --local user.email "github-actions[bot]@users.noreply.github.com"
- git config --local user.name "github-actions[bot]"
- git add . && git commit -m "release: v${GVA_VERSION##v}"
- - name: Push
- uses: ad-m/github-push-action@master
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- branch: ${{ github.ref }}
- - uses: google-github-actions/release-please-action@v3
- with:
- command: release-pr
- release-type: simple
- changelog-path: docs/CHANGELOG.md
- release-as: ${{ inputs.gva_version }}
- package-name: gin-vue-admin
- changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"chore","section":"Miscellaneous","hidden":false}]'
- release-please:
- if: github.ref == 'refs/heads/main' || github.event_name == 'release'
- runs-on: ubuntu-latest
- needs:
- - init
- - backend
- - frontend
- outputs:
- release_created: ${{ steps.release_please.outputs.release_created }}
- tag_name: ${{ steps.release_please.outputs.tag_name }}
- steps:
- - uses: google-github-actions/release-please-action@v3
- id: release_please
- with:
- #token: ${{ secrets.GAV_TOKEN }}
- command: github-release
- #signoff: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
- release-type: simple
- changelog-path: docs/CHANGELOG.md
- #release-as: ${{ inputs.deploy_target }}
- package-name: gin-vue-admin
- #extra-files: |
- # x-release-please-version.json
- changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"chore","section":"Miscellaneous","hidden":false}]'
- devops-prod:
- if: needs.release-please.outputs.release_created || github.event_name == 'release'
- runs-on: ubuntu-latest
- needs:
- - init
- - release-please
- name: devops-prod
- strategy:
- matrix:
- node-version: ['16.x']
- go-version: ['1.21']
- steps:
- - uses: actions/checkout@v2
- - name: tag major and minor versions
- run: |
- echo " ${{ needs.release-please.outputs.tag_name }}"
- - name: Sed Config
- shell: bash
- run: |
- git branch
- ls -l
- sed -i 's/${basePath}:${basePort}/${basePath}/g' web/src/view/systemTools/formCreate/index.vue
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2.1.2
- with:
- node-version: ${{ matrix.node-version }}
- - name: Build-Node
- run: |
- cd web/ && yarn install && yarn run build
- - name: Use Go ${{ matrix.go-version }}
- uses: actions/setup-go@v1
- with:
- go-version: ${{ matrix.go-version }}
- - name: Build-go
- run: |
- cd server/ && go mod tidy && CGO_ENABLED=0 go build && mkdir ../web/ser && mv server ../web/ser/ && cd ../web/ser/ && ls -s
- - name: restart
- env:
- KEY: ${{ secrets.KEY }}
- HOST: ${{ secrets.HOST }}
- USER: ${{ secrets.USER }}
- PROT: ${{ secrets.PROT }}
- MKDIR: ${{ secrets.MKDIR }}
- run: |
- mkdir -p ~/.ssh/ && echo "$KEY" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
- ssh-keyscan github.com >> ~/.ssh/known_hosts
- scp -P ${PROT} -o StrictHostKeyChecking=no -r web/dist/* ${USER}@${HOST}:${MKDIR}dist/
- scp -P ${PROT} -o StrictHostKeyChecking=no -r web/ser/* ${USER}@${HOST}:${MKDIR}
- ssh -p ${PROT} -o StrictHostKeyChecking=no ${USER}@${HOST} "cd ${MKDIR}resource/ && rm -rf ${MKDIR}resource/*"
- scp -P ${PROT} -o StrictHostKeyChecking=no -r server/resource/* ${USER}@${HOST}:${MKDIR}resource/
- ssh -p ${PROT} -o StrictHostKeyChecking=no ${USER}@${HOST} "cd ${MKDIR} && bash restart.sh > /dev/null 2>&1 &"
- docker:
- name: docker
- if: github.ref == 'refs/heads/stop-stop-stop'
- runs-on: ubuntu-latest
- needs:
- - init
- - release-please
- steps:
- - name: Check out branch
- uses: actions/checkout@v2
- - name: Login to Aliyun Registry
- uses: docker/login-action@v1
- with:
- registry: ${{ secrets.ALIYUN_REGISTRY }}
- username: ${{ secrets.ALIYUN_DOCKERHUB_USER }}
- password: ${{ secrets.ALIYUN_DOCKERHUB_PASSWORD }}
- - name: Sed Config
- shell: bash
- run: |
- sed -i 56c"\ && yarn install && yarn build" Makefile
- make image TAGS_OPT="latest"
- sed -i 's#./entrypoint.sh"#./entrypoint.sh","actions"#g' deploy/docker/Dockerfile
- sed -i "s#COPY build/ /usr/share/nginx/html/#COPY . /opt/gva#g" deploy/docker/Dockerfile
- sed -i 16c"\ && cd /opt/gva/server/ && go mod tidy && cd /opt/gva/web/ && yarn" deploy/docker/Dockerfile
- sed -i "s#open: true#open: false#g" web/vite.config.js
- make images TAGS_OPT="latest"
- docker push registry.cn-hangzhou.aliyuncs.com/gva/gin-vue-admin:latest
- docker push registry.cn-hangzhou.aliyuncs.com/gva/web:latest
- docker push registry.cn-hangzhou.aliyuncs.com/gva/server:latest
- docker push registry.cn-hangzhou.aliyuncs.com/gva/all:latest
|