From cfb22c1686e41d2ca8f71fa8ad6211277ec094bb Mon Sep 17 00:00:00 2001 From: Brooks Date: Sat, 18 May 2024 16:18:21 +0800 Subject: [PATCH] ci: github action --- .github/workflows/prod.yaml | 79 ++++++--------------------------- .github/workflows/staging.yaml | 81 +++++++--------------------------- 2 files changed, 28 insertions(+), 132 deletions(-) diff --git a/.github/workflows/prod.yaml b/.github/workflows/prod.yaml index 2b033e3..512d7dd 100644 --- a/.github/workflows/prod.yaml +++ b/.github/workflows/prod.yaml @@ -7,6 +7,8 @@ on: push: tags: - "v*" + # branches: + # - master jobs: test: @@ -42,13 +44,6 @@ jobs: with: fetch-depth: 0 - - name: Get the version - id: get_version - run: | - VERSION=$(git describe --tags --abbrev=0) - VERSION=${VERSION#v} - echo "VERSION=$VERSION" >> $GITHUB_ENV - - name: Setup Go uses: actions/setup-go@v4 with: @@ -63,14 +58,14 @@ jobs: run: make protoc - name: Build by Docker Compose - run: bash ./scripts/docker/build.sh ${{ env.VERSION }} + run: bash ./scripts/docker/build.sh -a amd64 - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: bingo + name: download-files path: | - _output/*tar.gz + _output/*.tar.gz publish: name: Deploy Production @@ -84,68 +79,20 @@ jobs: with: fetch-depth: 0 - - name: Get the version - id: get_version - run: | - VERSION=$(git describe --tags) - VERSION=${VERSION#v} - echo "VERSION=$VERSION" >> $GITHUB_ENV - - uses: actions/download-artifact@v4 id: download-files with: - name: bingo - path: ./ + name: download-files + path: ./_output - name: Display structure of downloaded files run: | ls -l - - name: Scp - uses: appleboy/scp-action@v0.1.7 - with: - host: ${{ secrets.REMOTE_HOST }} - username: ${{ secrets.REMOTE_USER }} - key: ${{ secrets.REMOTE_KEY }} - source: "./*.tar.gz" - target: "/tmp" - - - name: Run - uses: appleboy/ssh-action@v1.0.3 + - name: Setup ssh-agent + uses: webfactory/ssh-agent@v0.9.0 with: - host: ${{ secrets.REMOTE_HOST }} - username: ${{ secrets.REMOTE_USER }} - key: ${{ secrets.REMOTE_KEY }} - script: | - app_name=bingo - mkdir -p /opt/${app_name} - cd /opt/${app_name} || exit - - tar -xzvpf /tmp/${app_name}-docker.tar.gz -C ./ - if [ ! -f .env ]; then - cp .env.example .env - fi - if [ ! -f config/${app_name}-apiserver.yaml ]; then - cp config/${app_name}-apiserver.example.yaml config/${app_name}-apiserver.yaml - fi - if [ ! -f config/promtail.yaml ]; then - cp config/promtail.example.yaml config/promtail.yaml - fi - - # Update app version by .env - if [ -n "${{ env.VERSION }}" ]; then - sed -i "s/APP_VERSION=.*/APP_VERSION=${{ env.VERSION }}/g" .env - fi - - # Load and tag latest - loaded=$(docker load > $GITHUB_ENV - - name: Setup Go uses: actions/setup-go@v4 with: @@ -63,14 +59,14 @@ jobs: run: make protoc - name: Build by Docker Compose - run: bash ./scripts/docker/build.sh ${{ env.VERSION }} + run: bash ./scripts/docker/build.sh -a amd64 - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: bingo + name: download-files path: | - _output/*tar.gz + _output/*.tar.gz publish: name: Deploy Staging @@ -84,67 +80,20 @@ jobs: with: fetch-depth: 0 - - name: Get the version - id: get_version - run: | - VERSION=$(git describe --tags) - VERSION=${VERSION#v} - echo "VERSION=$VERSION" >> $GITHUB_ENV - - uses: actions/download-artifact@v4 + id: download-files with: - name: bingo - path: ./ + name: download-files + path: ./_output - name: Display structure of downloaded files run: | ls -l - - name: Scp - uses: appleboy/scp-action@v0.1.7 - with: - host: ${{ secrets.REMOTE_HOST }} - username: ${{ secrets.REMOTE_USER }} - key: ${{ secrets.REMOTE_KEY }} - source: "./*.tar.gz" - target: "/tmp" - - - name: Run - uses: appleboy/ssh-action@v1.0.3 + - name: Setup ssh-agent + uses: webfactory/ssh-agent@v0.9.0 with: - host: ${{ secrets.REMOTE_HOST }} - username: ${{ secrets.REMOTE_USER }} - key: ${{ secrets.REMOTE_KEY }} - script: | - app_name=bingo - mkdir -p /opt/${app_name} - cd /opt/${app_name} || exit - - tar -xzvpf /tmp/${app_name}-docker.tar.gz -C ./ - if [ ! -f .env ]; then - cp .env.example .env - fi - if [ ! -f config/${app_name}-apiserver.yaml ]; then - cp config/${app_name}-apiserver.example.yaml config/${app_name}-apiserver.yaml - fi - if [ ! -f config/promtail.yaml ]; then - cp config/promtail.example.yaml config/promtail.yaml - fi - - # Update app version by .env - if [ -n "${{ env.VERSION }}" ]; then - sed -i "s/APP_VERSION=.*/APP_VERSION=${{ env.VERSION }}/g" .env - fi - - # Load and tag latest - loaded=$(docker load