name: Docker Deploy on: workflow_dispatch: push: branches: - main # 监听main分支的push事件 - pms* # 监听v开头的分支push事件 tags: - "v*" #监听所有含v开头的push事件 jobs: build-and-deploy: runs-on: runner env: HOST_PORT_WEB: 8080 CTN_NAME_WEB: "ctn-pms-web" IMG_NAME_WEB: "${{ github.repository }}-web:${{ github.ref_name }}" REMOTE_IMG_NAME_WEB: "${{ vars.ALI_REGISTRY }}/${{ github.repository }}-web:${{ github.ref_name }}" HOST_PORT_SERVER: 8888 CTN_NAME_SERVER: "ctn-pms-server" IMG_NAME_SERVER: "${{ github.repository }}-server:${{ github.ref_name }}" REMOTE_IMG_NAME_SERVER: "${{ vars.ALI_REGISTRY }}/${{ github.repository }}-server:${{ github.ref_name }}" steps: - name: install nodejs&golang and set proxy run: | sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories apk add npm go docker npm config set registry https://npm.aliyun.com echo "-----============$REMOTE_IMG_NAME_SERVER=========--------" - name: Checkout Repo uses: http://${{vars.DOMAIN}}:5678/actions/checkout@v4 - name: Login to Alibaba Cloud Docker Registry uses: http://${{vars.DOMAIN}}:5678/docker/login-action@v3 with: registry: ${{ vars.ALI_REGISTRY }} username: ${{ secrets.ALI_USER }} password: ${{ secrets.ALI_PWD }} - name: Remove Container & Image run: | docker stop $CTN_NAME_WEB || true docker rm $CTN_NAME_WEB || true docker rmi $REMOTE_IMG_NAME_WEB || true docker stop $CTN_NAME_SERVER || true docker rm $CTN_NAME_SERVER || true docker rmi $REMOTE_IMG_NAME_SERVER || true - name: Build and Push [SERVER] Docker Image To Alibaba Cloud uses: http://${{vars.DOMAIN}}:5678/docker/build-push-action@v6 with: push: true context: ./server dockerfile: Dockerfile #tags: ${{ vars.ALI_REGISTRY }}/${{ github.repository }}:${{ github.ref_name }} tags: ${{env.REMOTE_IMG_NAME_SERVER}} #支持env变量 username: ${{ secrets.ALI_USER }} password: ${{ secrets.ALI_PWD }} - name: Run On Server run: | docker run -d --name $CTN_NAME_SERVER -p $HOST_PORT:8888 $REMOTE_IMG_NAME_SERVER - name: Build and Push [WEB] Docker Image To Alibaba Cloud uses: http://${{vars.DOMAIN}}:5678/docker/build-push-action@v6 with: push: true context: ./web dockerfile: Dockerfile #tags: ${{ vars.ALI_REGISTRY }}/${{ github.repository }}:${{ github.ref_name }} tags: ${{env.REMOTE_IMG_NAME_WEB}} #支持env变量 username: ${{ secrets.ALI_USER }} password: ${{ secrets.ALI_PWD }} - name: Run On WEB run: | docker run -d --name $CTN_NAME_WEB -p $HOST_PORT:8080 $REMOTE_IMG_NAME_WEB # - name: SSH Deploy # uses: easingthemes/ssh-deploy-action@v2.1.5 # env: # SSH_PRIVATE_KEY: ${{ vars.SSH_PRIVATE_KEY }} # ARGS: echo "deploying" # with: # source: . # destination: /app/demo # host: ${{ vars.HOST }} # port: 22 # username: ${{ vars.USERNAME }}