diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 431d30a..eeedd45 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,121 +14,121 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v2 - with: - node-version: '14' - - - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: "temurin" - server-id: openconext-releases - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - - - name: Determine the version - run: echo ::set-output name=version::$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec) - id: versioncheck - - - name: Exit when workflow_dispatch is triggered, and the version does not contain SNAPSHOT in it's name - run: | - echo "Only SNAPSHOT releases can be triggered with the workflow_dispatch" - exit 1 - if: github.event_name == 'workflow_dispatch' && ( !endsWith(steps.versioncheck.outputs.version, '-SNAPSHOT')) - - - name: Exit when a production build is triggered, and the github tag is not the same as the version in pom.xml - run: | - echo "Project version ${{ steps.versioncheck.outputs.version }} does not match git tag ${{ github.ref_name }}" - exit 1 - if: github.event_name != 'workflow_dispatch' && steps.versioncheck.outputs.version != github.ref_name - - - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Set up JDK 11 for snapshots - uses: actions/setup-java@v4 - with: - java-version: "11" - distribution: "temurin" - cache: "maven" - server-id: openconext-snapshots - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - if: ( endsWith(steps.versioncheck.outputs.version, '-SNAPSHOT')) - - - name: Set up JDK 11 for releases - uses: actions/setup-java@v4 - with: - java-version: "11" - distribution: "temurin" - cache: "maven" - server-id: openconext-releases - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - if: ${{!( endsWith(steps.versioncheck.outputs.version, '-SNAPSHOT')) }} - - - name: Deploy with Maven - run: mvn --batch-mode deploy -DskipTests - env: - MAVEN_USERNAME: ${{ secrets.BUILD_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.BUILD_PASSWORD }} - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for GUI Docker - id: meta_gui - uses: docker/metadata-action@v5 - with: - images: ghcr.io/openconext/openconext-teams-ng/teams-gui - flavor: | - latest=false - tags: | - type=ref,event=tag - type=semver,pattern={{version}},value=${{ steps.versioncheck.outputs.version }} - type=sha - - - name: Extract metadata (tags, labels) for Server Docker - id: meta_server - uses: docker/metadata-action@v5 - with: - images: ghcr.io/openconext/openconext-teams-ng/teams-server - flavor: | - latest=false - tags: | - type=ref,event=tag - type=semver,pattern={{version}},value=${{ steps.versioncheck.outputs.version }} - type=sha - - - name: Build and push the teams server image - uses: docker/build-push-action@v5 - with: - context: teams-server - file: teams-server/docker/Dockerfile - platforms: linux/amd64 - push: true - tags: ${{ steps.meta_server.outputs.tags }} - labels: ${{ steps.meta_server.outputs.labels }} - - - name: Build and push the teams gui image - uses: docker/build-push-action@v5 - with: - context: teams-gui - file: teams-gui/docker/Dockerfile - platforms: linux/amd64 - push: true - tags: ${{ steps.meta_gui.outputs.tags }} - labels: ${{ steps.meta_gui.outputs.labels }} + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "14" + + - uses: actions/setup-java@v4 + with: + java-version: 11 + distribution: "temurin" + server-id: openconext-releases + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + + - name: Determine the version + run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_OUTPUT + id: versioncheck + + - name: Exit when workflow_dispatch is triggered, and the version does not contain SNAPSHOT in it's name + run: | + echo "Only SNAPSHOT releases can be triggered with the workflow_dispatch" + exit 1 + if: github.event_name == 'workflow_dispatch' && ( !endsWith(steps.versioncheck.outputs.version, '-SNAPSHOT')) + + - name: Exit when a production build is triggered, and the github tag is not the same as the version in pom.xml + run: | + echo "Project version ${{ steps.versioncheck.outputs.version }} does not match git tag ${{ github.ref_name }}" + exit 1 + if: github.event_name != 'workflow_dispatch' && steps.versioncheck.outputs.version != github.ref_name + + - uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Set up JDK 11 for snapshots + uses: actions/setup-java@v4 + with: + java-version: "11" + distribution: "temurin" + cache: "maven" + server-id: openconext-snapshots + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + if: ( endsWith(steps.versioncheck.outputs.version, '-SNAPSHOT')) + + - name: Set up JDK 11 for releases + uses: actions/setup-java@v4 + with: + java-version: "11" + distribution: "temurin" + cache: "maven" + server-id: openconext-releases + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + if: ${{!( endsWith(steps.versioncheck.outputs.version, '-SNAPSHOT')) }} + + - name: Deploy with Maven + run: mvn --batch-mode deploy -DskipTests + env: + MAVEN_USERNAME: ${{ secrets.BUILD_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.BUILD_PASSWORD }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for GUI Docker + id: meta_gui + uses: docker/metadata-action@v5 + with: + images: ghcr.io/openconext/openconext-teams-ng/teams-gui + flavor: | + latest=false + tags: | + type=ref,event=tag + type=semver,pattern={{version}},value=${{ steps.versioncheck.outputs.version }} + type=sha + + - name: Extract metadata (tags, labels) for Server Docker + id: meta_server + uses: docker/metadata-action@v5 + with: + images: ghcr.io/openconext/openconext-teams-ng/teams-server + flavor: | + latest=false + tags: | + type=ref,event=tag + type=semver,pattern={{version}},value=${{ steps.versioncheck.outputs.version }} + type=sha + + - name: Build and push the teams server image + uses: docker/build-push-action@v5 + with: + context: teams-server + file: teams-server/docker/Dockerfile + platforms: linux/amd64 + push: true + tags: ${{ steps.meta_server.outputs.tags }} + labels: ${{ steps.meta_server.outputs.labels }} + + - name: Build and push the teams gui image + uses: docker/build-push-action@v5 + with: + context: teams-gui + file: teams-gui/docker/Dockerfile + platforms: linux/amd64 + push: true + tags: ${{ steps.meta_gui.outputs.tags }} + labels: ${{ steps.meta_gui.outputs.labels }}