name: Build and Push Docker Image on: push: branches: - dev jobs: build-and-push: runs-on: ubuntu-latest env: CGO_ENABLED: 1 steps: - name: Checkout codebase uses: actions/checkout@v3 with: fetch-depth: 0 - name: Pre Setup NodeJS uses: actions/setup-node@v4 with: node-version: '18.x' - name: For act to work run: npm -g install yarn - name: Setup NodeJS uses: actions/setup-node@v4 with: node-version: '18.x' cache: 'yarn' cache-dependency-path: frontend - name: Build Frontend run: | mkdir build make assets - name: Build Yggdrasil Server uses: crazy-max/ghaction-xgo@v2 with: xgo_version: latest go_version: 1.24 dest: "${{ gitea.workspace }}/build" prefix: yggdrasil targets: windows/amd64,linux/amd64,linux/arm64,darwin/amd64,darwin/arm64 v: true x: false race: false ldflags: -s -w -buildid= tags: nomsgpack sqlite mysql trimpath: true - name: Create ZIP archive run: | cp -rv ./config_example.ini ./assets ./build/ || exit 1 pushd build || exit 1 ls -1 yggdrasil-* | while read LINE; do PREFIX="${LINE%.*}" SUFFIX="$(echo "$LINE" | grep -osE '\.\w+' || printf '')" cp -v "$LINE" "yggdrasil$SUFFIX" FILE="../$PREFIX.zip" zip -9rv "$FILE" "yggdrasil$SUFFIX" *.ini assets DGST="$FILE.dgst" openssl dgst -md5 "$FILE" | sed 's/([^)]*)//g' >>"$DGST" openssl dgst -sha1 "$FILE" | sed 's/([^)]*)//g' >>"$DGST" openssl dgst -sha256 "$FILE" | sed 's/([^)]*)//g' >>"$DGST" openssl dgst -sha512 "$FILE" | sed 's/([^)]*)//g' >>"$DGST" done popd || exit 1 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: docker.sunxinao.cn username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push uses: docker/build-push-action@v3 with: context: . push: true platforms: linux/amd64,linux/arm64 tags: docker.sunxinao.cn/gardel/yggdrasil-go:latest