name: "docker build release" on: workflow_dispatch: inputs: project: description: 'Project' required: true default: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - name: Set tag id: tag run: | if [[ -n $(cat ${{ github.event.inputs.project }}/Dockerfile | awk '{if($1~"ENV" && $2=="VERSION")print $3}') ]]; then VERSION=$(cat ${{ github.event.inputs.project }}/Dockerfile | awk '{if($1~"ENV" && $2=="VERSION")print $3}') echo "tag=$VERSION" >> $GITHUB_ENV else echo "tag=$(date +%Y)-$(date +%m)-$(date +%d)" >> $GITHUB_ENV fi - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push to docker hub uses: docker/build-push-action@v3.1.1 with: context: ${{ github.event.inputs.project }} platforms: linux/amd64,linux/arm64 push: true tags: | ${{ secrets.DOCKER_USERNAME }}/${{ github.event.inputs.project }}:latest ${{ secrets.DOCKER_USERNAME }}/${{ github.event.inputs.project }}:${{ env.tag }} - name: Sync README.md to Docker Hub uses: ms-jpq/sync-dockerhub-readme@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: ${{ secrets.DOCKER_USERNAME }}/${{ github.event.inputs.project }} readme: "${{ github.event.inputs.project }}/README.md" - name: Login harbor uses: docker/login-action@v2 with: registry: ${{ secrets.HARBOR_REGISTRY }} username: ${{ secrets.HARBOR_USERNAME }} password: ${{ secrets.HARBOR_PASSWORD }} - name: Build and push to harbor uses: docker/build-push-action@v3 with: context: ${{ github.event.inputs.project }} platforms: linux/amd64,linux/arm64 push: true tags: | ${{ secrets.HARBOR_REGISTRY }}/${{ secrets.HARBOR_PROJECT_STILLESHAN }}/${{ github.event.inputs.project }}:latest ${{ secrets.HARBOR_REGISTRY }}/${{ secrets.HARBOR_PROJECT_STILLESHAN }}/${{ github.event.inputs.project }}:${{ env.tag }}